Запрос GeoDjango distance_lte показывает неточные результаты
Я пытаюсь отфильтровать все рестораны в определенном радиусе от исходного местоположения. Исходное местоположение поступает от пользователя через GET запрос. Вот код:
from django.contrib.gis.geos import GEOSGeometry
from django.contrib.gis.measure import D
latitude = request.GET['latitude']
longitude = request.GET['longitude']
radius = request.GET['radius']
point = GEOSGeometry('POINT(%s %s)' % (longitude, latitude))
restaurants = Restaurant.objects.filter(location__distance_lte=(point, D(km=radius)))
# checking the distance
for i in restaurants:
distance = pnt.distance(i.location)
print(i, distance * 100)
Я получаю результаты на 80% правильные, но на 20% неправильные. Позвольте мне объяснить, что происходит...
Запустив вышеуказанный фильтр с радиусом 55 км, я получаю результаты, но когда я проверяю расстояние от исходного местоположения до мест расположения ресторанов, не хватает нескольких ресторанов, которые находятся на расстоянии около 52 км от исходного местоположения. Я ожидаю, что они тоже будут в результатах, если я отфильтрую их с радиусом 55 км.
Если я увеличиваю радиус с 55 км до 58 км, то недостающие рестораны отображаются. Я не могу понять, почему некоторые рестораны не отображаются?
Любая помощь будет высоко оценена. Спасибо.