我有一个很大的栅格(384 MB),我试图将其转换为R中的多边形shapefile。rastertoPolygons
栅格软件包中的函数似乎无法处理此问题,因为我尝试运行它但在此之后放弃了持续了7个多小时。
我还尝试通过John Baumgartner的此功能在python中使用GDAL中的GDAL中的gdal_polygonize.py,但在该功能运行30分钟以上后,我仍然一无所有。我是不是只是让它运行了足够长的时间?我的印象是gdal_polyonize.py应该很快,即几秒钟。
任何指导将不胜感激。
terra
这样做的速度比raster
(但不比GDAL快,因为它使用的是)
library(terra)
r <- rast("top6loss.tif")
请注意,您有220亿个单元格(按大多数标准来说这很多,这就是为什么要花一些时间的原因):
ncell(r)
#[1] 21989436765
只需10分钟即可在我的笔记本电脑上完成
system.time(p <- as.polygons(r))
# user system elapsed
# 562.34 3.54 568.77
p
#class : SpatVector
#geometry : polygons
#dimensions : 6, 1 (geometries, attributes)
#extent : -13.54777, 12.33558, -6.134633, 9.781491 (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +datum=WGS84 +no_defs
这些是6个值
as.data.frame(p)
# top6loss
#1 2254
#2 5418
#3 13623
#4 14344
#5 15885
#6 19654
您可以使用
writeVector(p, "cells.shp")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句