在 R 中正确投影栅格并检索其数据

问题描述

我拼命尝试使用两个不同的栅格来获取数据,然后用它运行回归。我将首先尝试呈现我想要(需要)做什么,然后呈现问题。

练习: 我正在尝试检测历史温度异常与 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 (将#修改为@)