вогнутый многоугольник в выпуклые многоугольники, используя г - PullRequest
4 голосов
/ 19 февраля 2020

Я пытаюсь разбить вогнутый многоугольник на выпуклые многоугольники, используя r. Я пытаюсь выяснить, как успешно выполнить sh этого для одного многоугольника с надеждой реализовать это на большом количестве многоугольников в автоматическом режиме.

До сих пор я мог думать только о том, чтобы использовать триангуляцию, чтобы разбить эту форму на несколько меньших фигур, а затем сгруппировать их в несколько выпуклых многоугольников с минимальным числом.

library(sp)
library(rgdal)
library(sf)

files <- list.files("~/Cluster polygons 2020",pattern=".shp", full.names=TRUE)
cluster=readOGR(files[1])
spatstat::is.convex(maptools::as.owin.SpatialPolygons(cluster[1,])) #CHECK IF CONVEX
[1] FALSE

enter image description here

plygn=sfdct::ct_triangulate(sf::st_as_sf(cluster[1,]),D=TRUE)
plygn=st_collection_extract(plygn, "POLYGON")
plygn=as_Spatial(plygn)

length(plygn) #HOW MANY TRIANGLES GENERATED?
[1] 58

enter image description here

Это насколько я получил , Есть ли умный / принципиальный способ сгруппировать треугольники в наименьшее количество групп, а затем объединить их так, чтобы конечный продукт был набором выпуклых многоугольников? Или есть совершенно лучший подход к этой проблеме?

Я ценю помощь. Вот ссылка на шейп-файл

...