ポイントを囲むポリゴンを見つけるアルゴリズム


8

私はいくつかのポイントをカバーするために可能な限り最小のポリゴンを決定できるアルゴリズムを見つけようとしています。

すべてのポイントの周りに凸包を取得する方法を知っていますが、ポイントが異なるアイランドにあると言いますが、異なるグループ間にギャップがあると判断し、グループごとに個別のポリゴンを取得できますか?


答えは、必要なポリゴンは1つだけであることです。その面積は任意にゼロに近づけることができます。そしてそれは決してユニークではありません。(解を見つける1つの方法:元のセットのすべての点が見える平面上に点が存在します。この点から指定された各点まで順に自己交差しないルートをトレースし、非常に狭い光線です。)これは、問題が完全に記述されていないことを示しています。分析目的について、より明確で完全な記述が必要です。
whuber

回答:


9

最初にクラスタリングアルゴリズム(例:K平均クラスタリング)が必要で、次にハル(凸包ですが、凹型ハルの面積は小さいが実装が難しい)が必要なようです。



3

ジオタグ付きの写真から派生したシェープファイルを生成するためにFlickrで(d)使用する「Clustr」ツールは、役に立つかもしれません。

https://github.com/straup/Clustr

(Stackexchangeのおかげで、この投稿に2つを超えるリンクを追加できません。「the shape of alpha」を検索すると、シェープファイルの発表時に行ったcode.flickrブログの投稿を見つけることができます。)

それは、絶えず変化する点のバッグ(別名写真)から輪郭を生成しようとするように設計されました。実際のmath-yビットは次のとおりです。

http://www.cgal.org/Manual/3.2/doc_html/cgal_manual/Alpha_shapes_3/Chapter_main.html

Clustrには既知のバグがいくつかありますが、ほとんどの場合、ほとんどの場合は機能します...


2

データベースの観点からは、島のポイントをグループ化し、各グループに凸包を作成するように聞こえます。

postgisでは、次のようになります。

SELECT ST_Convexhull(ST_Collect(p.the_geom))
FROM pointtable p INNER JOIN islands i ON ST_Intersects(p.the_geom,i.the_geom)
GROUP BY i.id;

/ニクラス


最初の質問でははっきりしていなかったと思います。ポイントは、ポイントがどこにあるかわからないが、別の場所にあるため、定義された領域に移動するのではなく、ポイントが存在するクラスターを動的に作成するアルゴリズムが必要でした。k平均クラスタリングアルゴリズムを変更して、データセットでクラスターの重心を検索してからクラスター化しました。
jjrdk

あなたは島々がどこにあるのか分からないということですか?島のベクトル表現はありません。しかし、「動かさない」とはどういう意味ですか。私は何かを移動することを提案しませんでしたか?..
ニクラスアベン2011

グループ(島)がどこに配置されるかわかりません。ポイントの場所によって異なります。そこで、ポイントの位置を囲む最小のポリゴンを見つけようとしています。移動とは、k平均クラスタリングと同様に、定義されたクラスタ数のクラスタリングポイントを意味しました。
jjrdk

1

arcpy.AggregatePoints_cartography(pntGeometryList、outAppendFeatureClass、buffer_radius)

pntGeometryListがポイントのリストである場合、outAppendFeatureClassは、アグリゲーションが作成するフィーチャクラスと、「外部に面している」各ポイント間のリンクを決定するbuffer_radiusです。


申し訳ありませんが、私は読んでいない残りの質問を受け取りました。
毛深い

ポイントをどのように照合しますか?
毛深い

1

最初はDanのk-meansの提案は理にかなっていると思いましたが、wikipediaページでk-meansのマウスデータセットの結果を見ると、期待値-最大化クラスタリングは希望に近いようです。

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


1
あなたの答えをありがとう、私は実際に先に進んで、最大距離でクラスタリングするk-meansアルゴリズムの修正バージョンを作成しました。私はここでそれについてブログ- reimers.dk/blogs/jacob_reimers_weblog/archive/2011/03/08/...
jjrdk

素晴らしく見える。EMの実装は確かに難しいと思います。このTPLを使用し、コードがSilverlightで機能するかどうかを確認するのは興味深いことです。
Kirk Kuykendall
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.