Pergunta

Estou pensando em usar o Utm Sistema de coordenadas com Geodjango. E não consigo descobrir como obter os dados corretamente.

Eu tenho navegado na documentação e parece que "Geosgeometria (geo_input, srid = nenhum)" ou "Ogrogeometria"Pode ser usado com um EWKT, mas não consigo descobrir como formatar os dados.

Parece o UTM Srid é: 2029

De Artigo da Wikipedia O formato está escrito assim:

[UtmZone][N ou s] [facilidade] [afastamento para o norte]

17N 630084 4833438

Então eu tentei o seguinte sem sorte:

>>> 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)"

Há algum exemplo disponível para mostrar como isso é feito?

Pode ser que eu deveria apenas fazer calulações necessárias em UTM e converter em graus decimais?
Nesse caso, os GEOs ou outras ferramentas no Geodjango fornecem utitítilas de conversão?

Foi útil?

Solução

A zona UTM (17N) já está especificada pelo sistema de referência espacial - SRID 2029, então você não precisa incluí -lo no wkt que você passa para o GEOSGeometry construtor.

>>> from django.contrib.gis.geos import *
>>> pnt = GEOSGeometry('SRID=2029;POINT(630084 4833438)')
>>> (pnt.x, pnt.y)
(630084.0, 4833438.0)
>>> pnt.srid
2029

Então, por exemplo:

>>> pnt.transform(4326)   # Transform to WGS84
>>> (pnt.x, pnt.y)
(-79.387137066054038, 43.644504290860461)
>>> pnt.srid
4326
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top