3

特定の GPS 位置から見つけるための Java プログラムを作成する必要がありますP。(GPS 位置のセットからの) GPS 位置の最も近いセット (2 つの位置) は GPS 位置です。状況は図に示されています。ここでマークされているすべての位置は GPS 位置です。指定された位置から、この場合Pは最も近いポイントのセットを見つけたいと思います。P(B,C)

ここでマークされているすべての位置は GPS 位置です。 指定された位置 P から、P に最も近い点のセットを見つけたいと思います。この場合は (B,C)

誰かがこれに関連するアルゴリズムまたはコード スニップネットを共有できれば、非常に役に立ちます。

4

4 に答える 4

4

P と他のすべての点の間の距離を計算してから、最小値を取得する必要があります。それは明らかな部分でした。

難しいのは、2 つの GPS 座標間の距離を計算することです。GPS は、WGS84 測地線システムを使用して、地球上のポイントを表します。球面上の距離を計算する方法もいくつかあります (航路距離と大圏距離が主な方法です)。ユークリッド距離
は、緯度がゼロでない場合、緯度 1° < 経度 1° であるため、球体上では常に偽です (近くにさえありません) 。あなたのためにそれをします。

GDAL を使用して、他の測地系のポイント表現を変換できます。たとえば、平面測地系にポイントを投影し、(x、y、z) 座標を使用して、距離を計算できます (または、距離の 2 乗 = x²+y²+z²)。

GoogleマップAPIは、たまたますでに使用している場合、GPS座標の使いやすい距離メソッドを提供すると思います。

于 2013-09-12T13:36:48.303 に答える
2

ポイントをリストに保存してから、隣接するポイントまたは最小距離ポイントを見つけます。

この投稿はあなたに役立つかもしれません。

于 2013-09-12T13:38:08.237 に答える
1

アルゴリズムの実装を探している場合は、R-Trees を調べてください。これらは、ポイントまたはバウンディング ボックス タイプの検索を探すのに適した方法です。

R-Tree アルゴリズムを実装した、私にとってうまく機能する、しばらくの間使用してきた優れたライブラリがあります。JSI、Java Spatial Index ( http://jsi.sourceforge.net/ ) を確認してください。

API の探索はあなたに任せます。幸運を!

于 2013-09-12T13:29:47.990 に答える
1

データから四分木を作成することを検討するかもしれません。これは、2 次元の空間データを表す方法であり、log(n) 時間で最近傍検索を簡単に行うことができます。ツリーの構築は nlog(n) ですが、構築と最近傍を考慮する必要がある場合は、nlog(n) の複雑さがあります。

四分木 (kd 木の 2 次元バージョン) の最近傍アルゴリズムを見つけるのは難しくありません。ウィキはここでそれの一般的な概要を提供します

これを他の次元数に拡張する必要がある場合は、KD Treesを参照してください。

編集:クアッドツリーを構築する必要がある場合は、他のすべてのポイントをループして距離を見つけ、最小の 2 を追跡する方が高速であることがわかりました。距離は、三角形とピタゴラスの定理を思い出してください。

于 2013-09-12T13:30:45.540 に答える