抱歉在 GIS 堆栈中交叉发布类似的东西。
我正在寻找一种更有效的方法来基于 R 中的大型栅格创建频率表。
目前,我有几十个栅格,每个栅格约有 1.5 亿个像元,我需要为每个栅格创建频率表。这些栅格来自于用几百个小采样位置*掩蔽基础栅格。因此,我正在创建表格的栅格包含 ~99% NA 值。
我目前的工作方法是这样的:
sampling_site_raster <- raster("FILE")
base_raster <- raster("FILE")
sample_raster <- mask(base_raster, sampling_site_raster)
DF <- as.data.frame(freq(sample_raster, useNA='no', progress='text'))
### run time for the freq() process ###
user system elapsed
162.60 4.85 168.40
这使用 R 光栅包中的
freq()
函数。 usaNA=no
标志将转储 NA 值。我的问题是:
1) 是否有更有效的方法从 99% NA 值的大型栅格创建频率表?
或者
2) 与使用
mask()
相比,从基础栅格中获取值是一种更有效的方法吗? (在 ArcGIS 中使用 Mask GP 功能非常快,但仍然具有 NA 值并且是一个额外的步骤*附加信息:
sampling_site_raster
表示的样本区域是各种大小的不规则形状,随机分布在整个研究区域。在 sampling_site_raster
中,采样点被编码为 1
,非采样区域被编码为 NA
。谢谢!
最佳答案
如果您逐个栅格屏蔽栅格,您将始终获得另一个巨大的栅格。我不认为这是一种使事情更快的方法。
我要做的是尝试使用 extract
通过多边形图层进行 mask :
res <- extract(raster, polygons)
然后您将拥有每个多边形的所有单元格值,并可以对它们运行
freq
。关于R - 从大栅格有效地创建数据框,不包括 NA 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20225139/