In R, ho un singolo oggetto SpatialPolygons
(cioè multi-poligoni) contenente diverse centinaia di poligoni. Vorrei suddividere questo oggetto SpatialPolygons
in un elenco di Polygons
(vale a dire che i fori devono rimanere collegati al poligono principale).Parti poligonali divise di un singolo oggetto SpatialPolygons
Qualche idea su come procedere?
MODIFICATI:
Utilizzando il seguente esempio fornito nel pacchetto sp
:
# simple example, from vignette("sp"):
Sr1 = Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))
Sr2 = Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))
Sr3 = Polygon(cbind(c(4,4,5,10,4),c(5,3,2,5,5)))
Sr4 = Polygon(cbind(c(5,6,6,5,5),c(4,4,3,3,4)), hole = TRUE)
Srs1 = Polygons(list(Sr1), "s1")
Srs2 = Polygons(list(Sr2), "s2")
Srs3 = Polygons(list(Sr3, Sr4), "s3/4")
SpP = SpatialPolygons(list(Srs1,Srs2,Srs3), 1:3)
Poi esecuzione out = lapply([email protected], slot, "Polygons")
. Ottengo un elenco di tre Polygons
(ad esempio Srs1
, Srs2
, Srs3
).
Tuttavia, il caso che sto cercando di risolvere è un po 'diverso da questo esempio. L'oggetto SpatialPolygons
che sto cercando di dividere è il risultato di un unione geometrica eseguita con la funzione gUnaryUnion
(nel pacchetto RGEOS
). Se applico out <- lapply([email protected], slot, "Polygons")
, ottengo un elenco univoco di oggetti Polygon
(n.b. non un elenco di oggetti Polygons
). In altre parole, ogni poligono è separato dalle sue buche.
Esecuzione topol <- sapply(unlist(out), function(x) [email protected])
ottengo:
> length(topol)
[1] 4996
> sum(topol, na.rm=TRUE)
[1] 469
Secondo il RGEOS
v0.3-2 manuale (http://cran.r-project.org/web/packages/rgeos/rgeos.pdf):
Affinché rgeos di funzionare correttamente è necessario che tutti i fori all'interno di una determinata geometria POLIGONO o MULTIPOLIGONO devono appartenere a un poligono speci fi co . L'implementazione della classe SpatialPolygons non include attualmente include queste informazioni. Per ovviare a questa limitazione, rgeos utilizza un attributo di commento aggiuntivo nella classe Poligoni che indica quale foro appartiene a quale poligono. Nell'attuale implementazione questo commento è una stringa di numeri di testo separati da spazi in cui l'ordine dei numeri corrisponde all'ordine degli oggetti Polygon nello slot Poligoni dell'oggetto Poligono. A 0 implica che l'oggetto Poligono è un poligono, un numero diverso da zero implica che l'oggetto Poligono è un foro con il valore che indica l'indice del poligono che "possiede" il foro.
Quindi la funzione createSPComment()
in RGEOS
è probabile che sia una soluzione per reaggregate poligoni e buchi.