与えられた緯度・経度に近い場所を、DBから抽出するSQL文

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

Googleマップ

またGoogleマップですが、現在その開発を行っているのでついついそのネタに・・・

さて、ちょっと表題では表現しづらいのですが、前回のPOSTでもありましたスポットを表示して、そのスポットに近い場所をDBから抽出しようとした場合のSQL文です。
当然DBにはスポットの情報として、各種情報とともに緯度・経度情報があるものとします。

(地図から緯度・経度・拡大率を取得してDBに登録する方法なんてのは、需要はないかな・・・結構使い古されたネタか・・・)

2地点間の距離の算出方法は、こちらのサイトを参考にさせて頂いているはずです。
めっちゃ詳しく書いてくれているので、是非ご覧頂くことをおすすめします。
色々とWEBを漁って、様々な方法を試したのですが、こちらで独自の検証を行った結果、データ的に一番信用できました。 

(それにしても、三角関数なんて生きてきて初めて役に立ったw)
6378.137は地球の半径として利用しています。

サブクエリを使って、入力された(現在表示されているスポットの)位置情報に一番近いもの(ORDER BY calc)を抽出しています。
PDOを使っているので、データの入力はプレースホルダー(:lat、:lng)を使っています。「:lat1」と「:lat2」がありますが、同じ現在スポットの緯度を表しています。

この後でbindValueしていますが、今回はSQLのみということで。
これでcalcに現在地(:lat1、:lng1で与えられた場所)に距離的に近い情報の一覧が取得出来るはずです。
取得出来るデータの単位は「km」です。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメント

  1. Melissa より:

    An inneglilett point of view, well expressed! Thanks!

コメントを残す

%d人のブロガーが「いいね」をつけました。