Получение адреса по координатам с помощью Python

Получение адреса по координатам, довольно полезная функция, которую можно использовать в различных целях. Например, вам скинули геолокацию. Можно сделать телеграм-бота, отправить ему полученные данные и в ответ получить адрес. Данный функционал можно реализовать на Python. Давайте посмотрим, как это можно сделать.

Получение адреса по координатам с помощью Python IT, Программирование, Python, Разработка, Программист, Гайд, Обзор, Длиннопост

Для получения адреса по геолокации будем использовать библиотеку geopy. В ней реализованы классы для работы с сервисами геокодирования, такими как OpenStreetMap Nominatim, Google Geocoding API (V3) и многими другими. В нашем коде мы будем использовать OpenStreetMap, так как его использование бесплатно и не требует получения дополнительных ключей.

Установка библиотеки

Для установки библиотеки пишем в терминале команду:

pip install geopy

Импорт модулей в скрипт

После того, как библиотека будет установлена, необходимо импортировать модули для работы с ней в скрипт. Пишем следующий код:

Получение адреса по координатам с помощью Python IT, Программирование, Python, Разработка, Программист, Гайд, Обзор, Длиннопост

Получаем адрес по координатам. Обратное геокодирование

Создадим функцию get_addr(location: list) -> str, которая на входе получаем широту и долготу в виде списка, а возвращает адрес в виде строки. В случае ошибки будет возвращен текст «Unknown».

Получение адреса по координатам с помощью Python IT, Программирование, Python, Разработка, Программист, Гайд, Обзор, Длиннопост

После этого инициализируем класс Nominatim и передаем в него user_agent. Здесь использование какого-то специализированного агента не принципиально и можно просто передать «GetLoc». Если мы заглянем в параметры данного класса, то увидим, что в него, кроме user_agent можно передать таймаут, прокси и еще множество других параметров, которые в данном случае не принципиальны.

Получение адреса по координатам с помощью Python IT, Программирование, Python, Разработка, Программист, Гайд, Обзор, Длиннопост

Обратимся к инициализированному классу и его методу reverse, в который передадим координаты в виде списка с широтой и долготой. В ответ мы получим адрес, который и возвратим из функции, обратившись к методу address.

Запрос координат у пользователя. Вывод полученного адреса в терминал

Создадим функцию main(), в которой будем запрашивать широту и долготу у пользователя. После передадим их в функцию get_addr и выведем полученный результат в терминал. Здесь необходимо немного обработать полученные данные, так как они возвращаются в обратном порядке, начиная с номера дома и заканчивая страной. Поэтому, добавлена обратная сортировка, разбиение строки по запятой в список и обратное его объединение.

Получение адреса по координатам с помощью Python IT, Программирование, Python, Разработка, Программист, Гайд, Обзор, Длиннопост

Тестирование функции

Протестируем написанный код. Возьмем произвольные координаты объекта с Яндекс.Карты и введем в запросе скрипта. В ответе мы видим полученный адрес, который совпадает с тем, что указан на Картах.

Получение адреса по координатам с помощью Python IT, Программирование, Python, Разработка, Программист, Гайд, Обзор, Длиннопост

Итог:

Как видим, с помощью использования сторонней библиотеки получить адрес по координатам не такая уж сложная задача. К слову, возникновение исключений, когда адрес не был найден, происходит достаточно редко. В большинстве случаев все отрабатывает корректно.

Ссылка на код тут!

Наши телеграм каналы

Life-Hack [Жизнь-Взлом]/Хакинг

243 поста2.7K подписчик

Добавить пост

Правила сообщества

Просьба уважать друг друга.