2つの隣接するシェープファイルをマージした後、共通フィールドでユニオンを実行しようとしています。シェープファイルは、それらの間に少なくとも1つの薄いスライバーで終わります。ユニオンを試行すると、次の孤立したホールエラーが発生します。
createPolygonsComment(p)のエラー:rgeos_PolyCreateComment:孤立した穴、インデックス17の穴に含まれるポリゴンが見つかりません
このリンクで Dropboxに再現可能な例をアップロードしました。
問題を再現するコードは次のとおりです。
#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)
戻り値:
createPolygonsComment(p)のエラー:rgeos_PolyCreateComment:孤立した穴、インデックス17の穴に含まれるポリゴンが見つかりません
slot(example, "polygons") <- lapply(slot(example, "polygons"), checkPolygonsHoles)
これは、ユニオンの試行と同じエラーを返しますが、インデックス番号が異なります。
rgeos_PolyCreateComment:孤立した穴、インデックス30の穴に含まれるポリゴンが見つかりません
Roger Bivandの役立つチュートリアルで提案されている修正を試してみる
fix <- slot(example, "polygons")
fixa <- lapply(fix, checkPolygonsHoles)
インデックス30で上記と同じエラーを返します。
他の人がこの問題をこことここで提起しており、上記の解決策はいくつかのケースで機能するように見えますが、他のケースは解決されません。1人のユーザーはQGISを使用して問題に対処し、もう1人のユーザーは3つのアイテムのうち2つを修正しましたが、最終的なアイテムの解決策はありませんでした。
このコードが時々機能しているにもかかわらず、人々は引き続き問題を抱えているようです。誰かがR内で解決策を見つけましたか?
ArcGISで「ジオメトリの修復」ツールを実行し、問題を修正しましたが、Rに修正が必要なようです。