Question

Je suis à la recherche en utilisant les UTM système de coordonnées avec GeoDjango. Et je ne peux pas comprendre comment obtenir les données correctement.

J'ai été la navigation de la documentation et il semble que le " GEOSGeometry (geo_input, srid = Aucun) " ou « OGRGeometry » peut être utilisé avec un EWKT, mais je ne peux pas comprendre comment formater les données.

Il ressemble à l'UTM SRID : 2029

De la wikipedia article le format est écrit comme ceci:

[ UTMZone ] [ N ou S ] [ abscisse ] [ northing ]

17N 630084 4833438

J'ai donc essayé ce qui suit à pas de chance:

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

Y at-il par exemple disponible pour montrer comment cela se fait?

Peut-être que je devrais faire des calulations nécessaires en UTM et les convertir en degrés décimaux?
Dans ce cas, ne GEOS ou d'autres outils de GeoDjango fournir utitilites de convertion?

Était-ce utile?

La solution

La zone UTM (17N) est déjà spécifié par le système de référence spatiale - SRID 2029 , de sorte que vous n'avez pas besoin de l'inclure dans le WKT vous passez au constructeur de 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

Alors, par exemple:

>>> pnt.transform(4326)   # Transform to WGS84
>>> (pnt.x, pnt.y)
(-79.387137066054038, 43.644504290860461)
>>> pnt.srid
4326
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top