MySQL大圏距離(Haversine式)

ニック・ウッドハム

経度と緯度の値を取得し、それらをMySQLクエリに入力するPHPスクリプトが機能しています。MySQLだけにしたいのですが。これが私の現在のPHPコードです:

if ($distance != "Any" && $customer_zip != "") { //get the great circle distance

    //get the origin zip code info
    $zip_sql = "SELECT * FROM zip_code WHERE zip_code = '$customer_zip'";
    $result = mysql_query($zip_sql);
    $row = mysql_fetch_array($result);
    $origin_lat = $row['lat'];
    $origin_lon = $row['lon'];

    //get the range
    $lat_range = $distance/69.172;
    $lon_range = abs($distance/(cos($details[0]) * 69.172));
    $min_lat = number_format($origin_lat - $lat_range, "4", ".", "");
    $max_lat = number_format($origin_lat + $lat_range, "4", ".", "");
    $min_lon = number_format($origin_lon - $lon_range, "4", ".", "");
    $max_lon = number_format($origin_lon + $lon_range, "4", ".", "");
    $sql .= "lat BETWEEN '$min_lat' AND '$max_lat' AND lon BETWEEN '$min_lon' AND '$max_lon' AND ";
    }

これを完全にMySQLにする方法を知っている人はいますか?私はインターネットを少し閲覧しましたが、それに関するほとんどの文献はかなり混乱しています。

Pavel Chuchuva

Google Code FAQから-PHP、MySQL、Googleマップを使用したスト​​アロケーターの作成

これは、37、-122座標から半径25マイル以内にある最も近い20の場所を見つけるSQLステートメントです。その行の緯度/経度とターゲットの緯度/経度に基づいて距離を計算し、距離の値が25未満の行のみを要求し、クエリ全体を距離順に並べて、結果を20に制限します。マイルではなくキロメートルで検索するには、3959を6371に置き換えます。

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) 
* cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin(radians(lat)) ) ) AS distance 
FROM markers 
HAVING distance < 25 
ORDER BY distance 
LIMIT 0 , 20;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

カートピー:大圏距離線の高解像度

分類Dev

BigQueryのHAVERSINE距離?

分類Dev

Haversineの距離式を使用して経度と緯度から距離を取得する

分類Dev

距離の計算には、Haversine式またはVincentyの式の方が優れていますか?

分類Dev

SQLの距離式

分類Dev

R:ggplot距離式

分類Dev

PythonのHaversine式(2つのGPSポイント間のベアリングと距離)

分類Dev

PythonでのHaversine距離計算のベクトル化

分類Dev

距離の式を使用した2点間の距離

分類Dev

Python距離式座標平面エラー

分類Dev

コサイン距離の式?

分類Dev

地圏との距離のマトリックス:微積分の繰り返しを避ける

分類Dev

mysqlとswiftの距離が異なる

分類Dev

大きな地理的距離行列を計算する方法

分類Dev

2つのLat / Longs Autoit間の距離式?

分類Dev

半正矢式エラー-距離が正しくない-Arduino

分類Dev

距離変換:

分類Dev

距離行列が大きなデータの距離を返していません

分類Dev

JavaScriptでのHaversine式の使用

分類Dev

地球上のポイント間の距離を計算するときに、HaversineとGeodesicの計算が異なるのはなぜですか?

分類Dev

10メートルのHaversineやLawof Cosinesのような短い距離に最適なのはどれですか?

分類Dev

NumPy配列が大きいペアワイズ距離(チャンキング?)

分類Dev

2つの大きなポイントセット間のPostGIS最小距離

分類Dev

単位球上の2つの「P =(x、y、z)」点間の大円距離

分類Dev

大円距離の赤道面におけるNAN値と計算角度

分類Dev

距離や使用時や、PHPでのMySQLのクエリ

分類Dev

PHP MySQL行間の距離を計算する方法は?

分類Dev

距離に基づくMySQL更新テーブル(St_distance)

分類Dev

ポリゴンとmysqlのポイント間の距離

Related 関連記事

  1. 1

    カートピー:大圏距離線の高解像度

  2. 2

    BigQueryのHAVERSINE距離?

  3. 3

    Haversineの距離式を使用して経度と緯度から距離を取得する

  4. 4

    距離の計算には、Haversine式またはVincentyの式の方が優れていますか?

  5. 5

    SQLの距離式

  6. 6

    R:ggplot距離式

  7. 7

    PythonのHaversine式(2つのGPSポイント間のベアリングと距離)

  8. 8

    PythonでのHaversine距離計算のベクトル化

  9. 9

    距離の式を使用した2点間の距離

  10. 10

    Python距離式座標平面エラー

  11. 11

    コサイン距離の式?

  12. 12

    地圏との距離のマトリックス:微積分の繰り返しを避ける

  13. 13

    mysqlとswiftの距離が異なる

  14. 14

    大きな地理的距離行列を計算する方法

  15. 15

    2つのLat / Longs Autoit間の距離式?

  16. 16

    半正矢式エラー-距離が正しくない-Arduino

  17. 17

    距離変換:

  18. 18

    距離行列が大きなデータの距離を返していません

  19. 19

    JavaScriptでのHaversine式の使用

  20. 20

    地球上のポイント間の距離を計算するときに、HaversineとGeodesicの計算が異なるのはなぜですか?

  21. 21

    10メートルのHaversineやLawof Cosinesのような短い距離に最適なのはどれですか?

  22. 22

    NumPy配列が大きいペアワイズ距離(チャンキング?)

  23. 23

    2つの大きなポイントセット間のPostGIS最小距離

  24. 24

    単位球上の2つの「P =(x、y、z)」点間の大円距離

  25. 25

    大円距離の赤道面におけるNAN値と計算角度

  26. 26

    距離や使用時や、PHPでのMySQLのクエリ

  27. 27

    PHP MySQL行間の距離を計算する方法は?

  28. 28

    距離に基づくMySQL更新テーブル(St_distance)

  29. 29

    ポリゴンとmysqlのポイント間の距離

ホットタグ

アーカイブ