5 votos

Extraer puntos de data.frame regular con coordenadas basadas en SpatialPolygonsDataFrame en R

Tengo un data.frame normal llamado datos.merged

clase(datosmergidos)

[1] "data.frame"

Las dos últimas columnas son las coordenadas geográficas correspondientes

datosmerged[1,c(23,24)]

   XCOORD   YCOORD
1 2473520   668648.7

Tengo un archivo llamado shape

clase(forma)

[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"

Me gustaría utilizar esta forma muy simple para subconjuntar el data.frame anterior. ¿Cómo puedo hacerlo?

5voto

Dan Puntos 16

Puede coaccionar fácilmente su data.frame a un objeto SpatialPointsDataFrame.

coordinates(datosmerged) <- ~XCOORD+YCOORD
  class(datosmerged)

Suponiendo que "shape" es un polígono, puede utilizar la función "over" para identificar el solapamiento entre las dos clases de características. Una alternativa es "gIntersects" en el paquete "rgeos", pero es un poco exagerado para su problema.

He aquí un ejemplo

require(sp)

# Create polygons
r1 = cbind(c(180114, 180553, 181127, 181477, 181294, 181007, 180409, 
  180162, 180114), c(332349, 332057, 332342, 333250, 333558, 333676, 
  332618, 332413, 332349))
r2 = cbind(c(180042, 180545, 180553, 180314, 179955, 179142, 179437, 
  179524, 179979, 180042), c(332373, 332026, 331426, 330889, 330683, 
  331133, 331623, 332152, 332357, 332373))
srdf=SpatialPolygonsDataFrame(SpatialPolygons(list(Polygons(list(Polygon(r1)),"r1"),
                              Polygons(list(Polygon(r2)),"r2"))), data.frame(ID=c(1,2), 
                              row.names=c("r1","r2")))

# Coerce data.frame to SpatialPointsDataFrame
data(meuse)
  coordinates(meuse) = ~x+y

# Plot Example  
plot(meuse, pch=19)
  plot(srdf, add=T)

# Use over function to add polygon IDS to points. Non-overlapping points will have NA 
meuse@data <- data.frame(meuse@data, over(meuse, srdf[,"ID"]) )
  meuse@data

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X