2010年11月30日火曜日

geoDjangoでの座標変換

あんまりたいしたことじゃないんだけど、
ハマったのでメモ。

以前OpenLayersでGmapを使うときに
座標を変換しなければならないというようなことを書いたんだけど
その変換をgeoDjangoでやるときにハマったので
EPSG:4326からEPSG:900913へ変換する例を示す。

>>>from django.contrib.gis.geos import Point
#EPSG:4326系の座標を設定
>>>lon = 14510632.892999999
>>>lat = 4091884.7946700002
>>>p = Point(lon,lat)
#ここが問題
#変換先の座標系(EPSG:900913)を設定
>>>p.set_srid(900913)
#変換元の座標系(EPSG:4326)から変換
>>>p.transform(4326)
>>>p.x
130.35123310029377
>>>p.y
34.468498799969531

先に変換する座標系を設定して
変換元の座標系を指定しなければならないようで
この部分を逆にしていたためハマってしまった。
自分の感覚では先に変換元を指定、あとから変換先を指定だったので