1

Haversine 式を使用して、現在の場所から 1 マイル以内にあるすべてのバス停を見つけようとしています。5500 のバス停の緯度/経度の位置を含む MySQL DB テーブルがあり、次の SQL クエリを使用しています。

"SELECT id, 
( 3959 * acos( cos( radians(37.865971) ) * cos( radians( stopLat ) ) * cos( radians( stopLon ) - radians(-122.283775) ) + sin( radians(37) ) * sin( radians( stopLat ) ) ) ) 
AS distance FROM stops HAVING distance < 1 ORDER BY distance";`"

stopsDB テーブルの名前です。

stopLat緯度がリストされている列の名前です。

stopLon経度がリストされている列の名前です。

私が使用している場所の緯度/経度は 37.865971、-122.283775 です。

私はJavaプログラムからこれをやっています。プログラムは正常に実行ResultSetされますが、入力された場所から 1 マイル以内に 50 以上のバス停があると確信しているにもかかわらず、何も表示されません。

どこが間違っていますか?

編集:1 500 を超える値に変更すると、結果セット全体が返されることに気付きました。さらに、それらはすべて 497 ~ 480 マイル離れていることがわかります。これは、問題が (私が推測したように) 数学、つまりステートメント自体にあることを示しています。

編集 - 解決済み (以下の自分の回答を参照)

4

1 に答える 1