プロが教える店舗&オフィスのセキュリティ対策術

PHPで最も近い緯度経度をDBデータから抽出する方法について

現在携帯電話のGPS機能を使って、
お店の位置情報リストを使って現在地から最も近い場所を検索する機能を
PHPで作ろうと考えています。

そこで携帯電話から取得出来る位置情報をWGS84系に変換するまでは出来たのですが、
お店の位置情報リスト(こちらもWGS84系データで、SQLでDBに保存)から
どのような方法で検索すればよいのか困っています。

そもそもWGS84系のデータ仕様自体を詳しくわかっていないのですが、
PHPである場所の緯度経度から、DBにある緯度経度データから最も距離の近い緯度経度を検索・抽出するにはどうしたらよいでしょうか。

よろしくお願いいたします。

A 回答 (2件)

>「ある緯度経度情報をDBに保存している緯度経度リストの中から一番近い1件を抽出する方法」になりますので、



ですから差の絶対値を出して比較すればよろしいわけですので具体的に言いますと

DBに保存している緯度経度リストが格納されているテーブル名が「location」
緯度が「latitude」フィールド、経度が「longitude」フィールドに格納されていたとしまして
以下のようなSQL文を実行すれば結果はだいたい近い順に並びますので
その一番上が一番近い1件となります。

SELECT * FROM `location` ORDER BY ABS(`latitude` - [調べたい緯度]) + ABS(`longitude` - [調べたい経度]) ASC
    • good
    • 0
この回答へのお礼

ありがとうございます!
まさにこのSQL文が知りたかった内容となります。

お礼日時:2010/07/17 23:20

日本国内ぐらいなら現在位置の緯度経度と登録してある緯度経度の差の絶対値を出してそれを比較すれば距離の目安は得られます。



ただし地球上のどの場所でも1度が100km程度になる緯度に対して経線の長さは一定でないことに注意してください。極端な例では北極点から3mの距離の経線の長さはわずか18m、1度は5cmにしかなりません。もし地球上のどの場所でも通用するようにしたい場合はもう少し高度な手段が必要になります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

現在開発予定の内容は日本国内のみの情報となりますので、
若干の誤差であれば発生しても問題ない内容になります。

ただ今回の質問の結果として得たいものが
「ある緯度経度情報をDBに保存している緯度経度リストの中から一番近い1件を抽出する方法」になりますので、
恐れ入りますがこちらの方法か参考サイトなどもご教授いただけると幸いです。

お礼日時:2010/07/15 17:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!