Использование UTM с геоджанго - PullRequest
1 голос
/ 26 августа 2009

Я изучаю использование системы координат UTM с геоджанго. И я не могу понять, как правильно вводить данные.

Я просматривал документацию, и кажется, что " GEOSGeometry (geo_input, srid = None) " или " OGRGeometry " можно использовать с EWKT, но я не могу понять, как отформатировать данные.

Похоже, UTM SRID : 2029

Из статьи Википедии формат записан так:

[ UTMZone ] [ 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 обеспечивают преобразование utitilites?

1 Ответ

6 голосов
/ 17 сентября 2009

UTM-зона (17N) уже задана системой пространственной привязки - SRID 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
...