1

残念ながら、数学は私の強みではありませんでした。私は次のことを行うための最良のアプローチ/式に苦労しています(これをPHPコードに変換する必要があります)。

1)。単一の広いエリアから始めます(たとえば、ヨーロッパ全体をカバーします)

2)。この領域を一連の小さなブロックに分割します(つまり、ある種のグリッドに変換します)

3)。各グリッドブロックの幅は、およそ75kmの距離に対応する必要があります(地球の曲率を考慮に入れて)。

4)。各グリッドブロックの中央の緯度/経度ポイントを計算します

5)。各グリッドブロックの中心点について、緯度/経度のポイント(関心のある場所を表す)の個別のデータベースに対して検索を実行し、各グリッドブロックに最も近い最大5つの関心のあるポイントを見つけます。最も遠いスポットは、グリッドブロックの中心から150km以内にある必要があります。

上記のすべてが完了したら、グリッドブロックとそれに対応する5つの最も近い関心のある場所のデータベースを作成する必要があります。

私の望みは、ランダムな緯度/経度のポイントを取得し、それが含まれる事前計算されたグリッドブロックを(効率的な数式を使用して)計算できるようにして、5つの最も近い関心のあるポイントをすぐに返すことができるようにすることです。高価なコンピューティングを行います。

[注:以下のHighPerformanceMarkの有益な回答に基づいて明確にするために編集]

4

1 に答える 1

1

最善の策は、UTMなどの領域をグリッド化するための既存のアプローチを使用するか、その例に従うことだと思います。あなたはあなたの数学が弱いことを認めているので、使用することはおそらくこの段階であなたのより良いアプローチです。

UTMはあなたに1と2を与えます。

ヨーロッパほど広いエリアで3を与えるものはありません。合計すると正方形になる75kmの正方形の配列を定義することはできません。地球は、このような広い領域で十分に平坦ではありません。

UTMはあなたに4を与えます。

このすべてに頭を悩ませたら、5でそれほど問題になることはないはずですが、そこに着いて問題が発生したときに別の質問を投稿してください。

編集

ポイント3を拡張します。関心のあるエリアの中間緯度、つまり関心のあるエリアの北限と南限の中間の緯度(角距離)を見つけることをお勧めします。次に、Googleは、経度の長さをその緯度でkmに変換する式を探します。その中緯度に沿った75km間隔の垂直線が、グリッドの基礎になります。これらの線は、角距離で等間隔に配置されます。

次に、関心のある領域の北限と南限でのこれらの垂直線間の距離(km単位)を計算します。同じ式です。線形測定値がまだ柔軟性の範囲内にある場合は、このステップを完了しています。そうでない場合は、(a)驚いて、(b)トリッキーな数学とプログラミングに取り組む必要があります。

次に、中緯度を念頭に置いて、その緯度で75km(緯度)に一致する角度測定値を計算します。これにより、2本の水平(つまり赤道に平行)のグリッド線が得られます。緯度75kmのラジアンでの測定は、緯度の変化に伴う経度の線形測定よりもはるかに変動が少ないため、同じ角度測定で他の正方形をマークすることはおそらく問題ありません。

于 2012-05-14T13:50:29.987 に答える