Teilmenge eines SpatialPolygonsDataFrame nach ID in R?

13

Ich habe die gIntersectFunktion aus dem rgeosPaket verwendet, um zu bestimmen, welche Polygone sich in zwei SpatialPolygonsDataFrames (spdfs) schneiden. Das Ergebnis ist eine logische Matrix mit Rownamen, die die Polygon-IDs aus sfdf # 1 und die Colnames der Polygon-IDs aus spdf # 2 enthalten. Ich möchte diese Matrix verwenden, um die beiden ursprünglichen SPDFS-Werte zu unterteilen, wobei die Polygone, die keine Überlappung aufweisen, weggelassen werden, bevor die Funktion verwendet wird gIntersection. Ich kann die logische Matrix leicht in zwei Vektoren von IDs (einen für jede PDF-Datei) konvertieren, die die Polygone mit mindestens einer gewissen Überlappung darstellen.

Meine Frage ist: Kann ich einen Vektor mit Polygon-IDs verwenden, um eine PDF-Datei zu unterteilen? Wenn ja, werden die Werte im @dataSteckplatz korrekt untergeordnet? Ich weiß, dass ich generell spdfs mit folgender Syntax unterteilen kann:

spdf[spdf@data$myVariable[someVector], ]

Dies funktioniert bei IDs nicht, da sie viel tiefer in der Struktur der PDF-Liste vergraben sind.

Alberto
quelle

Antworten:

11

Die von gIntersect zurückgegebenen Matrix-IDs sollten den Rownamen in jedem Quell-SP-Objekt entsprechen. Sie sollten in der Lage sein, nur die Position der Rownames zu indizieren, um die Daten zu unterteilen.

r <- c(1,5,3,9,10)
sp.polys <- sp.polys[r,]
Jeffrey Evans
quelle
Ich möchte nur prüfen, ob dies auch direkt auf dem spdf-Objekt funktioniert. (dh spdf[r, ])
Alberto
Ja, es funktioniert mit sp-Objekten und der Index pflanzt sich über die IDs fort, die alle Slot-Objekte verknüpfen, die den @ data-Rownamen entsprechen.
Jeffrey Evans
Vielleicht lese ich nicht richtig, aber das sieht ein bisschen falsch aus? Sie sollten eine Reihe r von
Zeilennamen
@MichaelChirico für die Rückgabe einer bekannten Zeilenposition ist dies korrekt. Wenn Sie nur den Wert der Zeilennamen kennen, können Sie den Index mit so etwas wie "which" (rownames (x)% in% c (1,5)) und "no" erstellen, es sei denn, rownames wird eine echte Zeichenfolge zugewiesen als die Werte müssen nicht angegeben werden. Die Standard-Rownamen sind ein zitierter Vektor von 1: n
Jeffrey Evans