Verwenden von UTM mit Geodjango
Frage
Ich möchte die benutzen UTM Koordinatensystem mit Geodjango. Und ich kann nicht herausfinden, wie ich die Daten richtig einholen kann.
Ich habe die Dokumentation durchsucht und es scheint, dass das ""Geosgeometrie (Geo_Input, srid = keine)" oder "Ogrgeometrie"könnte mit einem EWKT verwendet werden, aber ich kann nicht herausfinden, wie die Daten formatiert werden sollen.
Es sieht aus wie die UTM Srid IS: 2029
Von dem Wikipedia -Artikel Das Format ist so geschrieben:
[Utmzone][N oder s] [Ost] [Nordinde]
17n 630084 4833438
Also habe ich das Folgende ohne Glück ausprobiert:
>>> 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)"
Gibt es Beispiele für ein Beispiel, um zu zeigen, wie dies gemacht wird?
Vielleicht sollte ich nur die notwendigen Kalulationen in UTM durchführen und in Dezimalgrade umwandeln?
In diesem Fall bieten Geos oder andere Tools in Geodjango Konvertion -Utitiliten?
Lösung
Die UTM -Zone (17N) ist bereits vom räumlichen Referenzsystem angegeben - Srid 2029, Sie müssen es also nicht in die WKT einbeziehen, die Sie an die übergeben GEOSGeometry
Konstrukteur.
>>> from django.contrib.gis.geos import *
>>> pnt = GEOSGeometry('SRID=2029;POINT(630084 4833438)')
>>> (pnt.x, pnt.y)
(630084.0, 4833438.0)
>>> pnt.srid
2029
Dann zum Beispiel:
>>> pnt.transform(4326) # Transform to WGS84
>>> (pnt.x, pnt.y)
(-79.387137066054038, 43.644504290860461)
>>> pnt.srid
4326