0

私はジオコードに非常に慣れておらず、目標を達成するために必要なものがあるかどうかわからないので、ご容赦ください.

ユーザーにメルボルン市の郊外を選択してもらいたい。彼らが郊外を選択するとき、選択した郊外から 1 マイル以内の周辺の郊外を表示したいと考えています。したがって、私のデータベース テーブルは次のようになります。

郊外 ラットロング フィッツ
ロイ 37° 47' S / 144° 58' E

コリングウッド 37° 48' S / 144° 59' E

アボッツフォード 37° 48' S / 144° 59' E

クリフトン・ヒル 37° 47' S / 144° 59' E

フィッツロイ北 37° 47' S / 144° 59' E

カールトン 37° 48' S / 144° 58' E

ユーザーが郊外として FITZROY を選択したとします。これらは、半径 1 マイル以内の郊外の一部だと思います。

私の問題は、LattLong フィールドのデータを理解できないことです。これは私の計算を行うのに十分なデータですか?

MySQL データベースから 1 マイル以内の郊外を選択する方法を示す例はありますか?

これを支援するためにGoogleでどこから始めればよいかわかりません。そのため、ガイダンスをいただければ幸いです。

敬具、ジョン

4

1 に答える 1

0

緯度と経度を 10 進数に変換すると、データベース内の地理データを操作したり、数式を使用したりするのがはるかに簡単になります。これにより、「80.012345」のような数値が得られます。次に、2 つの数値の単純な差に基づいてクエリを作成できます。たとえば、2 つの緯度と経度の差が 10 進度で 0.02 未満であるクエリを作成します。

Google 10 進度で詳細を確認し、変換方法を取得してください。これは単純な式です。E、W、N、および S も使用して、10 進数を正または負として割り当てる必要があります。

あなたの場合、データは数分しかありません。たとえば、あなたが持っているものを変換するには、144° 58' E = 144 + 58/60. 58/60 = 0.9666666666... ただし、有効数字は 2 桁しかありません。58 は 2 桁、60 は 2 桁です。したがって、結果は 144.97 です。簡単に言うと、1 マイルは赤道で約 0.02 度です。したがって、小数点以下第 2 位までの精度が必要ですが、この同じ小数点以下を丸めています。したがって、必要な解像度は、使用している数値の精度の限界に達しています。

残念ながら、いいえ。現実的には、妥当な精度で 1 マイル以内にあるものを見つけるには、少なくとも 10 進数の精度が必要です。したがって、分に加えて秒の経度と緯度が必要です。

于 2011-05-21T20:11:35.443 に答える