Tengo un Shapefile de puntos con cierta información. Tengo otro Shapefile con polígonos correspondientes a los estados del país con el que estoy trabajando (en este caso México). Dado que solo quiero trabajar específicamente con 3 estados, quería saber si hay alguna manera de eliminar los puntos que no caen en estos 3 estados.
Respuestas
¿Demasiados anuncios?Puedes hacer este tipo de superposición espacial usando la función "over" en la biblioteca sp. Esta biblioteca se carga automáticamente con bibliotecas como maptools, rgdal, raster y spdep. Esto se debe a que define las clases de objetos espaciales primarios en R. Si estás realizando análisis espacial en R, esta es una biblioteca muy buena para familiarizarse. Casi todas las bibliotecas espaciales, excepto spatstat, en R utilizan las clases de objetos definidas por sp. Para operaciones de geometría más complejas, existe la biblioteca rgeos que es una adaptación a la Suite de Topología GEOS JTS. Esta biblioteca permite operaciones como el buffer, la unión y la intersección. Aquí está el ejemplo de la ayuda para over de lo que estás buscando.
require(sp)
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))
r3 = cbind(c(179110, 179907, 180433, 180712, 180752, 180329, 179875,
179668, 179572, 179269, 178879, 178600, 178544, 179046, 179110),
c(331086, 330620, 330494, 330265, 330075, 330233, 330336, 330004,
329783, 329665, 329720, 329933, 330478, 331062, 331086))
r4 = cbind(c(180304, 180403,179632,179420,180304),
c(332791, 333204, 333635, 333058, 332791))
sr1=Polygons(list(Polygon(r1)),"r1")
sr2=Polygons(list(Polygon(r2)),"r2")
sr3=Polygons(list(Polygon(r3)),"r3")
sr4=Polygons(list(Polygon(r4)),"r4")
sr=SpatialPolygons(list(sr1,sr2,sr3,sr4))
srdf=SpatialPolygonsDataFrame(sr, data.frame(cbind(1:4,5:2), row.names=c("r1","r2","r3","r4")))
data(meuse)
coordinates(meuse) = ~x+y
plot(meuse)
polygon(r1)
polygon(r2)
polygon(r3)
polygon(r4)
# obtener concentraciones medias de metales pesados por polígono:
over(sr, meuse[,1:4], fn = mean)
No es necesario recortar nada.
- Primero, haz un subconjunto que contenga tus 3 polígonos estatales (si aún no lo has hecho o si hay más de 3 estados).
- Luego selecciona todos los puntos que caigan dentro de esos polígonos (plugin de Consulta por ubicación en QGIS. Haz una nueva selección que contenga todos los puntos que estén dentro de tus polígonos).
- Haz clic derecho en tu capa de puntos (los puntos aún seleccionados) y ejecuta la función "Guardar selección como", que simplemente guardará tus puntos seleccionados en algún lugar.