重複ポリゴンアルゴリズムを見つける


8

ポリゴンのグループがあります。私の目的は、これらのポリゴンのグループから重複するポリゴンを見つけることです。

NetTopologySuite(JTSのc#ポート)を使用すると、2つのgeometireを比較して、それらが等しいかどうかを確認できます。力ずくの方法(各ポリゴンを他のすべてのポリゴンに対してチェックする)が頭に浮かぶ唯一のアイデアですが、ポリゴンの数が多い場合は使えません。この場合、ブルートフォースを改善するアルゴリズムはありますか?

私 が探しているものへのアイデアが含まれているように見えるこのスクリプトを見つけました(コメントは分割統治アプローチを示していますが、コメントの詳細はあまりありません)。しかし、私はそれから何も得ることができないと認めなければなりません:) ..それは私がよく知らないArcViewのために行われました。

注:この質問のように、PostGIS /データベースソリューションを探していません。カスタマイズ(c#、c ++、pythonなど)を通じてAutoCAD、Quantum GIS、またはそのようなデスクトップGIS製品に統合できるものを探しています。


1
toblerity.github.com/rtreeのようなものを使用した変更が非常に役立つと思います。空間インデックスを作成し、インデックスの作成中に重複がないか確認する
Peter Smith

@PeterSmith-これは素晴らしいアイデアだと思います!あなたが..私はNetTopologySuiteがRTREEが内蔵されていると思います答えとしてこれを追加しない..why ..掘るする必要があります
ビナヤン

回答:


4

ポリゴンが完全に同一で、面積を計算する簡単な方法がある場合は、各ポリゴンの面積を計算し、面積で並べ替え、面積が一致するポリゴンのみをチェックします。このアイデアの変形は、ポリゴンをそれらの最北のポイントの座標で並べ替えることです(最東のタイポイントを選択することでタイを壊します)。最も北のポイントが一致するポリゴンのみをチェックします。ポリゴンが十分に異なる場合は、ポイントの数で並べ替えます。

私は続けることができますが、あなたは考えを理解します。


奴隷、このアイデアは、他のGISソフトウェアやAPIがなくても、かなりシンプルで簡単に見えます。
vadivelan 2012

1

チェックするジオメトリオブジェクトが同一である場合は、キーがジオメトリで、値がオブジェクト識別子であるジオメトリのディクショナリを作成してみてください。

リストを1回通過し、各オブジェクトのディクショナリに値を追加します。追加する前にキーが存在するかどうかを確認します。ジオメトリが重複している場合は通知されます。その時点で、ループに飛び込んで問題を修正します。これにより、オブジェクトを1回通過するはずです。


私はわからない、それはwork..Iはそれを試してみると、戻ってくるだろうinteresting..butそれは...非常に見える
ビナヤン

0

たくさん読んだ後、私は空間インデックスが必要なものであるという結論に達しました。@Peterスミスのコメントは私がに見せていたRTREE

RTreeのWiki定義

Rツリーは、空間アクセスメソッド、つまり地理座標、長方形、ポリゴンなどの多次元情報のインデックス作成に使用されるツリーデータ構造です。

そこで、NetTopologySuiteでインデックスを作成し、各機能のエンベロープを使用してインデックスをクエリしました。したがって、比較は非常に少数の機能に限定されていました。

NTSを使用してどのように行われたかは、この回答で説明されています

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