繁体   English   中英

R - 从大型栅格中有效创建数据帧,不包括NA值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM