我正在考虑使用 UTM 与Geodjango的坐标系。而且我不知道如何正确获取数据。

我一直在浏览文档,看来“地理测定法(geo_input,srid = none)“ 或者 ”OGRGEOMETRY“可以与EWKT一起使用,但我不知道如何格式化数据。

看起来像UTM SRID IS:2029

来自 维基百科文章 格式是这样写的:

[Utmzone][n或s] [放松] [北边]

17n 630084 4833438

所以我尝试了以下操作,没有运气:

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

有没有可用的示例可以显示如何完成?

可能是我应该在UTM中进行任何必要的水平并转换为十进制学位?
在这种情况下,Geodjango中的Geos或其他工具是否提供转换Utitilites?

有帮助吗?

解决方案

UTM区(17N)已经由空间参考系统指定 - SRID 2029, ,因此您无需将其包括在WKT中 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

然后,例如:

>>> pnt.transform(4326)   # Transform to WGS84
>>> (pnt.x, pnt.y)
(-79.387137066054038, 43.644504290860461)
>>> pnt.srid
4326
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top