2009-08-26 6 views
1

Je cherche à utiliser le système de coordonnées UTM avec geodjango. Et je ne peux pas comprendre comment obtenir les données correctement.Utilisation de UTM avec geodjango

J'ai parcouru la documentation et il semble que le "GEOSGeometry(geo_input, srid=None)" ou "OGRGeometry" pourrait être utilisé avec un EWKT, mais je n'arrive pas à comprendre comment formater les données.

Il ressemble à l'UTM SRID est: 2029

De l'wikipedia article le format est écrit comme ceci:

[UTMZone] [N ou S] [abscisse] [nord]

17N 630084 4833438

J'essayé ce qui suit sans succès:

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

Existe-t-il un exemple disponible pour montrer comment cela se fait?

Peut-être que je devrais faire les calculs nécessaires en UTM et convertir en degrés décimaux?
Dans ce cas, GEOS ou d'autres outils de geodjango fournissent-ils des utitilites de conversion?

Répondre

6

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

Ensuite, par exemple:

>>> pnt.transform(4326) # Transform to WGS84 
>>> (pnt.x, pnt.y) 
(-79.387137066054038, 43.644504290860461) 
>>> pnt.srid 
4326 
+1

Je voudrais ajouter que la géométrie donnée sous forme de texte intégral bien connu, soit OGC WKT ou PostGIS/format GEOS spécifique de WKT étendue, composants donnés entre parenthesis() après balise geometry, ne doit spécifier que des coordonnées: XY, éventuellement Z et M dimensions. Aucun autre élément exotique n'est autorisé, donc 17N est un jeton invalide. Dans le cas d'EWKT, le système de référence spatiale peut être donné à l'aide du spécificateur SRID dédié. – mloskot