Python узнать адрес по координатам

Yandex Geocoder

Yandex Geocoder requires an API developer key, you can get it here to use this library.

Development and contribution

First of all you should install Poetry.

Подробности проекта

Ссылки проекта

Статистика

Метаданные

Лицензия: MIT License (MIT)

Требует: Python >=3.9,

Сопровождающие

Классификаторы

История выпусков Уведомления о выпусках | Лента RSS

Загрузка файлов

Загрузите файл для вашей платформы. Если вы не уверены, какой выбрать, узнайте больше об установке пакетов.

Source Distribution

Uploaded 17 янв. 2023 г. source

Built Distribution

Uploaded 17 янв. 2023 г. py3

Хеши для yandex_geocoder-3.0.1.tar.gz

Хеши для yandex_geocoder-3.0.1.tar.gz
Алгоритм Хеш-дайджест
SHA256 9150015565543643e82a61dfe6dad7e0591758ba71d46f23baa3c26e158bdf48 Копировать
MD5 e5d02271c76bac4c70640f9414f90b3a Копировать
BLAKE2b-256 24b929b6c1b7de04339f69a46611b1c4a79e7982f0821895d953b0ed03dd3bd9 Копировать

Хеши для yandex_geocoder-3.0.1-py3-none-any.whl

Хеши для yandex_geocoder-3.0.1-py3-none-any.whl
Алгоритм Хеш-дайджест
SHA256 f30c6e078ba07e3f7af1ac5e9a938e5681d90dd8cca735f843fd8e99d3ec6c2a Копировать
MD5 3ed7eb74e17cb947811f17dced0d3223 Копировать
BLAKE2b-256 1cb03ed31feebcc695fa0b98f7febbe209db3bd30b731b4dfba2a7996882893e Копировать

Помощь

О PyPI

Внесение вклада в PyPI

Использование PyPI

Разработано и поддерживается сообществом Python’а для сообщества Python’а.
Пожертвуйте сегодня!

PyPI», «Python Package Index» и логотипы блоков являются зарегистрированными товарными знаками Python Software Foundation.

Источник

Как определить координаты места по его адресу в Python?

координаты места по его адресу

координаты места по его адресу

Привет всем! Этот пост является логическим продолжением вот этого поста, посвященного определению расстояния между двумя точками на карте по координатам GPS. Сегодня мы разберемся, как определить координаты места по его адресу в Python.

На помощь (в который раз!) приходят библиотеки. Сегодня — библиотека geopy. Работает она с помощью ряда публично-доступных API, среди которых имеются OpenStreetMap Nominatim и Google Geocoding API, благодаря чему вы можете искать GPS-координаты по адресу или названию интересующешго вас места. Больше того! С помощью этой библиотеки вы можете определить дистанцию между двумя интересующими вас точками! А значит — никакой больше формулы Хаверсина — просто библиотека, и две строки кода. Пример — как всегда — ниже:

from geopy.geocoders import Nominatim #Подключаем библиотеку geolocator = Nominatim(user_agent="Tester") #Указываем название приложения (так нужно, да) adress = str(input('Введите адрес: \n')) #Получаем интересующий нас адрес location = geolocator.geocode(adress) #Создаем переменную, которая состоит из нужного нам адреса print(location) #Выводим результат: адрес в полном виде print(location.latitude, location.longitude) #И теперь выводим GPS-координаты нужного нам адреса

А теперь давайте определим дистанцию между двумя интересующими нас точками:

from geopy.geocoders import Nominatim #Подключаем библиотеку from geopy.distance import geodesic #И дополнения geolocator = Nominatim(user_agent="Tester") #Указываем название приложения address_1 = str(input('Введите город 1: \n')) #Получаем название первого города address_2 = str(input('Введите город 2: \n')) #Получаем название второго города location_1 = geolocator.geocode(address_1) #Получаем полное название первого города location_2 = geolocator.geocode(address_2) #Получаем полное название второго города print('Город 1: ', location_1) #Выводим первичные данные print('Город 2: ', location_2) #Выводим первичные данные print('Координаты города 1: ', location_1.latitude, location_1.longitude) #Выводим координаты первого города gps_point_1 = location_1.latitude, location_1.longitude #Выводим координаты первого города gps_point_2 = location_2.latitude, location_2.longitude #Выводим координаты второго города print('Координаты города 2: ', location_2.latitude, location_2.longitude) #Выводим общие данные print('Дистанция между городом', location_1, 'и городом ', location_2, ': ', geodesic(gps_point_1, gps_point_2).kilometers, ' километров') #Выводим полученный результат в километрах

Блин, все реально очень просто, я просто в восторге.
Как всегда — в случае возникновения вопросов пишите на почту, или в Телеграм.

