无法使用 R 将大型栅格转换为多边形

Trouble converting a large raster to polygon using R

我有一个相当大的栅格 (384 MB),我正试图将其转换为 R 中的多边形 shapefile。 栅格包中的 rastertoPolygons 函数似乎无法处理这个问题,因为我尝试 运行ning 它但在运行了 7 个多小时后放弃了。

我还尝试通过 this function by John Baumgartner 在 python 中使用来自 GDAL 的 gdal_polygonize.py,但是在让函数 运行 运行了 30 多分钟后,我仍然一无所获。我只是没有让它 运行 足够长吗?我的印象是 gdal_polyonize.py 应该非常快,即秒。

Here's a link to my raster file.

任何指导将不胜感激。

terraraster 快得多(但不比 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")