首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GeoDjango将SRID 4326转换为SRID 3857

GeoDjango将SRID 4326转换为SRID 3857
EN

Stack Overflow用户
提问于 2015-06-13 22:00:34
回答 1查看 3.2K关注 0票数 2

我很难将SRID 4326坐标从地理编码器转换到SRID 3857,以便存储在postgres-postgis数据库中。我使用以下代码测试SRID之间的转换:

代码语言:javascript
复制
from django.contrib.gis.gdal import SpatialReference, CoordTransform
from django.contrib.gis.geos import Point
gcoord = SpatialReference(4326)
mycoord = SpatialReference(3857)
trans = CoordTransform(gcoord, mycoord)

pnt = Point(47.61, -122.33, srid=4326)
print 'x: %s; y: %s; srid: %s' % (pnt.x, pnt.y, pnt.srid)

x: 47.61;y:-122.33;srid: 4326

代码语言:javascript
复制
pnt.transform(trans)
print 'x: %s; y: %s; srid: %s' % (pnt.x, pnt.y, pnt.srid)

django.contrib.gis.gdal.error.GDALException: OGR失败。

在Django中,我得到了更有用的错误消息:

转换:无法投影点(47.61 -122.33 0):纬度或经度超过极限(-14)

我执行了一些基本的测试,并确定在0-90之外的lat/long坐标触发了这种情况。将Django中的my字段设置为srid=4326并迁移数据库仍然会导致将Point转换为SRID 3857。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-16 19:01:05

我也在这里绊倒了。问题是,在调用Point构造函数时,经度需要位于纬度之前。(不管纬度/经度,按照这个顺序,可能铭刻在我们的脑海中.)经度是'x‘,纬度是'y’。所以,你应该:

代码语言:javascript
复制
pnt = Point(-122.33, 47.61, srid=4326)

或者,更好的是,为了清晰起见,使用命名参数:

代码语言:javascript
复制
pnt = Point(x=-122.33, y=47.61, srid=4326)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30823988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档