[英]Convert between coordinate systems with GeoDjango
我正在尝试将坐标信息添加到我的数据库中,将django.contrib.gis
支持添加到我的应用程序中。 我正在编写一个south
数据迁移,它从数据库中获取地址,并向谷歌询问坐标(到目前为止,我认为我最好的选择是为此使用geopy
)。
接下来,我需要将返回的坐标从 Google 的坐标系WGS84:4326
转换为我的坐标系WGS84:22186
。
我迷失在 GeoDjango 文档中,试图找到一种方法来做到这一点。 到目前为止,我认为我需要这样做:
gcoord = SpatialReference("4326")
mycoord = SpatialReference("22186")
trans = CoordTransform(gcoord, mycoord)
但是,我不知道如何使用那个CoordTransform
object .. 似乎被 GDAL 的数据对象使用,但这对于我想要做的事情来说太过分了..
如果您正确安装了所有库,则无需使用CoordTransform
object,如果您知道所需的srid
值,点对象的transform
方法将为您完成工作。
>>> from django.contrib.gis.geos import Point
>>> pnt = Point(30, 50, srid=4326)
>>> desired_srid = 22186
>>> pnt.transform(desired_srid)
>>> pnt.ewkt
u'SRID=22186;POINT (11160773.5712331663817167 19724623.9116888605058193)'
如果没有 GDAL,CoordTransform 将无法工作,这是真的。 但是它的 rest 很简单:
>>> from django.contrib.gis.gdal import SpatialReference, CoordTransform
>>> from django.contrib.gis.geos import Point
>>> gcoord = SpatialReference(4326)
>>> mycoord = SpatialReference(22186)
>>> trans = CoordTransform(gcoord, mycoord)
>>> pnt = Point(30, 50, srid=4326)
>>> print 'x: %s; y: %s; srid: %s' % (pnt.x, pnt.y, pnt.srid)
x: 30.0; y: 50.0; srid: 4326
>>> pnt.transform(trans)
>>> print 'x: %s; y: %s; srid: %s' % (pnt.x, pnt.y, pnt.srid)
x: 11160773.5712; y: 19724623.9117; srid: 22186
请注意,该点已就地转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.