#r #polygon #raster #r-raster
#r #полигон #растровый #r-растр
Вопрос:
У меня довольно большой растр (384 МБ), который я пытаюсь преобразовать в шейп-файл полигона в R. rastertoPolygons
Функция из пакета raster, похоже, не справляется с этим, поскольку я попытался запустить ее, но сдался после того, как она работала более 7 часов.
Я также пытался использовать gdal_polygonize.py из GDAL в python с помощью этой функции Джона Баумгартнера, но после запуска функции в течение более 30 минут у меня все еще ничего нет. Я просто не позволяю ему работать достаточно долго? У меня сложилось впечатление, что gdal_polyonize.py предполагалось, что это будет очень быстро, то есть за секунды.
Вот ссылка на мой растровый файл.
Любые рекомендации будут высоко оценены.
Ответ №1:
terra
делает это намного быстрее, чем raster
(но не быстрее, чем GDAL, потому что это то, что он использует)
library(terra)
r <- rast("top6loss.tif")
Обратите внимание, что у вас 22 миллиарда ячеек (это много по большинству стандартов, и именно поэтому это занимает некоторое время):
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")
Комментарии:
1. это сработало отлично, большое вам спасибо!