我正在使用geodjango并在我的数据库中有点的集合。在一定区域我用这个范围内获得积分的查询集:如何使用geodjango返回距离点最近距离的记录?
queryset = Spot.objects.filter(point__distance_lte=(origin, distance_m))
我的问题是我怎么能只返回一个点,从我已经过了它的点(与最低距离点)?
编辑
我要指出,我传递的坐标,并希望创建一个Point
对象他们。然后将该点作为原点并对其进行过滤。 例如,我曾尝试:
from spots.models import *
from django.contrib.gis.geos import *
origin = Point(28.011030, -26.029430)
distance_m = 1000
queryset = Spot.objects.filter(point__distance_lte=(origin, distance_m))
for q in queryset:
print q.distance
的这段代码给了我这个错误:
Traceback (most recent call last):
File "<console>", line 2, in <module>
AttributeError: 'Spot' object has no attribute 'distance'
有趣的是,如果我做到以下几点:
origin = Spot.objects.get(name='Montecasino').point
distance_m = 1000
for city in Spot.objects.distance(origin):
print(city.name, city.distance)
(u'Design Quarter Parking', Distance(m=677.347841801))
(u'Montecasino', Distance(m=0.0))
(u'Fourways', Distance(m=1080.67723755))
你能解释为什么你在末尾有'[:1] [0]' – Sevenearths 2014-03-20 14:36:22
请在调试之前仔细阅读本文:[https://docs.djangoproject.com/en/1.6/ref/contrib/gis/db-api /#compatibility-tables]当Mysql不支持它时,花了几个小时毫无意义地调试了point__distance_lte – PKaura 2014-06-24 12:16:54