如果我能这样做:
>>> 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对象?
答案 0 :(得分:18)
接受的答案不正确。点数采用" POINT(经度纬度)"的形式。你已经逆转了它们。
答案 1 :(得分:8)
你肯定可以这样做,但稍加修改
point = GEOSGeometry('POINT(%s %s)' % (lat, lon))
OR
point = GEOSGeometry('POINT(%d %d)' % (lat, lon))
当你这样做时
`'POINT(lat lon)'`
你不用适当的局部变量值替换局部变量lat
和lon
,并且正在逐字地评估它们。所以,你需要使用替代。