In R habe ich einzelne SpatialPolygons
Objekt (d. H. Multi-Polygone) mit mehreren hundert Polygonen. Ich möchte dieses SpatialPolygons
Objekt in eine Liste von Polygons
teilen (d. H. Löcher sollten an dem übergeordneten Polygon haften bleiben).Split-Polygon-Teile eines einzelnen SpatialPolygons-Objekts
Irgendeine Idee, wie man das macht?
EDITED:
das folgende Beispiel im Paket sp
bereitgestellt Verwendung:
# 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)
Dann out = lapply([email protected], slot, "Polygons")
läuft. Ich bekomme eine Liste von drei Polygons
(d.h. Srs1
, Srs2
, Srs3
).
Allerdings ist der Fall, den ich versuche zu lösen, ein bisschen anders als dieses Beispiel. Das Objekt SpatialPolygons
, das ich zu teilen versuche, ist das Ergebnis einer geometrischen Vereinigung, die mit der gUnaryUnion
-Funktion (im RGEOS
-Paket) durchgeführt wurde. Wenn ich out <- lapply([email protected], slot, "Polygons")
anwende, erhalte ich eine eindeutige Liste von Polygon
Objekten (n.b. keine Liste von Polygons
Objekten). Mit anderen Worten, jedes Polygon ist von seinen Löchern getrennt.
Lauf topol <- sapply(unlist(out), function(x) [email protected])
ich:
> length(topol)
[1] 4996
> sum(topol, na.rm=TRUE)
[1] 469
Nach dem RGEOS
v0.3-2 Handbuch (http://cran.r-project.org/web/packages/rgeos/rgeos.pdf):
Damit rgeos richtig funktionieren ist es notwendig, dass alle Löcher innerhalb einer gegebenen POLYGON- oder MULTIPOLYGON-Geometrie zu einem spezifischen Polygon gehören müssen. Die SpatialPolygons-Klassenimplementierung enthält diese Informationen derzeit nicht . Um diese Einschränkung zu umgehen rgeos verwendet ein zusätzliches Kommentarattribut für die Polygonklasse, das angibt, welches Loch zu welchem Polygon gehört. In der aktuellen Implementierung ist dieser Kommentar eine Textzeichenfolge aus Zahlen, die durch Leerzeichen getrennt sind, wobei die Reihenfolge der Zahlen der Reihenfolge der Polygon-Objekte im Polygons-Slot des Polygons-Objekts entspricht. A 0 bedeutet, dass das Polygon-Objekt ein Polygon ist, eine Zahl ungleich Null impliziert , dass das Polygon-Objekt ein Loch ist, dessen Wert den Index des Polygons angibt, das das Loch "besitzt".
So ist die createSPComment()
Funktion in RGEOS
ist wahrscheinlich eine Abhilfe reaggregieren Polygonen und Löcher sein.