[GIS] 日本測地系からWGS84への変換パラメータの謎を追え

はじめに

これは、FOSS4G Advent Calendar (http://atnd.org/events/34052) 用の記事です。

ハードル上げないでね、と申し上げたのに、先に書かれた方々の中に裏切り者がおるorz

測地系

測地系は、ある位置を緯度経度であらわす際に用いる前提条件を指します。詳しくはgoogleさん等に聞いて下さい。

わが国では日本測地系(Tokyo)が2002年3月まで使用されてきましたが、2002年4月から世界測地系(JGD2000)に変わりました。また、GPS日本測地系とも世界測地系とも異なる、WGS84という測地系を前提にしています。

これら3測地系のうち、WGS84とJGD2000はあまり差がない(WGS84測地系パラメータの有効桁数を落としている)のでそのまま使ってもだいたいいいんですが、TokyoとJGD2000とは400mぐらいズレるので、このままでは使えません。そのため、Tokyoに基づ地理空間データをJGD2000またはWGS84に変換しなければなりません。

変換ツールは、Proj.4(http://proj.osgeo.org/)が有名ですし、地図データのフォーマットもあわせて変換する場合にはGDAL/OGR(http://www.gdal.org/)を使いますし、空間データベースを扱うPostGIS(http://postgis.refractions.net/)でもこういった変換機能を持っています。そのほかでもGISと呼ばれる部類のものなら基本的に持っている機能です。

ただ、ツールはいいとして、TokyoからWGS84に変換するためのパラメータが複数個ある、というなんともややこしいことになっています。

3種類の変換パラメータ

測地系を変換するには、Bursa-Wolfパラメータと呼ばれる、平行移動(3パラメータ)、拡大縮小(1パラメータ)、回転(3パラメータ)からなる7パラメータで表現することが多いです。
平行移動だけを使う3パラメータと、全て使う7パラメータのいずれかでパラメータを指定します。

GISや座標変換ソフトウェアは、これらのパラメータのデータベースを持っています。Proj.4とかGDALとかPostGISとかについては、WGS84を基準にして、各測地系の相互変換を行っています。

Tokyo から WGS84 への変換パラメータ(3パラメータ)は次の通りです。

+towgs84=-146.336,506.832,680.254,0,0,0,0

しかし Proj.4 では次のパラメータを使っています。

+towgs84=-146.414,507.337,680.507,0,0,0,0

あとPostGISのパラメータはまた違います。

+towgs84=-148,507,685,0,0,0,0

同じ効果を求めているはずなのに3種類のパラメータが出てきました。

Proj.4 のパラメータはtoJGD2000

世界測地系と座標変換」(飛田幹男著)に実は答があって、

+towgs84=-146.336,506.832,680.254,0,0,0,0

は、TokyoからWGS84への変換パラメータで間違いなく、

+towgs84=-146.414,507.337,680.507,0,0,0,0

は、TokyoからITRF94への変換です。
ITRFはJGDと同じです(JGDはわが国が責任をもって管理する範囲のみ有効とするのでITRFとは意味あいが異なります)。

どちらを使うと良いの?

WGS84とJGD2000とは、メートルの誤差が出るようなGPSを使うような一般的な使い方では、気にならないレベルの差しか出ないんだそうです。

じゃあ気にしない方が良い、だからどっちもOK、でないかな、と思います。

さらにいうと、TokyoからJGD2000に変換するには、測地網の歪みがあったため、7パラメータ変換でも少しずれることになります。本気で精密に変換するなら http://vldb.gsi.go.jp/sokuchi/tky2jgd/http://www.osgeo.jp/foss4g-mext/ 等を使わなければなりません。

以下は、あえて選ぶとしたら、の話です。

towgs84となっているのですから、WGS84への変換パラメータを指定しないといけない、と考えて、TokyoからWGS84へのパラメータを使う方が厳密さを確保するには良いかも知れません。

しかし、たいていのパラメータデータベースでは、JGD2000からWGS84への変換パラメータは、0,0,0,0,0,0,0 (変換前と変換後で変わらない)です。
これまで、JGD2000とWGS84は若干の差しかない、と言ってきましたが、逆に言うと、若干ですが差があるのです。厳密さを確保するには、JGD2000のtowgs84パラメータは0,0,0,0,0,0,0ではいけないはず。厳密さは意識しない方がいいようです。

ある地理空間データについて、GPSの位置とずれるのと、他のJGD2000の地理空間データとずれるのと、どちらがよろしくないかと言えば、後者ではないかと。
なら、WGSを、ITRF/JGD の劣化版とととらえ、towgs84と書いてあってもtoJGD2000のパラメータを使った方が良いかな、と思います。

なおこれは陸域の話です。海図はWGS84で指定されているので、JGDでなくWGS84のパラメータを使った方が良いです。

PostGISのパラメータ

+towgs84=-148,507,685,0,0,0,0 については、これが全く分からん。

座標変換専門のライブラリであるProj.4では4.8.0以降はJGD2000への変換パラメータを使っていますが、それより前は4.4.5でだけ-148,507,685が使われ、それ以外では0,0,0,0,0,0,0となっています。4.4.6のリリースが2003年3月のようですが、はっきり追えませんでした。

地理空間データを加工するためのライブラリであるGDALは、1.7(2010年1月)では0,0,0,0,0,0,0、1.8(2011年1月)では-148,507,685を使っているけど1.9(2012年1月)ではJGD2000への変換パラメータを使ってます。

PostGIS/QGISについては、時期的に見たらGDALのcsvファイルを反映した結果でないかと考えられます。確証無いですけど。

ただ「犯人」がGDALなのかどうかより、-148,507,685 のパラメータの出元がどこなのか、が知りたかったんですが、タイムアップ。結局わからずじまいでした。

おわりに

まとめると、複数パラメータが出てるけど、TokyoからJGD2000/WGS84への変換パラメータは

+towgs84=-146.414,507.337,680.507,0,0,0,0

がおすすめかな、と。…今度からそうする。

あと-148,507,685については消化不良orz 日本測地系からWGS84への変換パラメータの謎は手に負えなかった、と。ハードル上げれんかった。