使用R将大型栅格转换为多边形时出现问题

3
我有一个相当大的栅格图像(384 MB),我正在尝试在R中将其转换为多边形矢量文件。来自raster包的rastertoPolygons函数似乎处理不了这个问题,因为我尝试运行它,但是在7个小时后放弃了。
我还尝试使用GDAL中的gdal_polygonize.py,在python中通过John Baumgartner的这个函数(链接),但是让该函数运行30分钟后,仍然没有结果。我只是没有让它运行足够长时间吗?我印象中gdal_polyonize.py应该非常快,即几秒钟就能完成。 这是我的栅格文件的链接。 任何指导都将不胜感激。
1个回答

4

terraraster更快(但不如使用GDAL更快,因为它使用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")

这个完美地运行了,非常感谢! - Nadav Bendavid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接