The GIS Professional Group

ドーナツ ポリゴンの穴を埋めるジオプロセシング ツール

2018/1/9 (火)

穴の空いたポリゴンをドーナツ ポリゴンと呼びますが、この穴を埋めるツールの紹介です。ラスターベクター変換を行うと不要な微小のドーナツ ポリゴンが生成されたので、それらを除外したいと思い作成しました。

はじめに

ArcMap や ArcGIS Pro の標準 GUI では、1フィーチャずつ図形を編集することでドーナツの穴を埋めることはできますが、フィーチャクラス毎に一括でドーナツ ポリゴンの穴を埋めるツールは用意されていません。

ArcObjects を使えばパート(ポリゴンを構成する要素)であるリング(パートのうち輪になっているもの)が外枠(エクステリア)用か内枠(インテリア)用かを判定するメソッドを使って対象リングを見つけて除外することができるのですが、ArcObjects によるジオプロセシング ツールの作成は容易ではありません。

ArcPy ではジオプロセシング ツールを作成しやすい反面、ポリゴンの構成要素であるリングがインテリアかエクステリアか判定できるようなきめ細かいメソッドは用意されていません。一長一短だと思って調べていたところ、ArcPy でも頑張ればインテリア リングの削除ができる方法を紹介している記事がありました(引用)。

その記事を引用して作成したスクリプト ツールがこれです。ドーナツ ポリゴンの穴を除去してくれます。閾値も設定できるので、一定面積以下の穴だけふさぐこともできます。閾値に 0 を指定するとすべての穴をふさぎます。

処理実行前のフィーチャクラス

処理実行後のフィーチャクラス

ダウンロード

参考サイトのコードを元に ArcGIS Pro 2.0 (Python 3.4) で作成したスクリプト ツールです。これからは極力 ArcGIS Pro を使っていきたいという意図です。ZIPファイルをダウンロードして解凍し、ArcGIS Pro の [カタログ] ウィンドウから *.tbx ファイルを参照し、スクリプト ツールを実行してください。コードはツール内に埋め込んだ状態にしていますがパスワード保護はしていないので取り出すこともできます。

なお、*.tbx ファイル自体は ArcMap (Python 2.7) と互換しない(と思う)のですが、コードは共通なので、ArcMap でスクリプト ツールを作成し、以下のコードをそのまま利用することができます。

ソースコード

引用

  • B!