携帯電話における位置情報の取得

えっと、必要に迫られて、携帯端末(簡単に言えば携帯電話)の測地情報を利用するWEBプログラムを検討。
しかし、イロイロあってごちゃごちゃしてきたので、自分のためにも覚え書き。
個人的な「重点課題」として、「測地と同時にCGI独自のパラメータを共存(同時に)送信できるか?」があるので、このあたりを重点的に。

結果として
 ・AUではCGI独自のパラメータを同時に送出できない
 ・DoCoMoのFOMAとSoftbankの場合はパラメータ送信可能となっている
 ・DoCoMoのmovaは明記が無いものの、独自パラメータは送信可能と思われる
 ・WILLCOMは明記が無いので、不明
ということがわかる。
AUが非対応なことがはっきりしている以上、独自のパラメータを送信しないルートを作る必要があるだろう。

細かな調べた内容は続きからど~ぞ。

■DoCoMo
●mova
 ・送信
  「type=”submit”」指定した「input」タグへ「name=”navi-pos”」を入れる。
    <form action=”XXXXXX.cgi” method=”POST”>
    <input tyle=”tttttt” name=”NNNNNN” value=”VVVV”>
      :
    <input type=”submit” name=”navi-pos” value=”送信”>
    </form>

 ・受信
  クエリとして各データが渡される。
    XXXXXX.cgi?pos=Nnn.nn.nn.nnEnnn.nn.nn.nn&geo=wgs84&X-acc=3&NNNNN=VVVV….
  pos : 緯度(N/S)と経度(E/W)+度分秒1/100秒と続く(度は2~3桁で不定)
  geo : 測地系(wgs84/tokyo)
  X-acc : 制度(1/2/3 = 300m以下の誤差/50m以上、300m未満の誤差/50m未満の誤差)
 ・コメント
  URL先のCGI独自のパラメータは「X-acc」パラメータ以降に「&」で連結して渡される。
    →つまり、CGI独自のパラメータを指定可能。
  「method」では「post」/「get」の両方を指定可能。
  「pos」ではN/S/E/Wを取り除き計算すること。
●FOMA
 ・送信
 「a」タグまたは「form」タグへ「lcs」を指定する。
    <a href=”XXXXXX.cgi” lcs>
    <form action=”XXXXXX.cgi” method=”POST” lcs>
       :
 ・受信
  クエリとして各データが渡される。
    XXXXXX.cgi?lat=%2Bnn.nn.nn.nnn&lon=%2Bnnn.nn.nn.nnn&geo=wgs84&x-acc=3
  lat : 緯度(度分秒)で秒の小数点以下は3桁(%2Bは「+」)
  lon : 経度(以下、緯度と同様)
  geo : 測地系(「WGS84」の場合もある)
  x-acc : 精度(movaの「X-acc」と同様)
 ・コメント
  URLの送信先指定に「?」があれば「lat」直前の「?」を「&」に変える。
   →つまり、CGI独自のパラメータを指定可能。
  「form」時の「method」は「post」/「get」の両方を指定可能。
  URLエンコードした「+」が付くので取り除く。
  秒の小数点以下は3桁である。

■AU
●簡易測位
 ・送信
  「a」タグの「href」オプション指定を独自の指定となる。
    <a href=”device:location?url=xxxxxx.cgi”>
  ・受信
  クエリとして各データが渡される。
    xxxxxx.cgi?datum=wgs84&unit=dms&lat=nn.nn.nn.nn&lon=nn.nn.nn.nn
  datum : 測地系(wgs84/WGS84/tokyo)
  unit : AUでは「dms」(度分秒)のみ
  lat : 緯度
  lon : 経度(先頭に「%2b」(「+」)が入る場合があり)
 ・コメント
  「x-up-devcap-multimedia」(16桁の数値)の左から2桁目が1の場合、簡易測位可能。
  CGI独自のパラメータは利用不可。
  URLエンコードした「+」が付く場合があるので取り除く。
●GPS測位
 ・送信
  「a」タグの「href」オプション指定を独自の指定となり、各種オプションを指定する。
    <a href=”device:gpsone?url=xxxxxx.cgi&ver=1&datum=0&unit=0&acry=0&number=0″>
  datum : 測地系(0/1 = WGS84/tokyo)
  その他 : 上記で固定
 ・受信
  クエリとして各データが渡される。
    xxxxxx.cgi?ver=1&datum=0&unit=0&lat=%2bnn.nn.nn.nn&lon%2bnnn.nn.nn.nn&alt=nn&time=YYYYMMDDhhmmss&amaj=nnn&smin=nn&vert=nn&majaa=nn&fm=n
  lat : 緯度(%2bは「+」)
  lon : 経度(%2bは「+」)
  alt : 高度
  time : 時間
  smaj : 長軸誤差
  smin : 短軸誤差
  vert : 高度誤差
  majaa : 長軸角度
  fm : 精度(数値が小さい程、高精度)
 ・コメント
  CGI独自のパラメータは不可。
  URLエンコードした「+」が付くので、取り除く。
  「x-up-devcap-multimedia」(16桁の数値)の左から2桁目が2(以上?)の場合、GPS測位可能。

