在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
。
谢谢!
答案 0 :(得分:2)
如果您通过栅格屏蔽栅格,您将始终获得另一个巨大的栅格。我不认为这是一种让事情变得更快的方法。
我要做的是尝试使用extract
:
res <- extract(raster, polygons)
然后,您将获得每个多边形的所有单元格值,并且可以在它们上运行freq
。