После преобразования растрового файла в полигон (используя 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
Этот метод не идеален, поскольку приводит к многоугольникуфункции, которые не совсем совпадают по площади с исходным растром и полигоном, но это лучшее, что я мог придумать.Пожалуйста, прокомментируйте, если у вас есть лучшее решение.