無効なポリゴンジオメトリから発生する「TopologyException:Input geom 1 is invalid」自己交差エラーは広く議論されています。しかし、R機能だけに依存する便利な解決策をWeb上で見つけられませんでした。
たとえば、私はここでmap("state", ...)
Josh O'Brienの素敵な答えを次の出力から「SpatialPolygons」オブジェクトを作成することができました。
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)
この広く適用されているデータセットの問題は、以下のポイントで自己交差が発生することです。
rgeos::gIsValid(spydf_states)
[1] FALSE
Warning message:
In RGEOSUnaryPredFunc(spgeom, byid, "rgeos_isvalid") :
Self-intersection at or near point -122.22023214285259 38.060546477866055
残念ながら、この問題は、たとえばを呼び出すときに、 'spydf_states'の使用を妨げますrgeos::gIntersection
。R内からこの問題を解決するにはどうすればよいですか?
plot(spydf_states, xlim=c(-122.1,-122.3),ylim=c(38,38.1))
「一見したところ」ではないことがわかります-自己交差があります。