関心領域をカバーするためにシェープファイルからポリゴンの最小数を決定します


10

衛星画像のさまざまなソース(IKONOS、RapidEyeなど)を使用して実行される分析の対象領域を表す多数のシェープファイルがあります。残念ながら、画像ではたとえばLandsatのようなパスローシステムを使用していないため、範囲は大きく異なります。

さまざまな画像取得の範囲を表すシェープファイルを各AOIにクリップしましたが、すべて受け入れ可能と見なされています。これらのシェープファイルの一部には、500以上のポリゴンがあります。

関心のある各領域をカバーするポリゴンの最小数を決定するために、できれば自動化できるアプローチ(PythonとArcInfo 10、できればFOSSも受け入れられる)を見つける必要があります。


3
一般的に、これはNPのハード問題であるため、強力なソフトウェアが必要になる可能性があります。1つのアプローチは、それを整数線形プログラムとしてフレーム化することです。ポリゴンはAOIを「アトミック」ポリゴンに分解し、元の各ポリゴンは各アトミックポリゴンを完全にカバーするか、カバーしません。この情報はバイナリベクトルでエンコードできます。各コンポーネントで合計が1以上のベクトルの数を最小限に抑えるように努めます。同様の問題を解決する方法の実際の例は、mathematica.stackexchange.com / a / 6888およびgis.stackexchange.com/a/27678にあります。
whuber

回答:


3

whuberが指摘したように、高品質のソリューションを見つけるためにこのタイプの問題を一般化するのは難しいでしょうが、このアプローチでは、多くの作業をせずに十分に近づくことができます。以下は、以下の仮定に基づくいくつかの疑似コードです。

  1. 関心領域A
  2. Aを完全にカバーするポリゴンYのセット

    Start loop
     Iterate through Y
       Select the polygon x from Y that has greatest area of intersection with A
    
     Clip A with polygon x
     Remove x from Y 
     If A is null then end program
    

アイデアは、残りの関心領域とのオーバーラップが最も大きい衛星範囲で関心領域を繰り返し減少させることです。AOIは、何もなくなるまで、反復ごとに小さくなります。これはおそらく最適なソリューションではありませんが、合理的であり、かなり高速に実行されるはずです。


0

では、エリアAと、セットYとして定義できる一連の画像範囲を表すエリアAがあります。

これが正しい場合は、さまざまな機能を実行できます。

  1. エリアAによる画像範囲のクリッピング
  2. 範囲ポリゴンと完全に含まれているオプションを使用して場所による選択を実行する

次に、ArcPyとカーソルを使用して空間ジオメトリの並べ替えを行うことにより、それぞれの領域を調べて、自己選択ポリゴンがあるかどうかを判断できます。

この助けを願っています。


1
カーソルの使い方についてもう少し詳しく教えてもらえますか?どういうわけかそれが原因だと思い込んでいましたが、方法論を考案することができませんでした。エリアの上位n個のポリゴンから始めて、残りのポリゴンから完全に含まれているものを削除し、この方法で繰り返し続けることを検討しました。これは出発点かもしれませんが、もちろん、最大の面積を持つこれらのポリゴンは、それほど異なる範囲を持たない場合があります。
チャドホーキンス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.