Pregunta

Estoy buscando usar el UTM Sistema de coordinación con Geodjango. Y no puedo entender cómo obtener los datos correctamente.

He estado navegando por la documentación y parece que "Geosgeometry (Geo_input, SRID = None)" o "Ogrgeometría"Podría usarse con un EWKT, pero no puedo entender cómo formatear los datos.

Parece el UTM Srid es: 2029

Desde el artículo de Wikipedia El formato está escrito así:

[Utmzone][N o s] [dirección del este] [no]

17n 630084 4833438

Así que intenté lo siguiente sin suerte:

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

¿Hay algún ejemplo disponible para mostrar cómo se hace esto?

¿Puede ser que debería hacer los caliones necesarios en UTM y convertir a grados decimales?
En este caso, ¿GEO u otras herramientas en Geodjango proporcionan Utitilites de converción?

¿Fue útil?

Solución

La zona UTM (17n) ya está especificada por el sistema de referencia espacial - SRID 2029, por lo que no necesita incluirlo en el wkt que pase al GEOSGeometry constructor.

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

Entonces, por ejemplo:

>>> pnt.transform(4326)   # Transform to WGS84
>>> (pnt.x, pnt.y)
(-79.387137066054038, 43.644504290860461)
>>> pnt.srid
4326
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top