日本座標変換スクリプトPHP版

TokyoDatumからJGD2000、JGD2000からJGD2011に変換

処理種別
入力座標
出力座標
本家サイト
国土地理院 Web版 TKY2JGD Ver.1.3.80
国土地理院 Web版 PatchJGD Ver.1.0.1
patchJGDの補間で使うパラメータファイルは下記URLを参照(東北地方太平洋沖地震以外もある)。
https://vldb.gsi.go.jp/sokuchi/surveycalc/patchjgd/index.html
TokyoDatumからJGD2000(tky2jgd)に変換する方法には幾つかあるらしい。
http://tancro.e-central.tv/grandmaster/excel/tky2wgs.html
計算で求める方法が効率的だけどよく理解できない。
調べてみるとpatchJGDと同様にバイリニア補間するためのパラメータファイルも地理院から提供されている。
もともとWindows版TKY2JGDで使うパラメータファイルだったらしい。
https://www.gsi.go.jp/sokuchikijun/tky2jgd_download.html
これを使うと、patchJGDのプログラムを流用してtky2jgdも計算できるらしいことがわかった。
地理院のプログラムとは完全合致しない。
0.000000003度くらいの差が出る。
一般人が到達できなさそうな離島(沖ノ鳥島など)ではパラメータが提供されていないっぽい(jgd2tky)。
2003年十勝沖地震のパラメータファイルは2つあり、自治体で分割されている。自治体名が決まらないと変換できない(地理院に教えてもらった)。
自治体境界付近は両方のパラメータファイルで定義されているがパラメータの値が違うため計算結果も異なる(0.00000001度くらい?)。
変換手順
石川県志賀町のTokyo Datumの座標の場合、下記3回の変換が必要(地理院に教えてもらった)。
1. tky2jgdによる変換
2. noto2008_BLによる変換
3. touhokutaiheiyouoki2011による変換
補正パラメータの基準位置はメッシュの南西角グリッド。
https://www.gsi.go.jp/common/000110032.pdfの2ページ右下に記述あり。
TKY2JGD、patchJGDと比較して小数点第七位までは確実に合うようにできたっぽい。
経緯度から3次メッシュコードを求める際、ぴったり座標の扱いに誤りがあって正しいコードを取得できていなかった。
PHPでは素で小数の演算をすると桁落ちして誤差が大きくなる(JavaScriptは普通に記述して問題ない)。
bcmath関数群を使って桁落ちを防ぐことで小数点第八位(多分)まで合致するようになった。
プログラムはパラメータファイルを一旦全部読み込むためメモリをかなり使うので注意が必要。