Subconjunto un SpatialPolygonsDataFrame por ID en R?

13

He usado la gIntersectfunción del rgeospaquete para determinar qué polígonos se cruzan en dos SpatialPolygonsDataFrames (spdfs). El resultado es una matriz lógica con nombres de fila que comprende las ID de polígono de sfdf # 1 y colname las ID de polígono de spdf # 2. Me gustaría usar esta matriz para subconjugar los dos spdfs originales, omitiendo aquellos polígonos que no tienen superposición, antes de usar la función gIntersection. Puedo convertir fácilmente la matriz lógica en dos vectores de ID (uno para cada spdf) que representan esos polígonos con al menos cierta superposición.

Mi pregunta es: ¿puedo usar un vector de ID de polígono para subconjuntar un spdf? Si es así, ¿subconjugará correctamente los valores en la @dataranura? Sé que generalmente puedo subconjugar spdfs usando esta sintaxis:

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

Esto no funcionará para las ID, ya que están enterradas mucho más profundamente dentro de la estructura de la lista spdf.

Alberto
fuente

Respuestas:

11

Los identificadores de matriz devueltos por gIntersect deben corresponder a los nombres de fila en cada objeto sp de origen. Debería poder indexar la posición de los nombres de fila para subconjugar los datos.

r <- c(1,5,3,9,10)
sp.polys <- sp.polys[r,]
Jeffrey Evans
fuente
Solo quiero verificar: ¿esto también funcionará directamente en el objeto spdf? (es decir, spdf[r, ])
Alberto
Sí, funciona en objetos sp y el índice se propaga a través de los ID que vinculan todos los objetos de ranura, que corresponden a los nombres de fila @data.
Jeffrey Evans el
Tal vez no estoy leyendo correctamente, pero esto parece un poco mal. Debe extraer en una cadena r de nombres de fila, utilizando enteros extraerá ordinalmente
MichaelChirico
@MichaelChirico para devolver una posición de fila conocida, esto es correcto. Si solo conoce el valor de los nombres de las filas, podría crear el índice usando algo como which (rownames (x)% en% c (1,5)) y no, a menos que se asigne una cadena de caracteres verdadera a los nombres de las filas que los valores no necesitan ser citados. Los nombres de fila predeterminados son un vector citado de 1: n
Jeffrey Evans