如果我能做到的话:
>>> 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对象?
发布于 2013-10-03 18:37:26
你当然可以这么做,但只要稍微修改一下
point = GEOSGeometry('POINT(%s %s)' % (lon, lat))或
point = GEOSGeometry('POINT(%d %d)' % (lon, lat))当你做的时候
`'POINT(lat lon)'`您不会用适当的局部变量值替换局部变量lat和lon,而是按字面计算它们。所以,您需要使用替换。
编辑:将(lat, lon)的顺序更改为(lon, lat),以与GEOSGeometry期望的顺序相匹配。虽然在文档中没有明确说明,但从他们的例子中可以看出这一点。
发布于 2014-10-20 18:05:11
接受的答案是不正确的。点采取“点(经纬度)”的形式。你倒过来了。
https://stackoverflow.com/questions/19166629
复制相似问题