OpenLayersで緯度経度

2012/08/18 | OpenLayers

仕事の関係でGoogle Mapsとは似て非なるOpenLayersを真面目に勉強することにする。

まず座標についてだが、そもそも座標系というものについてよくわかっていない(メルカトル図法とか正距方位図法とか)。大学の時に授業を受けたが、こういう部分は理屈の部分になるわけで、それは偉い先生方が考えればいい部分だと思っていた。位置は緯度経度がわかればそれで十分と思っていた。

企業に勤めた時、日本地図が国家座標系で位置をXYで表すとか、海上での船位測量に電波測位装置トライスポンダーを使うとか、時代が移り変わってGPSを使うとか、その段になってWGS84とか・・・。

企業をやめた今も、地図には関わらないけなかったが、基本的にGoogle Mapsオンリーだったのでやっぱり緯度経度で済んでいた。そしてOpenLayers。偉い先生方とのお約束があって使わなくてはいけない。そして「大学の時に真面目にやっときゃよかったな」とまたしても痛感する今日この頃である。

で、本題。OpenLayers。

当たり前だが、画面に地図を表示するということは、もともと球である地球を紙の上に展開するわけだから緯度経度じゃ都合悪いでしょ、ってことかな。OpenLayersではEPSG:900913という座標系を主に使うらしい。そもそもEPSG:900913自体がおまじないのようでとても嫌いなのだが、これはすなわちGoogle Mapsと同じ、ということのようだ(てことはこれがメルカトルかな)。

別にメルカトル図法で緯度経度でいいじゃん、と思うけどそれはダメらしい。緯度経度は球面での位置を表現するための手法だから平面用の手法に置き換えてから使ってくれということか。

じゃぁ、緯度経度っていったいなんだよ、となるがこれはEPSG:4326の位置表現手法、と理解してよさそう。EPSG:4326はGoogle Earthと同じのようだ。乱暴に言えば、球ならEPSG:4326、平面ならEPSG:900913、ということか。

だからOpenLayersで緯度経度を使うには、OpenLayers.LonLat()という如何にも、なメソッドがあるが、単にそれを使うだけではダメで毎回変換してやらないといけないということになる。

new OpenLayers.LonLat( 135, 35 ).transform( new OpenLayers.Projection(‘EPSG:4326′), new OpenLayers.Projection(‘EPSG:900913′) )

たかだかこれだけのことで・・・疲れる。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net