6

django.contrib.gisデータベースに座標情報を追加して、アプリにサポートを追加しようとしています。データベースからアドレスを取得し、Google に座標を要求するsouthデータ移行を作成しています (これまでのところ、これを使用するのが最善の策だと思いますgeopy)。

次に、返された座標をWGS84:4326、Google の座標系からWGS84:22186自分の座標系に変換する必要があります。

これを行う方法を見つけようとしているGeoDjangoドキュメントの中で迷っています。これまでのところ、私はこれを行う必要があると収集しています:

gcoord = SpatialReference("4326")
mycoord = SpatialReference("22186")
trans = CoordTransform(gcoord, mycoord)

しかし、そのオブジェクトの使用方法がわかりませんCoordTransform..GDALのデータオブジェクトで使用されているようですが、それは私がやりたいことにはやり過ぎです..

4

2 に答える 2

10

すべてのライブラリが正しくインストールされている場合、オブジェクトを使用する必要はありません。目的の値がわかっている場合CoordTransformは、ポイント オブジェクトのtransformメソッドが作業を行います。srid

>>> from django.contrib.gis.geos import Point
>>> pnt = Point(30, 50, srid=4326)
>>> desired_srid = 22186
>>> pnt.transform(desired_srid)
>>> pnt.ewkt
u'SRID=22186;POINT (11160773.5712331663817167 19724623.9116888605058193)'
于 2014-02-05T01:27:23.940 に答える
7

CoordTransform は GDAL なしでは機能しません。これは本当です。しかし、残りは十分に単純です。

>>> from django.contrib.gis.gdal import SpatialReference, CoordTransform
>>> from django.contrib.gis.geos import Point
>>> gcoord = SpatialReference(4326)
>>> mycoord = SpatialReference(22186)
>>> trans = CoordTransform(gcoord, mycoord)

>>> pnt = Point(30, 50, srid=4326)
>>> print 'x: %s; y: %s; srid: %s' % (pnt.x, pnt.y, pnt.srid)
x: 30.0; y: 50.0; srid: 4326
>>> pnt.transform(trans)
>>> print 'x: %s; y: %s; srid: %s' % (pnt.x, pnt.y, pnt.srid)
x: 11160773.5712; y: 19724623.9117; srid: 22186

ポイントがその場で変換されることに注意してください。

于 2011-07-27T07:21:25.900 に答える