J'essaie d'intersecter deux SpatialPolygonsDataFrames et d'obtenir un SpatialPolygonsDataFrame comme résultat. Malheureusement, en utilisant la gIntersection
fonction de rgeos
(qui fonctionne de manière impressionnante rapidement pour intersecter les polygones), je n'arrive pas à récupérer les trames de données associées. Prenons l'exemple suivant:
> fracPoly <- gIntersection( toSingle, fromSingle )
> class(toSingle)
[1] "SpatialPolygonsDataFrame"
> class(fromSingle)
[1] "SpatialPolygonsDataFrame"
> class(fracPoly)
[1] "SpatialPolygons"
Je peux écrire une fonction wrapper qui gère le transfert de data.frames
, mais ce sera une douleur mineure de bien vérifier et avant j'espérais que quelqu'un pourrait soit confirmer qu'il n'y a pas de meilleur moyen ou me diriger vers une autre fonction (ou option pour gIntersection
) ce qui me permettrait de conserver les associés data.frames
.
Mise à jour
Après réflexion, cela peut être un comportement très délibéré de la part de gIntersection
. Après tout, des deux SPDF, dont vous transmettez le data.frame? Il se peut donc que je doive écrire un wrapper qui fusionne les deux.
la source
Réponses:
Pour certains projets, j'avais le même besoin. Bien plus que de conserver le
data.frame
, nous avons dû mettre en place un code supplémentaire pour gérer le type de géométrie de sortie, et procéder à un nettoyage (par exemple, nettoyer les collections de géométrie), pour disposer d'un géoprocessus d'intersection complet. Dans le cas où vous devez encore effectuer une telle tâche dans R, vous pouvez essayer le package RFigisGeo :la source
Le comportement de gIntersection est de ne transmettre aucune donnée intersectée par conception:
À ma grande surprise, le package raster a une fonction d' intersection , qui coupe simplement les données et les transmet également.
Les informations complètes que j'ai obtenues à ce sujet: http://r-sig-geo.2731867.n2.nabble.com/Intended-usage-of-gIntersection-td7587120.html
la source
Pour ceux (comme moi) pour lesquels les réponses ci-dessus n'ont pas fonctionné, le lien ici explique que vous pouvez faire cette chose précise avec l'intersection de raster.
Comment conserver toutes les données d'attribut lors de la découpe de deux polygones dans R?
Je l'ai utilisé pour recadrer un SpatialPointsDataFrame avec un fichier de formes SpatialPolygons; il crée une version recadrée / tronquée de SpatialPointsDataFrame, en conservant les données d'origine.
la source