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