我正在使用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