Читайте также:  Colors and codes css

Источник

Telegram-бот для получения адреса по локации или координатам (Python)

Привет! Представь ситуацию, когда тебе скинули координаты или локацию, но ты хочешь срочно узнать адрес этого места.

Сегодня попробуем написать Telegram-бота для получения адреса по координатам или локации.

В итоге у тебя получится вот такой бот @SayMyAddressBot.

Что нам для этого потребуется?

  • Бот в Telegram;
  • Обратный геокодинг от Яндекса. Геокодинг это такой сервис, который позволяет получить из адреса координаты, а нам нужно наоборот, поэтому «обратный геокодинг»;
  • Установленный Python и библиотека requests для посылки запросов;
  • Установленная библиотека Python-telegram-bot.

Но давай обо всём по порядку!

1) Ищем в поиске Telegram бота по нику @botfather. Этот бот ответственен за регистрацию всех остальных ботов;

2) Отправляем ему /newbot и начинаем создание бота;

3) Отправляем имя бота (оно может быть любым) и ник бота (обязательно должен оканчиваться на «bot»). Если у тебя выходит ошибка, то значит этот ник занят. Пробуй другой.

4) Получаем токен бота (скопируй этот токен и никому не давай😅).

Скриншот ниже (токен выделен красной рамкой).

Супер! Бот создан и уже доступен внутри Telegram по нику. Можешь вбить в поиске и убедиться. Также ты можешь найти его по ссылке t.me/НикТвоегоБота. Например на скриншоте я зарегистрировал SayMyAddressBot, значит его ссылка t.me/SayMyAddressBot. Сохрани такую ссылку с ником твоего бота. Скоро она нам пригодится.

Отлично. С ботом разобрались.

Я надеюсь, что у тебя есть аккаунт на Яндексе. Если нет, то тебе сюда.

Итак. Как работает обратный геокодинг от Яндекса?

Всё очень просто. Нужно отправить GET запрос с координатами и получить в ответ адрес.

Вот пример такого запроса:

  • format: в каком формате возвращать данные. В данном случае json;
  • lang: язык возвращаемых данных. В данном случае ru_RU (русский);
  • kind: вид адреса. В данном случае house (точность до дома);
  • geocode: координаты (сначала идет долгота, затем широта);
  • apikey: токен для доступа.
Читайте также:  Html viewer 3 браузер

P.S.: параметров гораздо больше, но нам они не нужны. Подробнее можешь почитать тут.

Просто, правда? Послал запрос с координатами, получил адрес 😊.

Как видишь у нас есть все данные кроме токена. Займемся его получением!

1) Заходим на страницу разработчика и входим в кабинет (аккаунт на Яндексе у тебя уже есть).

2) Получилось? Отлично. Далее ты увидишь вот такую страницу.

Жми желтую кнопку «Подключить API»

3) Теперь нужно выбрать какой именно токен нам нужен.

Выбирай «JavaScript API и HTTP геокодер». За ним мы и пришли.

4) Далее заполняем формочку твоими данными.

В поле «Ссылка на ваш сайт» пиши ссылку на своего бота, которую мы сохранили ранее.

Ну и тыкай кнопку «Продолжить».

5) Тебе должно всплыть окошко с сообщением об успешной регистрации.

6) Вот и всё. На открывшейся странице уже лежит наш искомый токен геокодера (выделил красной рамкой). Его тоже сохрани и никому не давай.

Токен активируется через 15 минут после создания. Можешь прямо в браузере (Chrome, Safari или что там у тебя) вбить (не забудь подставить свой токен в конце).

и получить ответ в json виде:

Пол дела сделано. У нас есть и Telegram бот (с его токеном) и геокодер (с его токеном).

Теперь с помощью Python мы их объединим!

Python у тебя уже установлен? Если нет, то тебе сюда.

В Python есть библиотека requests и она позволяет посылать запросы (как ты только что делал в браузере). Это нам подходит.

1) Открывай консоль (терминал) и устанавливай requests с помощью команды:

2) Теперь нужно будет написать небольшой код на Python для получения адреса по координатам.

Открывай свою среду разработки или просто текстовый файл (нужно будет сохранить его с окончанием. py, а не. txt). Назовём файл main.py.

И добавляй туда этот код. Он полностью расписан в комментариях.

