Se ha detectado la "TopologyException: Input geom 1 is invalid' error de auto-intersección que surge de geometrías de polígonos no válidas ha sido ampliamente discutido. Sin embargo, no he encontrado una solución conveniente en la web que se base únicamente en la funcionalidad de R.
Por ejemplo, he conseguido crear un objeto 'SpatialPolygons' a partir de la salida de map("state", ...)
tras la bonita respuesta de Josh O'Brien aquí .
library(maps)
library(maptools)
map_states = map("state", fill = TRUE, plot = FALSE)
IDs = sapply(strsplit(map_states$names, ":"), "[[", 1)
spydf_states = map2SpatialPolygons(map_states, IDs = IDs, proj4string = CRS("+init=epsg:4326"))
plot(spydf_states)
El problema de este conjunto de datos ampliamente aplicado es que ahora la autointersección se produce en el punto indicado a continuación.
rgeos::gIsValid(spydf_states)
[1] FALSE
Warning message:
In RGEOSUnaryPredFunc(spgeom, byid, "rgeos_isvalid") :
Self-intersection at or near point -122.22023214285259 38.060546477866055
Lamentablemente, este problema impide cualquier otro uso de 'spydf_states', por ejemplo, al llamar a rgeos::gIntersection
. ¿Cómo puedo resolver este problema desde R?