1

geodjangoでUTM座標系を使用することを検討しています。また、データを適切に取得する方法がわかりません。

私はドキュメントを閲覧しており、「GEOSGeometry(geo_input, srid=None)」または「OGRGeometry」を EWKT で使用できるようですが、データをフォーマットする方法がわかりません。

UTM SRIDのようです: 2029

ウィキペディアの記事から、フォーマットは次のように書かれています。

[ UTMZone ][ N or S ] [ Easting ] [ Northing ]

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 で必要な計算を行って、10 進度に変換するだけでよいでしょうか?
この場合、geos または geodjango の他のツールは変換ユーティリティを提供しますか?

4

1 に答える 1

6

UTM ゾーン (17N) は、空間参照系 ( SRID 2029GEOSGeometry ) によって既に指定されているため、コンストラクターに渡す WKT に含める必要はありません。

>>> 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
于 2009-09-16T23:01:01.130 に答える