如果可以的话:
>>> 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))
OR
point = GEOSGeometry('POINT(%d %d)' % (lon, lat))
执行时
`'POINT(lat lon)'`
您正在不是用适当的局部变量值替换局部变量lat
和lon
,并按字面值对它们进行求值。因此,您将需要使用替换。
编辑:将(lat, lon)
的顺序更改为(lon, lat)
以匹配期望的GEOSGeometry
顺序。尽管documentation中没有明确说明,但从他们的示例中可以明显看出。
接受的答案不正确。点的形式为“ POINT(经度纬度)”。您已将它们撤消。