ArcGIS Desktopを使用してポリゴンを特定のサイズに分割しますか?


26

シェープファイルに不規則な形状のポリゴンが数千あります。各ポリゴンを3つの領域に分割し、それらの領域のサイズを指定できるようにします(合計すると前の領域になります)。これは視覚化のためであるため、サブポリゴンの形状が何であるかは関係ありません。

どうすればこれを行うことができますか?使用できる標準のアルゴリズムはありますか?


私が検討したアプローチの1つは、ポリゴンを構成するすべてのポイントを取得することでした。次に、直線を使用して2つをランダムに結合し、ポリゴンを分割して、領域が十分な許容範囲内にあるかどうかを確認します。小さすぎる場合は、一方向にポイントを変更します。大きすぎる場合は、反対方向のポイントに変更します。

回答:


34

この問題には多くの有効な解決策があります。それらの1つは説明と少し似ていますが、「ランダムな」位置でポリゴンをスライスする代わりに、計算量を最小限に抑えるように意図的にそれを行うことができます。

基本的なアルゴリズムは次のとおりです。 その入力は、任意の平面スイープ方向、非ゼロ領域のポリゴンP、ゼロとポリゴンの領域の間のターゲット領域a、および非負のしきい値t(領域単位)で構成されます。その目的は、分割することであるPを右側領域との間の差と目標領域ように、二つの部分、線の左側に線および他の右への1つに掃引方向にライン垂直でないありますtより大きい。

してみましょうLは掃引方向に対して垂直な任意の指向ラインも。f(L)を、Lの右側にあるPの面積からaを引いものと定義します。これらの用語では、タスクはfのゼロ見つけることです。のでfは微分可能性は低いですが、どちらかの連続使用である二分法、割線法、または-私のfavorite- -Brentの方法。すべてがシンプルで、収束が保証されています。引数の収束許容誤差にtを使用します。

それでおしまい。これをコーディングすることについて考えてみましょう。ルートの発見は日常的であり、汎用のコードチャンクを使用することができます。そのため、GISの作業はfのコーディングになります。そのためには

1.  Splitting the polygon by a line.
2.  Computing the area of the piece(s) to the right of the line.

両方の操作は、ほぼすべてのベクターベースのGISで実装されています。そうでない場合は、線の右側の半平面を表す非常に大きな長方形で線を置き換えることができます。ステップ1は

1'. Clip the polygon to the rectangle.

これは本当に基本的な操作です。

ルート検索を開始するには、fのゼロが存在することが保証されている区間を見つける必要があります。これは簡単です。ポリゴンのエンベロープ(「境界ボックス」)をラインスイープの方向に投影します。投影は、必要な間隔です。

この質問には長い歴史があります。ArcView 3.xにこのアルゴリズムを実装したのはずっと昔で、古いESRIユーザーフォーラムで何度も説明しました。グーグル

huber split polygonサイト:forums.esri.com

ディスカッション、コードへのリンク、拡張機能およびバリエーション(ポリゴンを可能な限りコンパクトな所望のサイズの部分に分割するなど)およびラスターデータのアルゴリズム。

ここに、米国本土の州がどのように見えるか(等面積投影法で)、各州の下部3分の1に影が付けられています。明らかに、掃引方向は垂直でした。

代替テキスト


6

ET Spatialの「GeoTools」と呼ばれる既製のツールがあります。「ET Miscellaneous」というツールがある場所。このツールには、ポリゴンを分割する2種類の方法があります。パーセント別および面積別(複数の単位、たとえば平方メートル、ヘクタールなど)。このツールは、写真が示すように、NESWの4つの側面のいずれかからポリゴンを分割します。私は「上から下」、つまり北から南への方法を使用しました。

スプリット


0

ArcGIS Pro 2.3には、Subdivide Polygonと呼ばれる新しいツールがあります。

これにより、与えられた数のパーツまたは必要なパーツ領域でポリゴンを分割/再分割できます。

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