我想进行基于半径的距离搜索。为此,我想在点对象周围创建一个缓冲区,以过滤其中的对象。
这就是我的位置:
>>> lat = 37.7762179974
>>> lon = -122.411562492
>>> from django.contrib.gis.geos import Point
>>> pnt = Point(lat, lon)
>>> buf = pnt.buffer(0.0001)
但是我在根据Thing
对象是否在缓冲区内过滤对象时遇到问题:
>>> z = Thing.objects.filter(pnt__intersects=buf)
(我知道上面是不正确的,但我用它来详细说明我正在尝试做的事情。)
如何在 中创建一个缓冲区Point
,然后在 中创建一个过滤Things
器buffer
?
编辑:models.py
class Thing(models.Model):
lat = models.FloatField()
lon = models.FloatField()
如何根据由这两个模型字段组合而成的点进行过滤?
这显然行不通,因为我的模型中没有pnt
字段:
>>> pnt = Point(lat, lon)
>>> z = Thing.objects.filter(pnt__intersects=buf)
但是我怎么能做类似的事情呢?