Estoy tratando de intersectar dos SpatialPolygonsDataFrames y obtener un SpatialPolygonsDataFrame como resultado. Desafortunadamente, al usar la gIntersection
función from rgeos
(que funciona de manera impresionante rápidamente para intersecar los polígonos), parece que no puedo recuperar los marcos de datos asociados. Considere el siguiente ejemplo:
> fracPoly <- gIntersection( toSingle, fromSingle )
> class(toSingle)
[1] "SpatialPolygonsDataFrame"
> class(fromSingle)
[1] "SpatialPolygonsDataFrame"
> class(fracPoly)
[1] "SpatialPolygons"
Puedo escribir una función de contenedor que maneja la transferencia de data.frames
, pero será un pequeño problema hacer la verificación correcta y antes de hacerlo esperaba que alguien pudiera confirmar que no hay una mejor manera o señalarme hacia otra función (u opción for gIntersection
) que me permitiría retener el asociado data.frames
.
Actualizar
En una reflexión posterior, esto puede ser un comportamiento muy deliberado por parte de gIntersection
. Después de todo, de los dos SPDF, ¿qué marco de datos pasan? Por lo tanto, es posible que tenga que escribir un contenedor que combine los dos.
fuente
Respuestas:
Para algún proyecto tenía la misma necesidad. Mucho más que mantener el
data.frame
, tuvimos que establecer un código adicional para administrar el tipo de geometría de salida, y proceder a una limpieza (por ejemplo, colecciones de geometría limpia), para tener un geoproceso de intersección completo. En caso de que aún necesite hacer tal tarea en R, puede probar el paquete RFigisGeo :fuente
El comportamiento de gIntersection es no pasar ningún dato intersectado por diseño:
Para mi sorpresa, el paquete ráster tiene una función de intersección , que simplemente se cruza y entrega los datos también.
La información completa que obtuve sobre esto: http://r-sig-geo.2731867.n2.nabble.com/Intended-usage-of-gIntersection-td7587120.html
fuente
Para aquellos (como yo) para quienes las respuestas anteriores no funcionaron, el enlace aquí explica que puedes hacer esto con precisión con la intersección de la trama.
¿Cómo retengo todos los datos de atributos al recortar dos polígonos en R?
Utilicé esto para recortar un SpatialPointsDataFrame con un archivo de forma SpatialPolygons; crea una versión recortada / recortada de SpatialPointsDataFrame, manteniendo los datos originales.
fuente