【问题标题】:Trouble converting a large raster to polygon using R使用 R 将大型栅格转换为多边形时遇到问题
【发布时间】:2020-12-16 20:59:35
【问题描述】:

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

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

Here's a link to my raster file.

任何指导将不胜感激。

【问题讨论】:

    标签: r polygon raster r-raster


    【解决方案1】:

    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")
    

    【讨论】:

    • 效果很好,非常感谢!
    猜你喜欢
    • 2016-06-07
    • 1970-01-01
    • 2019-03-21
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 2021-01-20
    • 1970-01-01
    相关资源
    最近更新 更多