■Softbank
●2G
 ・送信
  「a」タグへ「z」を指定する。
   <a href=”xxxxxx.cgi” z>
 ・受信
  「x-jphone-geocode」リクエストヘッダに情報が格納されている。
    nnnnnn%1Annnnnnn%1AXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  %1Aをセパレータとし、緯度・経度・住所が報告される。
  それぞれ6~7桁(国内においては緯度=6桁、経度=7桁)の数値の羅列として表現。
  また、緯度・経度ともに度分秒(度は2~3桁、分と秒は2桁)の表現となっている。
 ・コメント
  C3/C4/P型(ステーション対応機種)のみ対応
  住所はエンコード済みの文字列。
  「a」タグでURLを指定し、「z」オプションを指定するだけなので、URLへCGI独自のパラメータ指定が可能と思われる。
●3G
 ・送信
  「a」タグの「href」オプション指定を独自の指定となる。
    <a href=”location:cell?xxxxxx.cgi”>
  location : cellは簡易位置情報、GPS測位は「gps」と指定(「auto」では端末設定が優先される)
 ・受信
  クエリとして各データが渡される。
    xxxxxx.cgi?pos=Nnn.nn.nn.nnEnnn.nn.nn.nn&geo=wgs84&X-acr=3
  pos : 緯度(N/S)と経度(E/W)+度分秒1/100秒と続く(度は2~3桁で不定)
  geo : 測地系(wgs84/tokyo/itrf)
  X-acr : 制度(1/2/3 = 300m以下の誤差/50m以上、300m未満の誤差/50m未満の誤差)
 ・コメント
  3GC型のみ対応(W型は非対応)
  3GCでもV801SH、V801SA、V702MO、V702sMO、V702NK、V802N、VC701SIは非対応。
  指定URL中の「?」は「&」に修正することとあるので、CGI独自のパラメータを指定可能。
  「pos」ではN/S/E/Wを取り除き計算すること。

■WILLCOM
 ・送信
  「a」タグにて、ダミーの送信先へリンクを行う。
  また、端末内部データを付与するように指定する。
    <a href=”http://location.request/dummy.cgi?my=xxxxxx.cgi&pos=$location”>
  「http://location.request/dummy.cgi?my=」および「&pos=$location」は固定。
  送信先URL(上記では「xxxxxx.cgi」のみを指定)
 ・受信
  クエリとして各データが渡される。
    xxxxxx.cgi?pos=Nnn.nn.nn.nnnEnnn.nn.nn.nnn
  pos : 緯度(N/S)と経度(E/W)+度分秒1/1000秒と続く(度は2~3桁で不定)
 ・コメント
  「pos」ではN/S/E/Wを取り除き計算すること。
  秒の小数点以下は3桁である。
  「$location」は端末内(もしくは基地局内)データと思われるので、その後に「&」でつないだ個別パラメータは指定可能かもしれないが切り捨ての可能性も高い。

いずれにせよ、全ての端末を持っているワケではないので、個人的なチェックはできない… 

後日追記:
DoCoMoでは、FOMAとmova共に簡易位置測定(iエリア)は実質利用不可能。
携帯で「現在位置」と指定したいにも関わらず、返される値はあまりに大まかすぎる。
例えば、函館で「現在地」を「iエリア」で取得すると「001-00」と報告されるが、コレは「渡島」全域であり、北海道の南西部に位置する「渡島半島」の半分は該当する。
実に、松前も函館も長万部も該当する。
これでは、「市内」を定義した小さなエリアでは使えないのだ。
DoCoMoさんも考えて欲しい。
例えばだ、今居る位置から情報を引き出したいと思った時にだ、そんな大まかなエリアではどう行動して良いのか分からないだろう。
松前から長万部まで、車でどれくらいかかるか分かってないか?
いや、地図を見たら一目瞭然だろう。
そんなの、北海道の南西部に居るのは分かってるんだから、その上で情報を引き出したい時に「自分の現在地の近くから」と探す場合に、これじゃ役立たずだよね。
どの基地局が収容しているかぐらいは分かるハズだから、そこから基地局の緯度経度くらい教えてくれても良さそうなもんだが…

No comments yet.

コメント投稿

※各記事(エントリー/投稿)の内容は投稿時のものです。閲覧時とは異なることがございますのでご了承ください。