'TopologyException: Giriş geom 1 geçersiz' geçersiz poligon geometrilerinden kaynaklanan kendi kesişme hatası yaygın olarak tartışıldı. Ancak, web üzerinde yalnızca R işlevselliğine dayanan uygun bir çözüm bulamadım.
Mesela, map("state", ...)
Josh O'Brien'ın buradaki güzel cevabını takip etmenin sonucundan bir 'SpatialPolygons' nesnesi yaratmayı başardım .
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)
Yaygın olarak uygulanan bu veri setiyle ilgili sorun, kendi kendine kesişmenin aşağıda verilen noktada meydana gelmesidir.
rgeos::gIsValid(spydf_states)
[1] FALSE
Warning message:
In RGEOSUnaryPredFunc(spgeom, byid, "rgeos_isvalid") :
Self-intersection at or near point -122.22023214285259 38.060546477866055
Ne yazık ki, bu sorun, örneğin spydf_states 'in örneğin daha fazla kullanılmasını önler rgeos::gIntersection
. Bu sorunu R içinden nasıl çözebilirim?
plot(spydf_states, xlim=c(-122.1,-122.3),ylim=c(38,38.1))
“görünüşte” bir şey olmadığını göreceksiniz - bir kesişme noktası var.