0

バックグラウンド /

現在、100 程度の緯度/経度が Google マップにマッピングされています。目的は、互いに数メートル以内にある La/Lo 値をデータベースから選択することにより、これらのホット スポットの位置を示すことです。

次に、グループ値を使用して中心点を見つけ、ホット スポットのマップ上に円を描きます。

現在のセットアップ /

現在、リクエストしているデータベースには id(int),La(float),Lo(float) しかありません

概念 /

私が「考える」必要があるのはこれです

Select * from table
Group by ( 
          ( La + 0.30 && La - 0.30) &&  ( Lo + 0.30 && Lo - 0.30) 
         )
4

1 に答える 1

0

まず、地球は正方形ではないため、正確な距離を取得するには、harsine 関数を使用する必要があります (調べてください)。ただし、数メートルの距離の場合、精度は問題にならない場合があります。

次に、緯度間の距離は 110.574 から 111.694 km の間で変化し、経度では 111.32 から 0.0 km の間で変化します (極では 0.0 km)。いずれにせよ、0.3 は 0 から 35,000 m の間のどこかです。ホットスポットが北極や南極にない限り、厳密には「少数」ではありません。

第三に、悪い地理を無視すると、手探りしている SQL ステートメントはクロス結合と計算された距離の並べ替えを必要とし、小さなデータ セットの場合でも非常に遅くなります。 . SQL Server にそれらがあることは知っていますし、MySQL にもあるのではないかと思います。

編集

この質問を参照してください。

于 2013-02-06T11:55:30.043 に答える