मैं 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))
क्या आप समझा सकते हैं कि आपके पास – Sevenearths
अंत में' [: 1] [0] 'क्यों है, कृपया डीबग करने से पहले इसे देखें: [https://docs.djangoproject.com/en/1.6/ref/contrib/जीआईएस/डीबी-एपीआई/# संगतता-सारणी] बस कुछ घंटे बिताए बिना बिगड़ती बिंदु__distance_lte बिताती है जब यह MySQL के लिए समर्थित नहीं है – PKaura