4 votos

Cómo cortar un SHP basado en otro SHP usando R

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.

3voto

Dan Puntos 16

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)

0voto

Rihan Meij Puntos 362

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.

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