シェープファイルの境界ポリゴンを検出/選択する簡単な方法を探しています。ボーダーポリゴンとは、ここでは他のポリゴンで完全に囲まれていないポリゴン、つまりシェープファイルの周囲にあるポリゴンです(シェープファイルの範囲はポリゴンで完全に覆われています)。以下の例では、目的のポリゴンがシェーディングされています。
Arcgis、QGIS、R、Pythonを使用したソリューションは大歓迎です。
シェープファイルの境界ポリゴンを検出/選択する簡単な方法を探しています。ボーダーポリゴンとは、ここでは他のポリゴンで完全に囲まれていないポリゴン、つまりシェープファイルの周囲にあるポリゴンです(シェープファイルの範囲はポリゴンで完全に覆われています)。以下の例では、目的のポリゴンがシェーディングされています。
Arcgis、QGIS、R、Pythonを使用したソリューションは大歓迎です。
回答:
新しいポリゴンレイヤーを作成し、現在のすべてのポリゴンをカバーする単一のポリゴンを描画し、既存のすべてのポリゴンに基づいて新しく描画されたポリゴンを切り取り、selectを使用して、新しく描画されたポリゴンとラインセグメントを共有する現在のセットからすべてのポリゴンを選択します場所で完了です
---コメントに基づいて編集されたバージョンははるかに効率的です---
すべてのポリゴンを1つにディゾルブしてから、[場所による選択]を使用して、新しくディゾルブされたポリゴンとラインセグメントを共有する現在のセットからすべてのポリゴンを選択すると、完了です
Rを使用:
ShapeFile.Dissolved<-rgeos::gUnionCascaded(ShapeFile)
x<-rgeos::gRelate(ShapeFile, ShapeFile.Dissolved, byid= TRUE)
3つのDE-9IMケースが発生します。
table(x)
2FF10F212 2FF11F212 2FF1FF212
63 2470 174495
結果のDE-9IM文字列コードは、次のように解釈できます。
1)2FF1FF212:2番目のシェープファイルのポリゴンの境界と交差しない最初のシェープファイルのポリゴンを表す
2)2FF11F212:2番目のシェープファイルのポリゴンの境界と線で交差する最初のシェープファイルのポリゴンを表す
3)2FF10F212:2番目のシェープファイルのポリゴンの境界とポイントで交差する最初のシェープファイルのポリゴンを表す
最後の2つのケースは、探していたボーダーポリゴンです。私は彼らのIDを持っています:
poly.border<-which(x %in% c("2FF10F212","2FF11F212"))
Arcmapの場合:
1)「Dissolve_Field」を選択せずにディゾルブ(データ管理)
2)場所で選択します。「元のシェープファイル」からフィーチャを選択し、ソースレイヤー:「ディゾルブされたシェープファイル」、ターゲットレイヤーフィーチャの空間選択方法:ソースレイヤーフィーチャの境界に触れます。
3)編集を開始し、選択した機能を削除します