问题描述
我拼命尝试使用两个不同的栅格来获取数据,然后用它运行回归。我将首先尝试呈现我想要(需要)做什么,然后呈现问题。
练习: 我正在尝试检测历史温度异常与 GDP 之间的关系。我已经在国家层面上做了,但由于我的结果并不令人满意,我正在通过使用夜光数据作为 GDP 的代理重新使用网格数据进行分析。 我对空间数据分析完全陌生,现在我正在努力寻找(可能)一个简单的解决方案。
数据:
-气候(下面的“威尔莫特”):https://climatedataguide.ucar.edu/climate-data/global-land-precipitation-and-temperature-willmott-matsuura-university-delaware
-夜灯:https://ngdc.noaa.gov/eog/dmsp/downloadV4composites.html
代码: 加载两个数据源并将气候数据块划分为单独的层(下面我以 1901 年 1 月为例,下一步是总结多年来的层)。
wilmott <- brick("...air.mon.mean.v501.nc")
ls()
list2env(setNames(unstack(wilmott),names(wilmott)),.GlobalEnv)
ls()
lights <- raster("...F182013.v4/F182013.v4c_web.stable_lights.avg_vis.tif")
两个栅格都具有以下属性..
wilmott
class : RasterBrick
dimensions : 360,720,259200,1416 (nrow,ncol,ncell,nlayers)
resolution : 0.5,0.5 (x,y)
extent : 0,360,-90,90 (xmin,xmax,ymin,ymax)
crs : +proj=longlat +datum=wgs84 +ellps=wgs84 +towgs84=0,0
source : ...air.mon.mean.v501.nc
names : X1900.01.01,X1900.02.01,X1900.03.01,X1900.04.01,X1900.05.01,X1900.06.01,X1900.07.01,X1900.08.01,X1900.09.01,X1900.10.01,X1900.11.01,X1900.12.01,X1901.01.01,X1901.02.01,X1901.03.01,...
Date/time : 1900-01-01,2017-12-01 (min,max)
varname : air
lights
class : RasterLayer
dimensions : 16801,43201,725820001 (nrow,ncell)
resolution : 0.008333333,0.008333333 (x,y)
extent : -180.0042,180.0042,-65.00417,75.00417 (xmin,ymax)
crs : +proj=longlat +datum=wgs84 +no_defs +ellps=wgs84 +towgs84=0,0
source : ...F182013.v4/F182013.v4c_web.stable_lights.avg_vis.tif
names : F182013.v4c_web.stable_lights.avg_vis
values : 0,255 (min,max)
看起来像这样 Plot Temperature Data Plot Lights Data
如您所见,两个图都有不同的范围。现在问题来了。如果我投影(或重新采样(或使用 CRS、范围等))我的气候栅格,我能够匹配他们的 CRS、范围等,但很多数据会被丢弃。见下图:
wilmott.new.1901.01 = projectRaster(wilmott1901.01,lights)
> wilmott.new.1901.01
class : RasterLayer
dimensions : 16801,0
source : /private/var/folders/dr/4gjhd01x5sd4wf965z0v11200000gp/T/RtmprJJ26D/raster/r_tmp_2021-01-12_164836_576_12591.Grd
names : X1901.01.01
values : -56.09999,35.79999 (min,max)
Plot of climate data projected to light data
我该如何解决这个问题?有任何想法吗?我将如何继续在新数据框中仅检索两个源中所有网格的值?用rastertoPoints()
还是extract()
?
希望你明白我的意思。非常感谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)