GPS情報から、その値を中心として

半径10kmの緯度・経度を出す際にはどうしたらいいのでしょうか?
教えて下さい。

回答の条件
  • 1人5回まで
  • 登録:2008/10/17 12:22:45
  • 終了:2008/10/24 12:25:02

回答(3件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/10/17 12:32:57

ポイント27pt

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

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

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


参考サイト

id:hopefully

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

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

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

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

すいません。

2008/10/17 12:43:05
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/10/17 13:21:02

ポイント27pt

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

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

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


携帯電話のGPS情報取得

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

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

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


施設Aの緯度・経度取得

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


2地点間の距離計算

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

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


注意事項

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

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

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

id:hopefully

ありがとうございます。

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

PHPで

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

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

DBはMYSQLを使ってます。

2008/10/18 00:29:24
id:cuspos No.3

cuspos回答回数49ベストアンサー獲得回数102008/10/17 16:15:38

ポイント26pt

こんにちは。

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) %>

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

id:hopefully

ありがとうございます。

言語がPHPなのですが

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

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

PHPで出来ないですかね?

2008/10/18 00:28:32
  • id:sterna

    PostGISとかなにかそういうものを使うか、
    その中の関数のソースを自分で見るのが手っ取り早いのではないでしょうか?

    マニュアル
    http://refits.cgk.affrc.go.jp/archives/postgisman/index.html
    実際に似たようなことをやっている例
    http://kokogiko.net/m/archives/002135.html
  • id:hopefully
    ありがとうございます。DBはMYSQLなので、似たようなの感じのは
    ないでしょうか?
  • id:pahoo
    cusposさん、ID call を受け取りました。また、有用な情報をありがとうございます。


    残念ながら、PHPで Model.find に相当するフレームワークがあるのかどうか、私は知りません。
    どなたかご存じでしたらフォローをお願いします。


    また、私から以下の質問をさせていただきました。こちらもよろしくお願いします。
    http://q.hatena.ne.jp/1224295014
    http://q.hatena.ne.jp/1224295223
  • id:cuspos
    PHPでは同様のイメージのものを知りません。
    お役に立てず申し訳ありません。
    (cakePHPとかSymfonyあたりにPlugin関連であると便利な気もしますね)

    geokitの持っている機能で今回の質問に該当する部分のみを切り出すのは、SQLの組み立てをしているだけなのでそれほどコストがかからないような気がします。pahooさんが質問してくださっているhttp://q.hatena.ne.jp/1224295223にgeokitでのSQL組み立て部分が記載されていますのでご参考までに。
  • id:hopefully
    pahooさん、cusposさんありがとうございます。
    SQLの組み立てを参考にやってみます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません