Преобразование между системами координат с GeoDjango - PullRequest
4 голосов
/ 06 июля 2011

Я пытаюсь добавить информацию о координатах в свою базу данных, добавив поддержку django.contrib.gis в мое приложение. Я пишу south миграцию данных, которая берет адреса из базы данных и запрашивает у Google координаты (пока я думаю, что лучше всего использовать geopy для этого).

Далее мне нужно преобразовать возвращенные координаты из WGS84:4326, системы координат Google, в WGS84:22186, мою систему координат.

Я заблудился среди документации GeoDjango, пытаясь найти способ сделать это. Насколько я понимаю, мне нужно сделать следующее:

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

но тогда я не знаю, как использовать этот CoordTransform объект .. кажется, что он используется объектами данных GDAL, но это излишне для того, что я хочу сделать ..

Ответы [ 2 ]

6 голосов
/ 05 февраля 2014

Если все ваши библиотеки установлены правильно, нет необходимости использовать объект CoordTransform, метод точечного объекта transform сработает, если вы знаете желаемое значение srid.1005 *

6 голосов
/ 27 июля 2011

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

Обратите внимание, что точка преобразуется на месте.

...