Sottoinsieme di uno SpatialPolygonsDataFrame per ID in R?


13

Ho usato la gIntersectfunzione dal rgeospacchetto per determinare quali poligoni si intersecano in due SpatialPolygonsDataFrames (spdfs). Il risultato è una matrice logica con i rownames che comprendono gli ID poligonali da sfdf # 1 e i nomi degli ID poligonali da spdf # 2. Vorrei usare questa matrice per sottoinsieme i due spdf originali, omettendo quei poligoni che non si sovrappongono, prima di usare la funzione gIntersection. Posso facilmente convertire la matrice logica in due vettori di ID (uno per ogni spdf) che rappresentano quei poligoni con almeno qualche sovrapposizione.

La mia domanda è: posso usare un vettore di ID poligono per creare un sottoinsieme di uno spdf? In tal caso, inserirà correttamente i valori nello @dataslot? So di poter generalmente sottoinsieme spdf usando questa sintassi:

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

Questo non funzionerà per gli ID, poiché sono sepolti molto più profondamente nella struttura dell'elenco spdf.

Risposte:


11

Gli ID matrice restituiti da gIntersect devono corrispondere ai rownames in ciascun oggetto sp di origine. Dovresti essere in grado di indicizzare solo la posizione dei rownames per sottoinsieme dei dati.

r <- c(1,5,3,9,10)
sp.polys <- sp.polys[r,]

Voglio solo controllare - funzionerà anche direttamente sull'oggetto spdf? (es. spdf[r, ])
Alberto,

Sì, funziona su oggetti sp e l'indice si propaga attraverso gli ID che collegano tutti gli oggetti slot, che corrispondono ai rownames @data.
Jeffrey Evans,

Forse non sto leggendo correttamente ma questo sembra leggermente sbagliato? Si dovrebbe estrarre una stringa r di nomi di righe, utilizzando numeri interi estrarrà ordinally
MichaelChirico

@MichaelChirico per aver restituito una posizione di riga nota, questo è corretto. Se conosci solo il valore del / i nome / i di riga di quanto potresti creare l'indice usando qualcosa del tipo (rownames (x)% in% c (1,5)) e no, a meno che non venga assegnata una stringa di caratteri vera ai rownames quindi i valori non devono essere quotati. I rownames predefiniti sono un vettore citato di 1: n
Jeffrey Evans,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.