Использование UTM с Geodjango
Вопрос
Я ищу, чтобы использовать UTM Координационная система с Geodjango. И я не могу понять, как правильно получить данные.
Я просматривал документацию, и кажется, что "Geogeometry (geo_input, srid = none)" или же "Оггеометрия«Можно использовать с EWKT, но я не могу понять, как форматировать данные.
Это похоже на UTM Шрид это: 2029
От Википедия статья Формат написан так:
[Утмзоне][N или s] [облегчение] [норшинг]
17n 630084 4833438
Поэтому я попробовал следующее без повезло:
>>> from django.contrib.gis.geos import *
>>> pnt = GEOSGeometry('SRID=2029;POINT(17N 630084 4833438)')
GEOS_ERROR: ParseException: Expected number but encountered word: '17N'
>>>
>>> from django.contrib.gis.gdal import OGRGeometry
>>> pnt = OGRGeometry('SRID=2029;POINT(17N 630084 4833438)')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python26\lib\site-packages\django\contrib\gis\gdal\geometries.py", line 106, in __init__
ogr_t = OGRGeomType(geom_input)
File "C:\Python26\lib\site-packages\django\contrib\gis\gdal\geomtype.py", line 31, in __init__
raise OGRException('Invalid OGR String Type "%s"' % type_input)
django.contrib.gis.gdal.error.OGRException: Invalid OGR String Type "srid=2029;point(17n 630084 4833438)"
Есть ли какой -нибудь пример, чтобы показать, как это сделано?
Может быть, я должен просто сделать какие -либо необходимые калуляции в UTM и преобразовать в десятичные степени градуса?
В этом случае GEOS или другие инструменты в Geodjango предоставляют утилиты конвертации?
Решение
Зона UTM (17N) уже указана пространственной справочной системой - Шрид 2029, поэтому вам не нужно включать его в WKT, который вы передаете GEOSGeometry
конструктор.
>>> from django.contrib.gis.geos import *
>>> pnt = GEOSGeometry('SRID=2029;POINT(630084 4833438)')
>>> (pnt.x, pnt.y)
(630084.0, 4833438.0)
>>> pnt.srid
2029
Тогда, например:
>>> pnt.transform(4326) # Transform to WGS84
>>> (pnt.x, pnt.y)
(-79.387137066054038, 43.644504290860461)
>>> pnt.srid
4326