Sto cercando di eseguire un'unione su un campo comune dopo aver unito due shapefile adiacenti. Gli shapefile finiscono con almeno un sottile frammento di spazio tra loro. Quando provo un'unione ottengo il seguente errore di foro orfano:
Errore in createPolygonsComment (p): rgeos_PolyCreateComment: foro orfano, impossibile trovare il poligono contenente per il foro all'indice 17
Ho caricato un esempio riproducibile su Dropbox a questo link .
Ecco il codice per ricreare il problema:
#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)
Ritorna:
Errore in createPolygonsComment (p): rgeos_PolyCreateComment: foro orfano, impossibile trovare il poligono contenente per il foro all'indice 17
Provando la correzione proposta qui e qui :
slot(example, "polygons") <- lapply(slot(example, "polygons"), checkPolygonsHoles)
Questo restituisce lo stesso errore che proviene dal tentativo di unione ma con un numero di indice diverso:
rgeos_PolyCreateComment: foro orfano, impossibile trovare il poligono contenente il foro all'indice 30
Provare la correzione proposta nel tutorial utile di Roger Bivand
fix <- slot(example, "polygons")
fixa <- lapply(fix, checkPolygonsHoles)
Restituisce lo stesso errore sull'indice 30 come sopra.
Altri hanno sollevato questo problema qui e qui , e mentre le soluzioni sopra indicate sembrano funzionare in alcuni casi, altri non vengono risolti. Un utente ha utilizzato QGIS per risolvere il problema e l'altro ha risolto 2 degli 3 elementi, ma nessuna risoluzione per quello finale.
Sembra che le persone continuino ad avere problemi nonostante questo codice funzioni di tanto in tanto. Qualcuno ha trovato una soluzione all'interno di R?
Ho eseguito lo strumento "Ripara geometria" in ArcGIS e il problema è stato corretto, ma sembra che ci dovrebbe essere una correzione in R.