'TopologyException: Input geom 1 tidak valid' kesalahan persimpangan sendiri yang timbul dari geometri poligon tidak valid telah banyak dibahas. Namun, saya belum menemukan solusi yang mudah di web yang hanya mengandalkan fungsionalitas R.
Sebagai contoh, saya telah berhasil membuat objek 'SpatialPolygons' dari hasil map("state", ...)
mengikuti jawaban bagus Josh O'Brien di sini .
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)
Masalah dengan dataset yang diterapkan secara luas ini sekarang adalah persimpangan-sendiri terjadi pada titik yang diberikan di bawah ini.
rgeos::gIsValid(spydf_states)
[1] FALSE
Warning message:
In RGEOSUnaryPredFunc(spgeom, byid, "rgeos_isvalid") :
Self-intersection at or near point -122.22023214285259 38.060546477866055
Sayangnya, masalah ini mencegah penggunaan lebih lanjut dari 'spydf_states', misalnya saat menelepon rgeos::gIntersection
. Bagaimana saya bisa mengatasi masalah ini dari dalam R?
plot(spydf_states, xlim=c(-122.1,-122.3),ylim=c(38,38.1))
Anda akan melihat tidak ada "tampaknya" tentang hal itu - ada persimpangan diri.