我正在尝试使用 r 将凹多边形拆分为凸多边形。我试图弄清楚如何为一个多边形成功地实现这一点,并希望以一种自动化的方式在大量多边形上实现这一点。
到目前为止,我能想到的唯一方法是使用三角剖分将这个形状分解成几个较小的形状,然后将它们组合成一些数量最少的凸多边形。
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
这是我所得到的。是否有一种聪明/有原则的方法将三角形分组为最少数量的组,然后将它们合并,以便最终产品是一组凸多边形?或者有没有更好的方法来解决这个问题?
我很感激帮助。这是shapefile的链接