私はgeodjangoを使用しており、データベースにポイントのコレクションを持っています。私はこれを使用して、特定のエリア内の点のクエリセットを取得するには:geodjangoを使用してポイントから最低距離のレコードを返す方法は?
queryset = Spot.objects.filter(point__distance_lte=(origin, distance_m))
私の質問は、私は、私はそれに合格した時点から一点のみ(最低距離となる点)を返すことができる方法ですか?
EDIT
私は座標を渡すと、彼らと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
デバッグする前にこの手順を実行してください:[https://docs.djangoproject.com/en/1.6/ref/contrib/gis/db-api /#互換表]ちょうどポイント_distance_lte Mysqlのためにサポートされていないときに無意識にデバッグの時間を費やした – PKaura