gpt4 book ai didi

django - Geodjango:PointField和GEOSGeometry

转载 作者:行者123 更新时间:2023-12-04 09:05:19 53 4
gpt4 key购买 nike

如果可以的话:

>>> 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)

为什么我不能这样做:
>>> 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对象?

最佳答案

您当然可以做到,但稍作修改

point = GEOSGeometry('POINT(%s %s)' % (lon, lat))

或者
point = GEOSGeometry('POINT(%d %d)' % (lon, lat))

当你做
`'POINT(lat lon)'`

您没有用适当的局部变量值替换局部变量 latlon,而是按字面值对它们进行了求值。因此,您将需要使用替代。

编辑:更改 (lat, lon)(lon, lat)的顺序以匹配 GEOSGeometry期望的顺序。尽管没有在 documentation中明确说明,但从他们的示例中可以明显看出。

关于django - Geodjango:PointField和GEOSGeometry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19166629/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com