fc2ブログ
ホーム   »  物理/数学/雑学  »  緯度・経度・測地系

緯度・経度・測地系

私が使用している au の携帯電話には GPS 機能が付いている。現在地を確認しながら目的地までリアルタイムにナビゲーションしたり (ez ナビウォーク)、カメラで撮った写真に現在位置を記録できるので便利だ。

旅先で何気ない風景や変な看板なんかを撮るので、以前は 「この写真撮ったのどこだっけ?」 という事がよくあった。初めて車で遠出した時に撮った風車や、瀬戸内の島々が並ぶ風景の場所などは未だに分からない。そんなわけで、位置をメモする代わりに携帯で写真を撮って GPS 情報を付加して保存するようになったわけだ。

最近 GPS に関するネタを調べる機会があったのでちょっと書いてみる。

◆ 位置の表現方法

経度・緯度は地球一周を 360 度とした角度で表される。緯度は赤道を 0 度として南極点を -90度、北極点を +90度。経度は本初子午線 (北極、南極と旧グリニッジ天文台を結ぶ線) を 0 度として東に +、西に - である。例えば愛媛の佐田岬灯台は緯度 +33.343056 度、経度 +132.015000 度 (世界測地系) に位置している。

プログラムで扱う場合はこの実数形式で良いのだが、人間向けに表現する場合は小数点以下を分・秒で表すことが多い。分・秒とはそれぞれ 60 進数である事を意味している。緯度・経度の実数値を L とした場合の度分秒への変換方法は以下の通り。

L = d + m/60 + s/3600     (0≦m<60, 0≦s<60)
d = floor L
m = floor[{60 (L - d)} mod 60]
s = 3600 (L - d) - 60 m

ここで floor は、オペランドと等しいか、オペランドより 0 に近く最も絶対値の大きな整数を得る演算子とする (ほとんどの言語では L が正の場合 floor()、負の場合 ceil() となる)。検証も兼ねて JavaScript で作った変換プログラムを作ってみた。入力して矢印で変換。

L =
    
d =
度, m分, s

 先の佐田岬灯台を度分秒で表すと北緯33度20分35秒、東経132度0分54秒となる (参考)。

◆ 測地系の変換

測地、というのは単純に緯度・経度を測ることなのだが、歴史的に国土を測定する方法や、地形のひずみなどを考慮したローカルルールが結構存在している。

日本では歴史的に日本測地系が使われてきたのだが、最近の国土地理院は世界測地系の使用を勧めている。ただ、地図業界などではまだ日本測地系を基準に使っているところも多いようだ。緯度・経度入りの URL を見る限り Google Map は世界測地系を、Yahoo!マピオンMapFan などは日本測地系をインターフェースにしているようだ (内部はどうか知らんが; ただし Google Map API では日本測地系を使用している模様)。

世界測地系は GPS で使用されているアメリカの測地系 (WGS-84) とほぼ同じであり、日本測地系 (TOKYO) と比較すると東南方向に約 500m ほどズレている。つまり GPS の位置情報を地図上にマップするほとんどの場合、WGS84→TOKYO の変換が必要なのだ。

計測方法の違いや地形のひずみなどから、双方の変換は国土地理院の変換表で変換するのが正攻法だ。カーナビや地図ソフトなどでも使われている正確な方法なのだが、自作プログラムで行うには変換テーブルを持つ必要があるのでちょっと面倒くさい。

誤差が数m でも良いのであればこちらのサイトで紹介されている方法が簡単でオススメ。日本測地系の緯度 YT・経度 XT から世界測地系の緯度 YW ・経度 XW に変換するには以下の通り。

YW = YT - 1.0695×10-4 YT + 1.7464×10-5 XT + 4.6017×10-3
XW = XT - 4.6038×10-5 YT - 8.3043×10-5 XT + 1.0040×10-2

また世界測地系から日本測地系に変換は:

YT = YW - 1.0696×10-4 YW + 1.7467×10-5 XW + 4.6020×10-3
XT = XW - 4.6047×10-5 YW - 8.3049×10-5 XW + 1.0040×10-2

宗谷岬から石垣島市役所まで、変換結果の座標を何種類かの地図サイトで試してみたが、その程度の利用ならまったく違いは分からなかった。ちなみにもっと大雑把で良いなら、緯度に 3.2361×10-3、経度に 3.2028×10-3 を加減算するだけでも変換はできるらしい。

◆ Exif と GPS 情報

JPEG/TIFF 画像に拡張情報を埋め込む Exif 規格には GPS 用の IFD が割り当てられている。どうも測量や工事関係などの役所向け書類で正確な撮影場所を記録する必要があったようだ。携帯電話はこの GPS 用 IFD を利用している。

Exif の規格は電子情報技術産業協会 (JEIDA) が取りまとめており、JEIDA のサイトから Exif 2.1 規格 (PDF) をダウンロードすることが出来る。分数型や繰り返し値などがいやらしいが、とりあえずこれだけ読めば解析プログラムを作ることは出来るだろう。ちなみに印刷時の色再現情報を強化した最新の 2.2 仕様は売り物になっているようだ。さすが日本主導の規格だぜ orz それでもまぁタグと意味だけならこちらなどから参照することが出来る。

携帯電話で撮った写真を PC に吸い上げて自作のライブラリで Exif 情報を解析してみたところ、何故だか測地系が TOKYO になっている写真が 2 枚存在した。80 枚中 2 枚だけである。GPS を元に位置を割り出しているはずなので WGS-84 固定かと思っていたら、どうやらその限りでもないようである。

理由をアレコレ考えて分かった。これ、GPS 測位の後に地図上で位置を修正して保存したのだ。つまり手動で位置を特定すると測地系が TOKYO になるようだ。再現もする。ちなみに右の画像が測地系 TOKYO の写真、伊勢神宮内宮近くの五十鈴川沿いの料理屋 「とうふや」 である。今日は一日この 2 枚の謎を考えていて終わってしまったw

◆ 位置確認方法

あと一つ謎なのが携帯電話で表示される 「確認レベル」 という情報。見た感じでは測位の精度を表しているようだ。

画像ファイルの Exif 情報を調べてみると、どうやら IFD 0x8825、タグ 0x1B (GPSProcessingMethod / 位置確認方法)  にこの確認レベルが保存されている模様。仕様を見る限り、型は UNDEFINED で特に値も規定されていない。ちょっと talby で試してみた。

確認レベル A → GPS-FIX
確認レベル B → PRE-AFLT
確認レベル C → ? (基地局の精度が良いため出せず)

CDMA AFLT 方式GPS から位置を測定する場合、最低 3 衛星を補足する必要がある。ただし au の携帯電話は 3 つの基地局からの同期信号で大まかな位置が特定できるので (AFLT 方式)、必ずしも 3 衛星補足しなくても精度の良い測位が出来るのだ。

確認レベルが A, B, C の 3 段階なのでてっきり補足できた衛星数かと思っていたのだが、基地局に頼らざるを得ないような屋内でも確認レベル A (GPS-FIX) が出てしまったため、それはどうやら間違いのようだ。GSP 測位の精度や AFLT 計測時の精度や距離などを考慮して値が決定されている模様。うーん、なかなか奥が深いな。

ちなみに AFLT (Advanced Forward Link Trilateration) というのは全基地局の時刻を GPS で厳密に同期している CDMA 方式だから出来る芸当 (Foma の W-CDMA は同期してないんでこの方法は使えないはず)。このことから GPSProcessingMethod の値はやっぱりベンダー固有と思われる。

コメント
測地系の変換式
世界測地系から日本測地系に変換の式が、右辺のプラスとマイナスを逆に記載されていないでしょうか?
引用されているサイト
http://homepage3.nifty.com/Nowral/02_DATUM/02_DATUM.html
では逆になっているように思います。
検証したわけではないのですが、お知らせまで。
おなじく、
http://homepage3.nifty.com/Nowral/02_DATUM/02_DATUM.html
から、世界測地系から日本測地系では、1.0040ではなく.
1.0041ではないでしょうか?
トラックバック
トラックバック URL
コメントの投稿
管理者にだけ表示を許可する
Profile
Takami Torao
Takami Torao
C/C++ 使いだった 1996年、運命の Java と出会い現在に至る。のらアーキテクト。
Yah, this is image so I don't wanna eat spam, sorry!
Search

Google
MOYO Laboratory
Web

カテゴリー
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
ブロとも申請フォーム
RSSフィード
リンク