Задать вопрос
mal1kov
@mal1kov
Притворись дураком 5 минут, чем быть им всю жизнь.

Как в Python вычислить ближайшие точки по имеющимся GPS-координатам?

Я делаю телеграм бота который ищет ближайшие рестораны, координаты которых есть у меня в словаре, после получения геолокации от пользователя. Не могу найти ни примеры ни ответы на это в интернете. И в доках нету. Кто может привести пример и подсказать как сделать такое?
  • Вопрос задан
  • 787 просмотров
Подписаться 2 Средний 2 комментария
Решения вопроса 1
mal1kov
@mal1kov Автор вопроса
Притворись дураком 5 минут, чем быть им всю жизнь.
Всё оказалось просто) мне помог geopy
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
это же практически невозможно. думаю эту задачу никто и никогда не решал. даже и не знаю что тут посоветовать можно
Ответ написан
Комментировать
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
ищет ближайшие рестораны, координаты которых есть у меня в словаре

Если ваш бот планирует расти и поддерживать много всяких POI, в том числе помимо ресторанов, то имеет смысл вынести всё это в БД.
Удобно использовать postgres с расширением postgis. В составе этого расширения есть оптимизированные функции поиска ближайших точек, кроме того в БД удобно хранить сами POI, их можно импортировать из OSM.

Кроме этого не во всех подобных задачах правильно использовать геометрические метрики для нахождения ближайших точек.
Какая-то точка может быть ближе к заданной геометрически, но она может оказаться на другой стороне реки, а крюк через мост до нее будет очень большим.
Для этого вам лучше использовать какое-нибудь решение, учитывающее роутинг. Например OSRM. Такие сервисы зачастую умеют строить матрицы расстояний между точками. OSRM, кстати, отлично развёртывается в докере, на основе данных OSM он может строить как пешие маршруты (если, конечно, ваш регион покрыт пешими тропами в OSM), так и в других модальностях.
Полезным артефактом от OSRM будет также геометрия маршрута и путевые точки по ходу его следования. Также OSRM в своём API имеет быстрый метод динамической привязки координат к графу дорог. Может пригодиться, скажем, для отслеживания курьера и предупреждения о его прибытии.
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Как один из вариантов.
https://pypi.org/project/geolocation-python/

Кроме того если вам тупо нужно расстояние
Попробуйте вот это
https://stackoverflow.com/questions/365826/calcula...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы