PostGISで日本測地系(Tokyo)から世界測地系(WGS84)への変換ができない場合
いきなりPostGISのお話。
PostGISを利用して、位置情報を使ったアプリケーションのプロトタイプを書いていたところ、どうも実際の位置と合わない。元データは日本測地系の緯度経度で、世界測地系へ変換(ST_Transform)してジオメトリカラムに格納していた。クエリーで投げていたのは世界測地系の緯度経度だったのだが、帰ってくる結果が400mほどずれる。地図で確認すると、まさに日本測地系と世界測地系の誤差。
プログラムを見直して、最終的に行き着いたのは実際に測地系を変換している(であろう)ST_Transform。
SELECT ST_AsText(ST_Transform(ST_GeomFromText('POINT(139.00 35.00)', 4301), 4326));
としてみると、
139.00 35.00
という値がしれーっと帰ってくる。「おめー、仕事しろYO!」。
解決にあたって参考になったのは、下記の2つのページ。意外に情報が少ない。
・Re: PostGISへのデータ入力時の投影法変換|freeml
・くりてぃかるひっと!はてな分室:PostGIS の測地系変換
UPDATE spatial_ref_sys SET proj4text='+proj=longlat +ellps=bessel towgs84=-147.54,507.26,680.47' WHERE srid=4301;
とすれば、
SELECT proj4text FROM spatial_ref_sys WHERE srid=4301;前:+proj=longlat +ellps=bessel +no_defs
後:+proj=longlat +ellps=bessel towgs84=-147.54,507.26,680.47
となる。検索結果にも満足。無事解決。
念のためバージョンも記述する。
PostgreSQL:8.1.11
PostGIS:1.3.3
proj:4.6.1
geos:3.0.0
↓GIS全般の解説、PostGISの取り扱い、日本の測地系に関する補足あり
入門Webマッピング―自分で作るオリジナルのデジタル地図
posted with amazlet at 08.10.13
テイラー ミッチェル
オライリージャパン
売り上げランキング: 51738
オライリージャパン
売り上げランキング: 51738