Как использовать `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» — это «список списков», это не помогает.

0 ответов

Другие вопросы по тегам