Teilen von Polygonteilen eines einzelnen SpatialPolygons-Objekts

8

In R habe ich einzelne SpatialPolygons -Objekte (d. h. Multi-Polygone), die mehrere hundert Polygone enthalten. Ich möchte dieses SpatialPolygons -Objekt in eine Liste von Polygons aufteilen (d. H. Löcher sollten am übergeordneten Polygon hängen bleiben).

Irgendeine Idee, wie man das macht?

BEARBEITET:

Verwenden Sie das folgende Beispiel im Paket sp :

%Vor%

Dann läuft out = lapply(SpP@polygons, slot, "Polygons") . Ich bekomme eine Liste von drei Polygons (d. H.% Co_de%, Srs1 , Srs2 ).

Der Fall, den ich zu lösen versuche, unterscheidet sich jedoch etwas von diesem Beispiel. Das Objekt Srs3 , das ich zu teilen versuche, ist das Ergebnis einer geometrischen Vereinigung, die mit der Funktion SpatialPolygons (im Paket gUnaryUnion ) durchgeführt wurde. Wenn ich RGEOS anwende, erhalte ich eine eindeutige Liste von out <- lapply(merged.polygons@polygons, slot, "Polygons") -Objekten (n.b. keine Liste von Polygon -Objekten). Mit anderen Worten, jedes Polygon ist von seinen Löchern getrennt.

Running Polygons

Ich bekomme:

%Vor%

Gemäß dem topol <- sapply(unlist(out), function(x) x@hole) v0.3-2 Handbuch ( Ссылка ) :

  

Damit rgeos richtig funktionieren, müssen alle Löcher vorhanden sein   innerhalb einer gegebenen POLYGON- oder MULTIPOLYGON-Geometrie muss zu a gehören   spezifisches Polygon. Die Implementierung der SpatialPolygons-Klasse tut dies nicht   enthalten derzeit diese Informationen. Um diese Einschränkung zu umgehen   rgeos verwendet ein zusätzliches Kommentarattribut für die Polygons-Klasse   gibt an, welches Loch zu welchem ​​Polygon gehört. Unter dem Strom   Implementierung Dieser Kommentar ist eine Zeichenkette aus Zahlen, die durch   Räume, in denen die Reihenfolge der Zahlen der Reihenfolge der Zahlen entspricht   Polygon-Objekte im Polygons-Slot des Polygons-Objekts. A 0   Impliziert, dass das Polygon-Objekt ein Polygon ist, das eine Zahl ungleich Null impliziert   Das Polygon-Objekt ist ein Loch mit dem Wert, der den Index angibt   des Polygons, das das Loch "besitzt".

Daher ist die RGEOS -Funktion in createSPComment() wahrscheinlich ein Workaround zum erneuten Zusammenführen von Polygonen und Löchern.

    
jatobat 11.10.2013, 10:24
quelle

4 Antworten

11

Um Multipolygon-Objekte in einzelne Polygone (mit Löchern, falls vorhanden) zu trennen, können Sie

verwenden %Vor%

Dabei ist p ein SpatialPolygons -Objekt. Danach können Sie d@polygons verwenden.

Zum Beispiel

%Vor%     
RobertH 29.09.2015 04:03
quelle
2

Wenn Ihr SpatialPolygons -Objekt mysp ...

heißt %Vor%     
Simon O'Hanlon 11.10.2013 10:56
quelle
1

Nach meinem Verständnis möchte das OP ein SpatialPolygons -Objekt in eine Liste von Polygons umwandeln, wobei Löcher erhalten bleiben, falls vorhanden.

Das SpP -Objekt, das vom OP erstellt wird, enthält drei Polygone, von denen das dritte ein Loch hat.

Sie können lapply verwenden, um durch jedes Polygon in SpP zu wechseln und eine Liste von SpatialPolygons zurückzugeben. Der Unterschied zwischen einem Polygons und SpatialPolygons Objekt besteht in der Addition von Plotauftragsinformationen. Da jedes resultierende SpatialPolygons eine Länge von 1 hat, ist diese Information jedoch überflüssig.

%Vor%

Wenn eine Liste von Polygons benötigt wird, ziehen Sie einfach den entsprechenden Slot aus dem Objekt SpatialPolygons :

%Vor%     
manimal 28.09.2015 11:57
quelle
0

Dies wird eine Liste von SpatialPolygons anstelle von gewöhnlichen Polygonen zurückgeben (was einige der Antworten tun).

%Vor%     
ColinTea 22.09.2017 16:18
quelle

Tags und Links