растворить границы многоугольников в R - PullRequest
0 голосов
/ 21 октября 2018

Я искал существующую функцию (и) R для агрегирования полигональных объектов в одном слое, которые имеют общую границу (т. Е. Для создания выходных данных, таких как инструмент 'Dissolve Boundaries' в ArcGIS).

Я создал слой многоугольника из растрового файла, используя gdal_polygonizeR (https://johnbaumgartner.wordpress.com/2012/07/26/getting-rasters-into-shape-from-r/).. Некоторые из многоугольников разделяются одной растровой ячейкой и поэтому хранятся в виде отдельных объектов в шейп-файле. Я хочу объединить такие объекты многоугольника водиночный полигональный объект и создание нового шейп-файла (сокращающего общее количество полигональных элементов), в идеале с пороговым расстоянием для растворения.

Кто-нибудь знает о существующем методе для этого в R?

ОБНОВЛЕНИЕ: Я думаю, что решение может включать aggregate, за которым следует disaggregate. В настоящее время я изучаю это с особым вниманием к тому, чтобы элементы полигона с отверстиями оставались связанными с родительским полигоном (см .: Разделить части полигона).одного объекта SpatialPolygons ). Будет обновлятьсясъел снова, если / когда я найду решение.

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

После преобразования растрового файла в полигон (используя gdal_polygonizeR НЕ rasterToPolygon из-за проблем во время выполнения) я смог «Растворить границы» отдельных объектов полигона в пределах одного слоя («poly» в коде ниже)выполнив следующие шаги (примечание: я привел пример выходных данных, относящихся к количеству функций в выходных наборах данных, измененных после запуска указанных функций):

library(raster)
library(sp)

#inspect initial polygon output for number of features
poly       #e.g., features: 360

#aggregate initial polygon output into single multi-part features
#this solves some unrealistic feature separation which resulted from
#the raster to polygon conversion
polya = aggregate(poly, dissolve = TRUE)
polya      #e.g., features: 1

#disaggregate multi-part polygon into separate features
polyd <- disaggregate(polya)
polyd      #e.g., features: 228

#apply a negligible buffer distance around polygon features to combine features 
#that are only connected by one raster corner (and therefore counted 
#incorrectly as distinct features after the above steps)
#and dissolve
polyb <- buffer(polyd, width = 0.001, dissolve = TRUE)
polyb      #e.g., features: 1

#disaggregate multi-part buffered polygon into separate features
polybd <- disaggregate(polyb)
polybd     #e.g., features: 181

Этот метод не идеален, поскольку приводит к многоугольникуфункции, которые не совсем совпадают по площади с исходным растром и полигоном, но это лучшее, что я мог придумать.Пожалуйста, прокомментируйте, если у вас есть лучшее решение.

0 голосов
/ 21 октября 2018
library(raster)
y <- aggregate(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...