0

マップ上のさまざまなポイントでさまざまな量の注釈 ( ) と値MKMapViewを含む が与えられた場合、オブジェクトが最も集中しているマップ上の領域を特定するにはどうすればよいでしょうか (おそらく、互いに最も近い 5 ~ 15 個の注釈) ? [mapView annotations]MKMapRectMKMapRectWorldMKAnnotation

シナリオ例:

*コーヒー ファインダー: スターバックスが最も多いマップのエリアを特定します

* K9 統計: マップのどのエリアにコッカー スパニエルが最も多いかを判断します


「領域」は、設定された矩形サイズまたは注釈のブロックによって決定される可能性がありますが、私は必ずしも気にしません。ご協力いただきありがとうございます!

4

1 に答える 1

2

関連する質問が役に立ちます。

K-means_algorithmも見て ください

K-means_algorithm

N 個の注釈があり、K 個のパーツに分割したい場合は、K 平均アルゴリズムを使用して、K 個の各パーツの中心 (特定の基準を満たす。たとえば、クラスター内の平方和を最小化する) を見つけることができます。中心にあると、中心と中心から最も遠い注釈との間の距離がわかり、関心のある領域の半径が得られます。K-means_algorithm にはいくつかのバリエーションがあり、パフォーマンスと実装の容易さに基づいていずれかを選択できます。

編集:私は以下を実装していませんが、間違いなく解決策の1つを与えると思います

範囲 5 ~ 10 で問題ない場合は、複数のソリューションが存在する可能性があります。そこで、解決策の 1 つを見つけます。

1- (N=100) 個の注釈があり、そのうちのどれ (P =15) が最も密集して配置されているかを知りたいとします。

2- 次に、N 個の注釈を K = N/P グループ (ここでは K = 7) にランダムに分割します

3- K-means アルゴリズムを使用して、最終的に K 個のグループを個別のエンティティとして区別できるようにします。

4- これらの K グループには、最小の「クラスタ内平方和」のプロパティがあります。

5-計算時間を節約したい場合は、最も集中したグループの定義を、それらによって囲まれた領域ではなく、最小の「クラスター内の平方和」として緩和できます。

6- 得られた K グループから、基準を満たすグループを選択します。

7-最小面積(最大濃度)の定義に固執したい場合は、多くの計算を行う必要があります

を。最初に、特定のグループの境界注釈を決定します。これは、それ自体が大きな問題です。

b. 各ポリゴンのアールを計算し、どれが最小かを確認します。複雑ではありませんが、計算が必要です)

EDIT2:

私はできる限りのことを試みましたが、最終的にこの質問は専門の数学のウェブサイトに属していると思いました. 私はあなたの質問をここで尋ねました.答えから、この問題と解決策について議論している論文をここで入手でき ます. 彼らが議論している問題は N 個の点が与えられ、凸包の面積が最小になる K 個の点を見つけます。

于 2012-01-24T08:38:40.553 に答える