Запрос 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 км, то недостающие рестораны отображаются. Я не могу понять, почему некоторые рестораны не отображаются?

Любая помощь будет высоко оценена. Спасибо.

Вернуться на верх