ArcGIS Desktopを使用してポリゴンからドーナツホールのみを削除しますか?


15

ArcGIS Desktop 10.0を使用しています。

ドーナツの穴を削除するトリックがあります。これは、多角形を線に変換し、線から多角形を作成し、最終的にすべてを結合することです。この戦略の欠点は、実際には空であり、空のままにしておくべき他の穴や空の領域を削除することです。下の画像を参照してください:

ここに画像の説明を入力してください


3
OPがすべてではなく一部のドーナツを削除しようとしていると思うので、この質問を開いたままにしておくことに投票しました。彼はそれらのいくつかを保持する方法を探しています。
フェスター

ありがとう!私はイメージを追加しました、それがすべてを明らかにすることを望みます。私は偶然メインポリゴン(緑色のポリゴン自体)を削除する可能性があるため、すべてを結合する前に、先に進んでより大きな領域を削除することはできません。
Arash

1
レイヤーから小さな「塩と胡pepper」ポリゴンを削除する方法に非常に似ていますか?、ただしQGISプロセスを使用します。ArcGISで非常によく似たプロセスを使用できます。
RyanKDalton 14


回答:


23

NO_GAPSでUnionツールを試してみます。

NO_GAPS —ポリゴンで完全に囲まれた出力内の領域に対してフィーチャが作成されます。この機能の属性は空白になります。

次に、しきい値サイズ未満の空白の属性を持つフィーチャを選択し、それらの属性を元のポリゴンと同じになるように計算するか、エディタの属性ウィンドウでそれらをコピーして貼り付けることができます。

しきい値サイズを超える空白の属性を持つフィーチャは削除する必要があります。

そこからDissolveツールがジョブを完了するはずです。


1
「[新しいドーナツポリ]を元の[含む]ポリゴンと同じように計算する」方法は?共通の属性値はないため、結合できません。アイランドポリCは、ポリA湖から(それを含む)新しい属性値を取得し、ポリB湖を(他の場所で)無視する必要があることをどのように知っていますか?
マットウィルキー

最近のテストは行っていませんが、「新しいドーナツポリ」は「元の[含む]ポリゴン」です。一括で処理するこのようなドーナツポリゴンが複数ある場合は、小さな穴にドーナツポリゴンをタグ付けする必要があります。
PolyGeo

7

PolyGeoのソリューションは、私が自分で採用したものであり、うまく機能しています(+1)。別の方法としては、ポリゴンを少量バッファリングしてから、結果を同じ量だけバッファリング解除します(+ 1m、-1mなど)。これもうまく機能しますが、バッファと同じ量だけ隣接するポリゴンを誤って結合するリスクがわずかにあります。また、頂点数を増やすこともできます(問題になる場合もあれば、そうでない場合もあります)。

また、各ポリゴンを反復処理し、内部リングに基づいて一時的なポリゴンを作成し、それらの領域についてこれらをテストすることにより、堅牢なソリューションのスクリプトを作成することもできます。しきい値を下回っている場合は、ジオメトリからその内部リングを削除して、行を更新します。このソリューションは、PolyGeoのソリューションまたは上記のバッファーハックよりも多くの作業がありますが、おそらく「より純粋な」アプローチです。


5

ArcToolboxの[ポリゴンパーツの削除]ツール(データ管理ツール->一般化)を使用できます。削除する最小穴面積/割合を指定できます。


1
ただし、この機能にはAdvanced / ArcInfoライセンスレベルが必要です。
マーティン14

ArcGIS Pro 2.0で、ポリゴンパーツの削除ツールを試しました。しかし、私がテストしていたポリゴンフィーチャには何もしませんでした。この機能には複数の内部リングがあり、それらをすべて削除したいです。このツールは、フィーチャがマルチパートジオメトリで構成されている場合にのみ機能しますか?
マイクフィンチ

「唯一」ではありません。穴のある単一のポリゴンも機能します。
カディールŞahbaz18年

3

次に、ポリゴンから湖を削除する別の方法を示します(Navteqの郵便番号マップレイヤーなど)。これは、テリトリーコードによって郵便番号マップレイヤーをディゾルブすることによって生成されたテリトリーマップレイヤーをクリーンアップするのにも役立ちます。

  1. ポリゴンマップレイヤーでジオプロセシング「ユニオン」を使用し、「ギャップを許可」のチェックボックスをオフにします(これはデフォルトでチェックされています)。これにより、ポリゴンのすべての「ドーナツ」ホールのポリゴンが作成されます。
  2. 結果のユニオンマップレイヤーで、ID、X、およびYのフィールドを追加します。IDは、削除するドーナツホールのあるポリゴンの名前/ IDとは別にする必要があります。
  3. 属性テーブルで、フィールド計算機を使用してObjectIDフィールドからIDを計算し、「ジオメトリの計算」を使用してX値とY値を入力します。
  4. 名前フィールドがnullである(属性で選択)を選択して、ドーナツポリゴンを他のポリゴンから分離します。
  5. 選択したレコードを新しいテーブルにエクスポートします。(テーブルオプションドロップダウン->エクスポート...)
  6. [XYの追加]オプションを使用して、イベントレイヤーを作成します。(右クリックレイヤー-> XYデータの表示...
  7. イベントレイヤーを新しいフィーチャクラスにエクスポートします。(レイヤーを右クリック->データ->データのエクスポート)
  8. 新しいポイントレイヤーとドーナツポリゴンを持たないORIGINALポリゴンマップレイヤーの間で空間結合を行います。周囲のポリゴンの名前がドーナツポリゴンの属性テーブルに追加されるように、「最も近い」オプションを使用します。
  9. 結合されたポイントレイヤーとUnionからの結果のマップレイヤー(IDフィールドに基づく)の間で標準のテーブル結合を使用します。(右クリックレイヤー->結合とリレート->結合->空間位置に基づいて別のレイヤーからデータを結合)
  10. 属性テーブルのフィールド計算機を使用して、結合ポイントレイヤーからnullポリゴン名を計算します。
  11. ポリゴン名に基づいてジオプロセシングの「ディゾルブ」を実行して、ドーナツポリゴンをより大きな名前のポリゴンにマージします。

これにより、ポリゴンのアウトラインに切り込まれた川の問題は修正されませんが、内側のドーナツホールを削除することで元のマップレイヤーが改善されることに注意してください。


2

フィーチャクラスのポリゴンに同じフィーチャクラスの他のポリゴン(南アフリカ共和国内のレソトなど)が含まれており、ModelBuilderなどを使用して手動編集を排除する必要がある場合、「ポリゴンパーツの削除」を使用するのが最も簡単なソリューションです。ツール設定:

-"条件(オプション)" =エリア-"エリア(オプション)" =非常に大きな数(1e + 100など)-"含まれるパーツのみを削除する(オプション)" = [チェック済み]

これにより、Tableauのポリゴンビジュアルで使用する頂点を出力するなどのワークフローに不可欠な、レソトの領域が埋められた南アフリカが生成されます。


0

今のところ言及されていないため、あなたが達成しようとしているものにぴったりのツールであると思われます: 集約ポリゴン

minimum_hole_sizeを、保持するポリゴンホールの最小サイズに設定します。小さいものは削除されます。

同じツールのオプションのminimum_area値は、穴ではないポリゴンパーツでも同じです。

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