![](/img/trans.png)
[英]How to replace NA in a large raster with values from another raster in R?
[英]R - Efficiently create dataframe from large raster excluding NA values
在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
通过多边形图层进行遮罩:
res <- extract(raster, polygons)
然后,您将获得每个多边形的所有单元格值,并可以对它们运行freq
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.