Как использовать `polyclip::polysimplify` на многоугольнике
Я пытаюсь избавиться от пересечений в государственных полигонах изggplot2
library("ggplot2")
states <- map_data("state")
states<-states[states$region=="washington"|states$region=="oregon"|states$region=="california",]
statesPoly<-Polygon(as.matrix(cbind(states$long,states$lat)),hole = F)
crdref <- CRS('+proj=longlat +datum=WGS84')
p1 <- SpatialPolygons(list(Polygons(list(statesPoly), "p1")),proj4string=crdref)
plot(p1)
См. здесь (Обрезка (разница) многоугольника с помощью ggplot2 указывает многоугольники в R), почему самопересечения являются проблемой.
The polyclip::polysimplify
кажется, что функция предназначена для этой проблемы (https://search.r-project.org/CRAN/refmans/polyclip/html/polysimplify.html), но я не могу заставить функцию работать с любой из следующих спецификаций:
library(polyclip)
polysimplify(list(cbind(states$long,states$lat)))
polysimplify(list(statesPoly))
polysimplify(list(p1))
Error in polysimplify(list(matrix(cbind(states$long, states$lat)))) :
Argument A should be a list of lists, each containing vectors x,y
Если вы оберните аргументы внутриpolysimplify
внутри другогоlist()
(например:polysimplify(list(list(p1)))
) таким образом, что «Аргумент A» — это «список списков», это не помогает.