首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Geodjango: PointField和GEOSGeometry

Geodjango: PointField和GEOSGeometry
EN

Stack Overflow用户
提问于 2013-10-03 18:35:28
回答 2查看 5.1K关注 0票数 8

如果我能做到的话:

代码语言:javascript
复制
>>> from django.contrib.gis.geos import GEOSGeometry
>>> from django.contrib.gis.geos import Point
>>> point = GEOSGeometry('POINT(1 5)')
>>> print point
POINT (1.0000000000000000 5.0000000000000000)

为什么我不能这样做:

代码语言:javascript
复制
>>> lat = 1
>>> lon = 5
>>> point = GEOSGeometry('POINT(lat lon)')

GEOS_ERROR: ParseException: Expected number but encountered word: 'lat'
GEOSException: Error encountered checking Geometry returned from GEOS C function "GEOSWKTReader_read_r".

如何使用变量创建GEOSGeometry对象?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-03 18:37:26

你当然可以这么做,但只要稍微修改一下

代码语言:javascript
复制
point = GEOSGeometry('POINT(%s %s)' % (lon, lat))

代码语言:javascript
复制
point = GEOSGeometry('POINT(%d %d)' % (lon, lat))

当你做的时候

代码语言:javascript
复制
`'POINT(lat lon)'`

您不会用适当的局部变量值替换局部变量latlon,而是按字面计算它们。所以,您需要使用替换。

编辑:将(lat, lon)的顺序更改为(lon, lat),以与GEOSGeometry期望的顺序相匹配。虽然在文档中没有明确说明,但从他们的例子中可以看出这一点。

票数 8
EN

Stack Overflow用户

发布于 2014-10-20 18:05:11

接受的答案是不正确的。点采取“点(经纬度)”的形式。你倒过来了。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19166629

复制
相关文章

相似问题

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