移転しました。

携帯GPSの基礎知識たち

最近、モバイルサイトの位置情報登録を実装をしなくてはならなかったので、Webで調べたり同僚に質問したりして分かったこととかをメモ。

GPS

グローバル・ポジショニング・システム - Wikipediaを読むと面白い。モバイルサイトの場合、簡単に言えば、緯度・経度といった位置情報をGPS衛星を使って測定した上で、その値をパラメータに付けて指定したURLにリダイレクしてくれる。パラメータとして受け取った値を使って地名に紐付けるなどして利用することができる。

測地系(datum)

緯度・経度の測定基準点をどうするのかという違いがあって、モバイルだと、世界測地系WGS84)と日本測地系(Tokyo)と日本測地系2000(JGD2000)を知っておくと良い。

緯度・経度(latitude, longitude)

緯度・経度はどのように表記されるのか。ISO 6709 - Wikipediaにある一覧表が参考になる。モバイルだと、 度単位(degree)と度分秒単位(dms)を知っておくと良い。

各キャリアの違い

上記の情報を理解して各キャリアのドキュメントを参照すると違いが把握できる。

大きな違いは次の三つ。

  1. パラメータの違い
    • 例えば、docomoauは緯度・経度が別々のパラメータで取得できるが、SoftBankWILLCOMは「N35.44.33.150E135.22.33.121」というような一つのパラメータになる。
  2. 書式の違い
    • 度単位(degree)と度分秒単位(dms)に分かれる。
    • パラメータでどちらにするかを選択できるキャリアもある。
  3. 測地系の違い

実装

id:yappoさんのGeo::Coordinates::Converterを使う。もしくは、Perl以外の場合も実装自体がとても参考になる。

オープンiエリア

docomo独自のもので、ドキュメントは作ろうiモードコンテンツ:オープンiエリア | サービス・機能 | NTTドコモにある。全国を505エリアに区切ったものでdocomo端末だとエリア番号としても取得できる。iエリアデータファイルが公開されているので、他キャリアのGPS情報からどのiエリアなのかを探すこともできる。厳密な位置が必要でなければ、このiエリア基準にすることで、キャリア間の差が吸収できてニコニコできる。

緯度・経度からオープンiエリアを特定する

id:tokuhiromさんのGeo::Coordinates::Converter::iAreaを使う。こちらも同じくPerl以外の場合も参考になる。

まとめ

位置情報で使われる用語をある程度理解して、各キャリアのドキュメントを読んで、既存の実装をみるとそれなりに理解できるのではないかと思う。また、このエントリはGPS携帯 位置情報 基礎知識で書かれていることと重複している点が多いと思うので、そちらも参考にすると良いと思う。