シェープファイルの境界ポリゴンを検​​出/選択する簡単な方法


8

シェープファイルの境界ポリゴンを検​​出/選択する簡単な方法を探しています。ボーダーポリゴンとは、ここでは他のポリゴンで完全に囲まれていないポリゴン、つまりシェープファイルの周囲にあるポリゴンです(シェープファイルの範囲はポリゴンで完全に覆われています)。以下の例では、目的のポリゴンがシェーディングされています。

境界ポリゴン

Arcgis、QGIS、R、Pythonを使用したソリューションは大歓迎です。


1
境界線は常にその長方形のような素敵な規則的な形ですか?ところで:その最後の文は少し厳しいものとして出くわします。
BradHards 2013年

いいえ。国境は不規則です。そのようなマスクやスムスによる抽出は理想的ではないと思います。注意:最後の文は修正されました。
DJack 2013年

回答:


7

新しいポリゴンレイヤーを作成し、現在のすべてのポリゴンをカバーする単一のポリゴンを描画し、既存のすべてのポリゴンに基づいて新しく描画されたポリゴンを切り取り、selectを使用して、新しく描画されたポリゴンとラインセグメントを共有する現在のセットからすべてのポリゴンを選択します場所で完了です


---コメントに基づいて編集されたバージョンははるかに効率的です---

すべてのポリゴンを1つにディゾルブしてから、[場所による選択]を使用して、新しくディゾルブされたポリゴンとラインセグメントを共有する現在のセットからすべてのポリゴンを選択すると、完了です


2
わかりました。しかし、ポリゴンを描く代わりに、すべてのポリゴンをディゾルブして、1つだけを取得します。描画よりもはるかに効率的です。THX。
DJack 2013年

1
はい、正解です。はるかに効率的です。)
Hedinn 2013年

2

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)編集を開始し、選択した機能を削除します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.