无法使用 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.
任何指导将不胜感激。
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")
我有一个相当大的栅格 (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.
任何指导将不胜感激。
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")