r-如何在将大空间多边形数据帧转换为光栅堆栈的同时提高速度



我正在研究空间多边形数据帧(spdf)数据集。该数据集包含一系列月度气候数据。我试图实现的是将spdf转换为1000米分辨率的光栅堆栈,以进行进一步的统计分析。我写了一个R代码,但速度很慢,转换一列需要很长时间。如果你们中的任何人能提出让它更快的建议,我将不胜感激。

hru<-readOGR("E:\Tade\HRU\ubn_merge.shp",layer="ubn_merge") # spatial polygon
spdf<-merge(hru,spdf.2000,by.x="HRU",by.y="HRU",all.x=T,sort=F) # spdf nrow=565 ncol=375
# convert sp to raster
hru.ras<-raster(hru,resolution=1000) # raster hru shape to 1km
for (i in 1:length(spdf){
  et.ras<-rasterize(spdf,hru.ras,field=paste("m",1,sep="")) # rasterize
  et.stack<-stack(et.stack,et.ras)
}

感谢

正如Forrest所说(你也经历过),rasterize有点慢,但你可以做得比现在更好。您根本不需要使用循环:

r <- raster(spdf, resolution=1000)
et.ras <-rasterize(spdf, r, field=paste0("m",1:ncol(spdf)))

这将创建一个带有光栅属性表的RasterLayer。要创建RasterStack,请执行以下操作:

s <- deratify(et.ras)

如果要使用循环,请只使用rasterize一次,获取多边形ID,然后对感兴趣的实际变量使用subs

当然,这为您省去了外部依赖的痛苦。

从2020年3月起,您现在可以考虑这个新包了。

https://cran.r-project.org/web/packages/fasterize/vignettes/using-fasterize.html

fasterize()

与完全一样

rasterize()

但速度要快100-1000倍。我认为这可以帮助很多人。

相关内容

  • 没有找到相关文章

最新更新