Слияние полигональных объектов с помощью пакета sf

Растворение - это распространенный метод геообработки, который рассматривается как подход SF, здесь.

Я пытаюсь воспроизвести растворение, как оно работает в ArcGIS. Рассмотрим округа двумя группами в ArcGIS.

Команда растворения ArcGIS создает два полигона, независимо от того, что восточный полуостров состоит из дополнительных отдельных полигонов. Вот так:

Это функциональность, которую я хотел бы воспроизвести в SF, но не могу, как показано ниже.

nc <- st_read(system.file("shape/nc.shp", package="sf"))

#create two homogenous spatial groups
nc$group <- ifelse(nc$CNTY_ <= 1980,1,2)

#plot
ggplot() + geom_sf(data=nc, aes(fill = factor(group)))  

#dissolve
nc_dissolve <- nc %>% group_by(group) %>% summarize() 

#plot dissolved
ggplot() + geom_sf(data=nc_dissolve, aes(fill = factor(group)))

#Cartographically, it looks like we have two polygons, but there are 
#actually several more wrapped up as MULTIPOLYGONS. We can plot these.
t <- nc_dissolve %>% st_cast() %>% st_cast("POLYGON")
ggplot() + geom_sf(data=t, aes(fill=factor(row.names(t))))

Обратите внимание, что на полуострове есть несколько посторонних многоугольников.

Как мне получить всего два, как в случае с ArcGIS? Большое спасибо.


r sf
person ReginaldMilton    schedule 01.06.2017    source источник


Ответы (1)


Я не слишком знаком с тем, как ArcGIS определяет многоугольник, но спецификация простого доступа к объектам (стандарт ISO) для многоугольника представляет собой одно кольцо с нулем или более внутренних колец, обозначающих отверстия. Это означает, что в соответствии с этой спецификацией, если у вас есть основная земля + пара островов, у вас не будет ни одного многоугольника. Чтобы представить их как один объект, соответствующий тип геометрии - мультиполигон. Это означает, что ваш ответ находится в nc_dissolve: он имеет две особенности.

person Edzer Pebesma    schedule 02.06.2017
comment
Интересно, что ArcGIS отклоняется от стандарта. Я найду работу. Большое спасибо за внимание. - person ReginaldMilton; 02.06.2017
comment
проверьте, поддерживает ли ArcGIS простые функции - я был бы удивлен, если бы они этого не сделали. - person Edzer Pebesma; 02.06.2017