2

私は、地元でアイテムを販売するために作成した Web サイトを持っています。しかし、私は今、小さな問題に遭遇しました! 現在、遠く離れた人々が参加しています。すべてのアイテムを自分からの距離で検索して照らしたり、自分のエリア内のすべてのアイテムを表示したりできるようにしたいと考えています。

私は皆の郵便番号を収集し、それらを緯度経度ではなく東座標と北座標に変換しています。

その場で新しいレコードセットを作成する最良の方法は、距離計算を行ってから距離でソートすることですか、それともサイトでより少ないリソースを使用するより良い方法はありますか?

これが答えです

strSQL = "SELECT *, ( 3959 * acos( cos( radians( " & strMyLat & 
    ") ) * cos( radians(Latitude) ) * cos( radians(Longitude) - radians(" & strMyLng & 
    ") ) + sin( radians( " & strMyLat & 
    ") ) * sin( radians(Latitude) ) ) ) AS distance FROM TABLE WHERE HAVING distance < 3;" '## 3 Miles
4

3 に答える 3

0

あなたの質問に答えるには:

昨年もほぼ同じことをしましたが、緯度/経度を使用しました。そして、距離をリアルタイムで計算しました。距離は単純計算を使用して計算されるため、高速で多くのリソースが使用されません。
Easting および Northing 座標に慣れていないため、最初に DB またはその他の座標系で緯度/経度に永続的に変換する方が速い場合とそうでない場合があります。

ここで、クエリをできるだけ速く実行することに決め、郵便番号の非常に小さなリストを扱っている場合は、2 つの郵便番号間の距離が既に計算されているルックアップ テーブルを作成できます。
ただし、リストが大きくなるほど、これは扱いにくくなります。たとえば、ウィキペディアによると、英国には約 1,700,000 の郵便番号があるため、このようなテーブルにはその 2 乗、つまり 2,890,000,000,000 レコードが必要になります。

幸運を!

Ps 2 つの東座標と北座標の間の距離を求める式は次のとおりです。

d = squareroot(square(E1-E2)+square(N1-N2))/1000  

1000 は、座標がメートル単位であり、km 単位で答えたいと仮定しています。それ以外の場合は、それに応じてこの数を調整してください。

于 2013-01-31T19:51:39.977 に答える
-1

東向きと北向きは、進むべき道ではありません。

最初に座標 (Easting や Northing など) を緯度、経度の 10 進度 WGS84 に変換する必要があります。
これは全世界で使用されている座標系であり、計算を開始できます。

次に、harsine-Distance 式などを使用して、2 つの緯度と経度のペア間の距離を単純に計算します (Google または Wiki を参照)。

于 2013-01-31T19:40:12.683 に答える