人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

GPS情報から、その値を中心として
半径10kmの緯度・経度を出す際にはどうしたらいいのでしょうか?
教えて下さい。

●質問者: hopefully
●カテゴリ:インターネット ウェブ制作
✍キーワード:GPS
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●27ポイント

その値を中心として半径10kmの緯度・経度

その範囲は「円」になりますが、緯度・経度は「点」ですので、答えは「無数」にあります。

そこで、「緯度・経度で示された地点Aが、あらかじめGPSで位置情報を取得した地点Bを中心とする半径10kmの円に含まれているかどうかを調べる」という命題に替えることは可能でしょうか?


参考サイト

◎質問者からの返答

命題を変えれると思いますが、とりあえず、やりたいことは

GPS情報からその半径10km以内の施設情報を取得したいのですが。

施設情報に関してはDBに緯度・経度を持っています。

たぶん命題を変えれますよね?

すいません。


2 ● pahoo
●27ポイント

たぶん命題を変えれますよね?

ごめんなさい。状況が分からないので、私には判断が付きません。

ですが、施設Aの緯度・経度情報を小数の形でDBから取り出すことができるなら、次のようにして距離が10km以内にあるかどうか調べることはできます。


携帯電話のGPS情報取得

携帯電話からのGPS情報取得は、Webサーバ経由であることを前提にします。つまり、携帯電話でWebサーバにアクセスすると、いまいる位置が施設Aから10km以内にあるかどうかをWebサーバ側で計算してくれるという流れです。

PHPで携帯電話の位置情報を調べる」を参考にしてください。

ソースはPHPですが、原理を詳説していますので、他言語への移植は簡単にできると思います。


施設Aの緯度・経度取得

状況が分からないので、これはhopefullyさんの方でご用意ください。


2地点間の距離計算

PHPで2地点間の直線距離を求める」のcalc_distance関数を参考にしてください。

PHPで書いてありますが、単純な数値演算なので、他言語に移植できると思います。


注意事項

同じ緯度・経度でも、測地系が「日本測地系」か「世界測地系」かによって値が異なります。

施設DBの位置情報がどちらの測地系なのかは知りませんが、携帯電話GPSにしても「日本測地系」を返す可能性があるので、2地点間の距離を計算するまでにいずれかの測地系に統一する必要があります。

その変換式は「測地系の違い」で紹介しています。これもPHPで書いてありますが、単純な数値演算なので、他言語に移植できると思います。

◎質問者からの返答

ありがとうございます。

下記回答でもらったのですが

PHPで

Model.find(:all, :origin =>[緯度、経度], :within=>10)

みたいな事出来ませんかね?

DBはMYSQLを使ってます。


3 ● cuspos
●26ポイント

こんにちは。

id:pahooさんのお答えで網羅されているので蛇足です。

同様の流れですがRailsを利用するのであれば以下のようなものもあります。ご参考までに。

DBからデータを抽出

http://geokit.rubyforge.org/

Model.find(:all, :origin =>[緯度,経度], :within=>10)

と書くだけで半径10(km)の情報をとれます。(これをscript/console上でやればデータのみの抽出もできます)


携帯の位置情報を取得する(GPSと記載されているんで携帯じゃないかもしれませんが)

http://jpmobile-rails.org/blog

位置情報取得のみで利用するものではありませんが

<%= get_position_link_to(:action=>:gps) %>

と書くだけで各キャリアに合わせた位置情報取得用リンクを生成できます。

◎質問者からの返答

ありがとうございます。

言語がPHPなのですが

Model.find(:all, :origin =>[緯度,経度], :within=>10)

こういうのが知りたいです。

PHPで出来ないですかね?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