忍者ブログ
[195] [194] [193] [192] [191] [190] [189] [188] [187] [186] [185]

DATE : 2017/06/29 (Thu)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/10/29 (Sun)

BREW API の IPOSDET_GetGPSInfo 関数を使用すると、AEEGPSInfo 構造体に経緯度などの位置情報を取り出すことができます。

しかし、AEEGPSInfo に格納されている経緯度は度単位であるにもかかわらず、整数値で格納されています。(浮動小数点数形式への変換は、WGS84_TO_DEGREES マクロ関数を使用します)

この整数は、BREW API のドキュメントによると緯度は 180/2^25 度、経度は360/2^26度として表されているようです。

ところで、この180/2^25や360/2^26という数字はどこから出てきたのでしょうか。API ドキュメントによると、『TIA/EIA IS-801規格に準拠』と書いてあります。この規格番号を基にウェブ検索してみると、『3GPP2 C.S0022-0 Position Determination Service Standard for Dual Mode Spread Spectrum Systems』(PDF)という規格書が見つかりました。

この文書を拾い読みしたところ、180/2^25度単位、360/2^26度単位とすることで、緯度は25ビット幅、経度は26ビット幅で表現できるそうです。

すると、経緯度の情報をデータとして格納しておきたい場合は、この規格の形式で格納しておくと便利です。あらかじめビット幅が分かっていますし、BREW で取得できる形式と互換性があるところも利点です。

( ´∀`)経緯度の演算をする際にも、整数のままで計算できますしね

ちなみに、経緯度を TIA/EIA IS-801 形式に変換するには、経緯度にそれぞれ186413 を乗じます。

(TIA/EIA IS-801形式) = (経緯度) × 186413

経緯度は度単位です。また、計算結果に小数があれば切り捨てます。

なお、「186413」という数字は、180/2^25 および 360/2^26 の逆数から小数を切り捨てたものです。

(注:規格書を全て読んだわけではないので、この部分が規格にあるかどうかはまだ確かめていません。ただ、BREW の GPS エミュレーションはこの式のように動作していました)

ちなみにこの形式の場合、TIA/EIA IS-801 形式の1は1.93×10^-2秒に相当します。つまり、これ未満の経緯度は TIA/EIA IS-801 形式では表現できないことになります。日本付近の地表面では、経緯度の1秒はだいたい30m前後に相当するそうです。すると、約60cm 前後以下の距離は TIA/EIA IS-801 形式では表現できません。

ただ、携帯端末に搭載されている GPS 受信機の精度(受信機単独での測位で10m~30m前後、基準局からの補正で数m)を考えると、これでも十分だと言えます。

参考文献

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
05 2017/06 07
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)
ブログ内検索
最近の状況
リンク
カレンダー
05 2017/06 07
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)