簡體   English   中英

使用 GeoDjango 在坐標系之間轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM