我需要计算原始分辨率为 1 x 0.00811 但聚合为 2 度并具有新范围的栅格中 NA 和非 NA 值的数量。
原始栅格(可在此处获得:https ://datadryad.org/stash/dataset/doi:10.5061/dryad.052q5 ,请参见输出 1)与另一个数据集(不幸的是,不是开源的)合并以在输出中生成栅格2:
输出 1
class : RasterLayer
dimensions : 19142, 35738, 684096796 (nrow, ncol, ncell)
resolution : 0.01, 0.00811 (x, y)
extent : -178.6931, 178.6869, -65.29534, 89.94628 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs
source : HumanFootprintWGS84.tif
names : HumanFootprintWGS84
values : 0, 50 (min, max)
输出 2
dimensions : 19142, 35738, 684096796 (nrow, ncol, ncell)
resolution : 0.01, 0.00811 (x, y)
extent : -178.6931, 178.6869, -65.29534, 89.94628 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs
source : r_tmp_2022-02-10_145403_42352_01781.grd
names : layer
values : 0.6730382, 1 (min, max)
我用于重新采样的栅格是一个虚拟栅格,如下所示:
输出 3
class : RasterLayer
dimensions : 65, 180, 11700 (nrow, ncol, ncell)
resolution : 2, 2 (x, y)
extent : -180, 180, -65, 65 (xmin, xmax, ymin, ymax)
crs : +proj=longlat +datum=WGS84 +no_defs
不幸的是,合并并因此重新采样的栅格在海岸线和湖泊附近有很多 NA 值;和中的平均方法st_warp
将 NA 值转换为 0,这会扭曲某些单元格的平均值的计算。
我决定通过将平均值乘以非 NA 值的数量/(非 NA 的数量 - NA 的数量)来调整平均值产生的值,即:
平均 x {非NA值的数量/(非NA值的数量/NA值的数量)}
为此,我需要知道非 NA 和 NA 值的数量是原始合并栅格(输出 2),但分辨率为 2 度,输出 3 中的范围(-180、180、-65、65)。
我是地图和栅格的新手,如果这是一个基本问题,我深表歉意。
我试图用原始数据集和虚拟网格的坐标进行栅格化,但这不会让我得到 NA 值的数量,只是单元格的数量(加上合并的栅格超过 5.1 Gb)。我试图修剪 NA 值(愚蠢的想法),st_warp
但没有平均(无论如何都使用最近的邻居)。
如果有人有任何想法或有更优雅的解决方案,我将不胜感激。
由衷的感谢,
编辑:通过反复试验,我发现无论值是否加载到内存中,重新采样(再次感谢您,@Robert Hijmans)和 st_warp 都会有所不同。
以下是示例输出,加载和不加载值: