「地図から住所情報取得ツール」に新機能を追加しました
昨日公開した「地図から住所情報取得ツール」の説明の中で「取得できる緯度・経度は世界測地系です。日本測地系で使用する場合は別途変換する必要があります。」ということを書きましたが、肝心の変換方法について書いていないのは不親切極まりないということで、変換機能を追加しました。
今回追加した機能は、
- 世界測地系 ⇔ 日本測地系 変換機能
- 度⇔度分秒 変換機能
の2つです。
ますますゴチャゴチャしてきたな…(笑)
そもそもなんで2つの測地系があるの?
地球上の位置を緯度と経度を表すための基準を測地基準系(測地系)といい、地球の形に最も近い回転楕円体で定義されています。緯度と経度はこの回転楕円体(地球楕円体)における位置を表す座標となります。
日本ではその土地の緯度・経度が効率的に求められるように、目印となる基準点を全国に多数設置し、人力の測量(三角測量など)でこれらの基準点の緯度・経度を求めてきました。従来のこの測地基準系を日本測地系(Tokyo Datum)といいます。
そして、VLBI観測(数十億光年先にある電波星から届いた電波を複数のアンテナで同時に受信した時の到達時間差を計測。数千kmもの長距離を数mmの高精度で測ることができるそうです)や人工衛星観測により、現代の科学的知識に基づいた世界共通で使える世界測地系(WGS84。日本測地系2000)というものがあります。なお、世界測地系の回転楕円体の中心は地球の重心と一致するように設定されているのですが、日本測地系の楕円体は少しずれています。
日本測地系は明治時代に制定されたもので、当時の測量機器や技術を基準にしているため、現代の測量技術と比べれば誤差も大きいですし、なにしろ過去100年の地殻変動によって測量するための基準点も動いてしまっており、東京から見ると札幌は西へ約9m、福岡は南へ約4mずれていたそうです。昨年の東日本大震災の影響で、今はもっと大きく変動してしまっているのではないでしょうか。
そして近年のGPS(全地球測位システム)やGIS(地理情報システム)の普及もあり、日本国内でしか通用しない日本測地系をそのまま使い続けることはできなくなりました。そこで世界共通で使える世界測地系WGS84)に移行するように計量法の一部が平成13年に改正されました。世界測地系と日本測地系は約400mのずれが生じるようです。
日本測地系はまだ使っていいの?
これからはとにかく世界測地系を採用すれば問題ないわけですが、システムによってはまだ世界測地系に移行していない(移行しない?)ものも多くあります。
すでにGoogle MapやYahoo!ロコ(旧Yahoo!地図)などは世界測地系に移行完了していますが、MapionやMapFan、またはそれらの地図を採用している地図サービス(goo地図、livedoor地図)などは日本測地系を採用しているので注意が必要です(2012年8月現在)
もちろん、日本測地系のまま使っていても特に問題はないと思うのですが、他の世界測地系を採用しているサービスと緯度・経度の受け渡しが発生するような場合に測地系の違いを考慮していなければ緯度・経度が指し示す位置が大きくズレてしまうということになります。
緯度・経度がどちらの測地系か調べるには?
その緯度・経度が世界測地系か日本測地系かというのは見た目では区別がつきません。そんな時には「地図から住所情報取得ツール」のキーワード欄に「緯度,経度」で検索した時に、地図表示がずれていれば日本測地系、ずれていなければ世界測地系、という感じで判定が可能です。
世界測地系を採用しているYahoo!ロコと、日本測地系を採用しているMapionのURLに上記の緯度・経度をそのまま与えてみましょう。
例として、東京タワーの緯度・経度は世界測地系で 35.6586,139.7454 なのですが、仮にこれをそのまま日本測地系の地図サービスに与えてしまうとどうなるでしょうか。
Yahoo!ロコ(世界測地系)で 緯度35.6586、経度139.7454の位置を表示する
http://maps.loco.yahoo.co.jp/maps?lat=35.6586&lon=139.7454
パラメータのlatが緯度、lonが経度です。
期待通りマーカーが東京タワーの位置を示していますので、Yahoo!ロコは世界測地系ということになります。
Mapion(日本測地系)で 緯度35.6586、経度139.7454の位置を表示する
http://www.mapion.co.jp/m/35.6586_139.7454_8/
URLに、アンダーバー区切りで "緯度_経度_ズーム" のように指定します。
東京タワーは東南の方向へ400m程度の位置です。大養寺というお寺の近くを緑の矢印が示しています。Mapionは日本測地系を採用しているということがわかります。
今回は「東京タワー」ということで緯度・経度を指定しましたが、単に説明もなく緯度・経度だけ渡された場合には、さすがにどちらの測地系なのか、正しいのか間違っているのかわかりません。もしかしたら日本測地系で指定していてMapionでの緑の矢印の位置が集合場所なのかもしれませんし。
…ミステリー小説とかの暗号じゃあるまいし、わざわざ待ち合わせ場所を緯度・経度で指定しないと思いますが(笑)
世界測地系と日本測地系を変換したい
ようやく本題ですが、せっかくなので「地図から住所情報取得ツール」に世界測地系と日本測地系を変換する機能をつけてみたいと思いました。
まあ、単に変換用のフォームを追加するだけですが。というわけで、どうやればいいか調べてみました。
「じゃらんWebサービス」で簡易的な式が公開されていましたのでご紹介します。
wy = jy - jy * 0.00010695 + jx * 0.000017464 + 0.0046017
wx = jx - jy * 0.000046038 - jx * 0.000083043 + 0.010040
世界測地系→日本測地系への計算式(簡易)
jy = wy * 1.000106961 - wx * 0.000017467 - 0.004602017
jx = wx * 1.000083049 + wy * 0.000046047 - 0.010041046
※ wy:世界測地系 緯度、wx:世界測地系 経度、jy:日本測地系 緯度、jx:日本測地系 経度
計算式の内容はサッパリわかりませんが(笑)、これで変換が可能なようです。ただし、これは簡易的な計算方法となり、変換後の誤差が結構あります。どうせならなるべく正確に変換させたいので、さらに調べてみました。
国土地理院測地部のサイトの「便利なプログラム・データ」にある世界測地系座標変換(TKY2JGD)を使用すればほぼ確実なのですが、緯度・経度を度・分・秒で指定する必要がありまして、これまで度を小数で表す表記しか扱っていませんでしたのでそのままでは使えず… 言うほど便利じゃありません(笑)
いろいろ探してみた結果、灯台下暗しというか、これまで散々使ってきたYOLP(地図)にそのものズバリ、「測地系変換API」というものがありました。世界測地系と日本測地系を相互変換できるAPIです。
というわけで、このAPIを呼ぶだけですが「地図から住所情報取得ツール」に測地系変換フォームを追加しておきました。世界測地系⇔日本測地系の相互変換が可能です。
緯度・経度の形式を度分秒に変換したい
先ほどの国土地理院の世界測地系座標変換(TKY2JGD)で軽く流してしまいましたが、緯度や経度は度・分・秒で扱いたい場合もあるなあ、と。
一般的にはあまり機会はなさそうですが、もし、日常生活で緯度・経度を使うことがあったら、さっき例に出した東京タワーの、「35.6586,139.7454」というのは正直使いにくくて、たいていは「北緯35度39分30秒、東経139度44分43秒」のような言い方をしますよね? 「北緯35.6586、東経139.7454」でも同じ事なのですが、どちらかというと目や耳にするのは度・分・秒の形式が多いと思います。そもそも緯度・経度自体、あまり目や耳にしない、っていうのは置いといてください(笑)
あ、そうだ。カーナビで緯度・経度が「N35°39’30”」のように「度°分’秒”」で出ますよね? 僕の車はカーナビつけてないのでわかんないですけど(笑)
そんなわけで、「地図から住所情報取得ツール」に度・分・秒に変換するフォームも追加しておきました。
「35.39.30.959,139.44.43.439」のようにピリオドで区切って、「度.分.秒.ミリ秒」で表します。
UIはおせじにも使いやすいとは言えませんが、なんだか無駄に充実してきました(笑)