15
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

空間参照系変換ライブラリ Proj4js 使い方メモ

Posted at

この記事について

ドキュメント( http://proj4js.org/ ) に書いてある通りに動かしたメモです。

インスコ

Node でもブラウザでも動くので好きなの選べ!

$ npm install proj4
$ bower install proj4
$ jam install proj4
$ component install proj4js/proj4js

今回は Node の REPL で動かして確認します。

$ npm install proj4
$ node
> var proj4 = require("proj4");
undefined

座標を変換する

変換関数の I/F は以下。

proj4(fromProjection[, toProjection, coordinates])

第1引数の空間参照系から、第2引数の空間参照系に変換する。第3引数には変換対象の座標を指定。
世界測地系緯度経度座標(WGS84, EPSG:4326)から日本測地系緯度経度座標(Tokyo, EPSG:4301)に変換します。

> var firstProjection = "+proj=longlat +datum=WGS84 +no_defs";
undefined
> var secondProjection = "+proj=longlat +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +no_defs";
undefined
> proj4(firstProjection, secondProjection, {x:139.74981563, y:35.64160487});
{ x: 139.75304670250136, y: 35.63836153195859 }

座標は {x: x, y: y} の形式以外にも配列で [x, y] で指定可能。指定した形式と同じ形で返ってくる。

> proj4(firstProjection, secondProjection, [139.74981563, 35.64160487]);
[ 139.75304670250136, 35.63836153195859 ]

引数の空間参照系を1つ省略した場合は、 WGS84 からの変換とみなします。

> proj4(secondProjection, [139.74981563, 35.64160487]);
[ 139.75304670250136, 35.63836153195859 ]

座標を省略した場合は、 forward()inverse() の2メソッドを持つオブジェクトが返されます。

> proj4(firstProjection, secondProjection).forward([139.74981563, 35.64160487]); 
[ 139.75304670250136, 35.63836153195859 ]
> proj4(secondProjection, firstProjection).inverse([139.74981563, 35.64160487]);
[ 139.75304670250136, 35.63836153195859 ]

空間参照系を名前付きで定義する

defs() メソッドで定義できます。

> proj4.defs("EPSG:4326","+proj=longlat +datum=WGS84 +no_defs");
undefined
> proj4.defs("EPSG:4301","+proj=longlat +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0 +no_defs");
undefined
> proj4("EPSG:4326", "EPSG:4301", [139.74981563, 35.64160487]);
[ 139.75304670250136, 35.63836153195859 ]

定義済み空間参照系

  • EPSG:4326 (エイリアスで WGS84 )
  • EPSG:4269
  • EPSG:3857 (エイリアスで EPSG:3785, GOOGLE, EPSG:900913, EPSG:102113 )

また defs() の第2引数を省略すれば定義済みの情報も確認できます。

> proj4.defs('EPSG:4326')
{ projName: 'longlat',
  datumCode: 'WGS84',
  no_defs: true,
  k0: 1,
  axis: 'enu' }

defs() の第2引数に渡す文字列を調べる

http://epsg.io/ から検索することができる。 EPSG:4612 が欲しければ 4612 とかで検索すれば大体ヒットします。

丁寧に Proj4js 用の Export コードも用意されているので、そのままコピーすれば利用可能。

image

proj4.defs("EPSG:4612","+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_defs");
15
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?