#импортируем библиотеку requests import requests #создаем функцию get_address_from_coords с параметром coords, куда мы будем посылать координаты и получать готовый адрес. def get_address_from_coords(coords): #заполняем параметры, которые описывались выже. Впиши в поле apikey свой токен! PARAMS = < "apikey":"ТОКЕН", "format":"json", "lang":"ru_RU", "kind":"house", "geocode": coords >#отправляем запрос по адресу геокодера. try: r = requests.get(url=»https://geocode-maps.yandex.ru/1.x/», params=PARAMS) #получаем данные json_data = r.json() #вытаскиваем из всего пришедшего json именно строку с полным адресом. address_str = json_data[«response»][«GeoObjectCollection»][«featureMember»][0][«GeoObject»][«metaDataProperty»][«GeocoderMetaData»][«AddressDetails»][«Country»][«AddressLine»] #возвращаем полученный адрес return address_str except Exception as e: #если не смогли, то возвращаем ошибку return «error» if __name__ == ‘__main__’: #даем запрос на получение адреса с координатами 37.617585, 55.751903 address_str = get_address_from_coords(«37.617585,55.751903») #распечатываем адрес print(address_str)

3) В консоли (терминале) переходим в папку с нашим файлом через команду «cd» (у меня он лежит в папке Documents/Python/).

И запускаем файл с помощью «python3».

Читайте также:  Не работает javascript телефоне

Как результат, ты получишь адрес координат из кода.

Мы почти закончили! Осталось совсем немного.

Здесь в целом всё точно также, как и в предыдущей части.

  • Установить библиотеку python-telegram-bot для управления нашим ботом.
  • Написать немного кода.

1) Снова открывай консоль (терминал) и устанавливай python-telegram-bot с помощью команды:

pip install python-telegram-bot

2) Пришло время написать код нашего бота. Я снова всё опишу в комментариях (не забудь поставить токен геокодера и токен бота в нужных местах в коде)!

#Подлкючаем библиотеку requests import requests #Подключаем нужные для бота модули из библиотеки telegram.ext from telegram.ext import Updater, CommandHandler, MessageHandler, Filters #это наша функция для получения адреса по координатам. С ней мы знакомы. def get_address_from_coords(coords): PARAMS = < "apikey": "ТОКЕН_ГЕОКОДЕРА", "format": "json", "lang": "ru_RU", "kind": "house", "geocode": coords >try: r = requests.get(url=»https://geocode-maps.yandex.ru/1.x/», params=PARAMS) json_data = r.json() address_str = json_data[«response»][«GeoObjectCollection»][«featureMember»][0][«GeoObject»][«metaDataProperty»][ «GeocoderMetaData»][«AddressDetails»][«Country»][«AddressLine»] return address_str except Exception as e: #единственное что тут изменилось, так это сообщение об ошибке. return «Не могу определить адрес по этой локации/координатам.\n\nОтправь мне локацию или координаты (долгота, широта):» #Эта функция будет использоваться когда человек первый нажал в боте START def start(update, context): #эта строка отправляет сообщение пользователю с просьбой послать локацию или координаты update.message.reply_text(‘Отправь мне локацию или координаты (долгота, широта):’) #Эта функция будет использоваться, если пользователь послал в бота любой текст. #Мы ожидаем координаты, но если прийдет что-то другое не страшно, ведь мы описали в функции получения адреса возвращение ошибки в случае чего. def text(update, context): #получаем текст от пользователя coords = update.message.text #отправляем текст в нашу функцио получения адреса из координат address_str = get_address_from_coords(coords) #вовщращаем результат пользователю в боте update.message.reply_text(address_str) #Эта функция будет использоваться, если пользователь послал локацию. def location(update, context): #получаем обьект сообщения (локации) message = update.message #вытаскиваем из него долготу и ширину current_position = (message.location.longitude, message.location.latitude) #создаем строку в виде ДОЛГОТА,ШИРИНА coords = f»,» #отправляем координаты в нашу функцию получения адреса address_str = get_address_from_coords(coords) #вовщращаем результат пользователю в боте update.message.reply_text(address_str) #Это основная функция, где запускается наш бот def main(): #создаем бота и указываем его токен updater = Updater(«ТОКЕН_БОТА», use_context=True) #создаем регистратор событий, который будет понимать, что сделал пользователь и на какую функцию надо переключиться. dispatcher = updater.dispatcher #регистрируем команду /start и говорим, что после нее надо использовать функцию def start dispatcher.add_handler(CommandHandler(«start», start)) #регистрируем получение текста и говорим, что после нее надо использовать функцию def text dispatcher.add_handler(MessageHandler(Filters.text, text)) #регистрируем получение локации и говорим, что после нее надо использовать функцию def location dispatcher.add_handler(MessageHandler(Filters.location, location)) #запускаем бота updater.start_polling() updater.idle() if __name__ == ‘__main__’: #запускаем функцию def main main()

3) Создаем файл main_bot.py и сохраняем этот код в нём.

4) В консоли (терминале) переходим в папку с нашим файлом через команду «cd» (у меня он лежит в папке Documents/Python/).

Источник

Оцените статью