J'essaie d'effectuer une union sur un champ commun après avoir fusionné deux fichiers de formes adjacents. Les fichiers de formes se retrouvent avec au moins un mince ruban d'espace entre eux. Lorsque je tente une union, j'obtiens l'erreur de trou orphelin suivante:
Erreur dans createPolygonsComment (p): rgeos_PolyCreateComment: trou orphelin, impossible de trouver le polygone contenant le trou pour l'index 17
J'ai téléchargé un exemple reproductible sur Dropbox à ce lien .
Voici le code pour recréer le problème:
#loading required packages
require(sp)
require(rgdal)
require(maptools)
require(rgeos)
#load example data, set "dsn=" to your working directory or specify the path
example <- readOGR(dsn=".",layer="ReproducibleExample")
#Attempting a UnionSpatialPolygons based on the COUNTY field
example.df <- as(example, "data.frame")
countycol <- example.df$COUNTY
example.diss <- unionSpatialPolygons(example, countycol)
Retour:
Erreur dans createPolygonsComment (p): rgeos_PolyCreateComment: trou orphelin, impossible de trouver le polygone contenant le trou pour l'index 17
Essayer le correctif proposé ici et ici :
slot(example, "polygons") <- lapply(slot(example, "polygons"), checkPolygonsHoles)
Cela renvoie la même erreur qui provient de la tentative d'union mais avec un numéro d'index différent:
rgeos_PolyCreateComment: trou orphelin, impossible de trouver le polygone contenant le trou à l'index 30
Essayer le correctif proposé dans le tutoriel utile de Roger Bivand
fix <- slot(example, "polygons")
fixa <- lapply(fix, checkPolygonsHoles)
Renvoie la même erreur à l'index 30 que ci-dessus.
D'autres ont soulevé ce problème ici et ici , et bien que les solutions proposées ci-dessus semblent fonctionner pour certains cas, d'autres cas ne sont pas résolus. Un utilisateur a utilisé QGIS pour résoudre le problème, et l'autre a eu 2 des 3 éléments corrigés, mais aucune résolution pour le dernier.
Il semble que les gens continuent d'avoir des problèmes malgré le fait que ce code fonctionne de temps en temps. Quelqu'un a-t-il trouvé une solution au sein de R?
J'ai exécuté l'outil "réparer la géométrie" dans ArcGIS, et cela a corrigé le problème, mais il semble qu'il devrait y avoir un correctif dans R.