Существует несколько специальных сервисов для получения гео-данных по адресу или координатам долготы и широты.
Для работы требуется зарегистрировать почту на Yandex
, после в
разделе для разработчиков по адресу
Yandex Services
потребуется подключить сервис JavaScript API и HTTP Геокодер
после процесса регистрации, будет сгенерирован ключ API
Библиотека на PyPi
https://pypi.org/project/yandex-geocoder/
Yandex geocoder API хорошо парсит адреса но дает только 1000
запросов
в день, больше только платно.
Сам OSM это открытый API, не требует регистрации и секретных ключей.
Для работы с ним можно использовать библиотеку geocoder
которую
можно найти на PyPi
import geocoder
geo = geocoder.osm('Адресс тут')
print('lat = ', geo.json['lat'])
print('lng = ', geo.json['lng'])
OSM позволяет делать сколь угодно много запросов, но плохо парсит адреса.
Сервис DaData дает услуги по геокодированию, и многое другое, для работы потребуется регистрация, предоставляет 2 секретных ключа, для работы потребуются оба.
Установка модуля для работы с DaData
ример работы с сервисом
from dadata import Dadata
api_key = "api ключ"
secret_key = "секретный ключ"
dadata = Dadata(api_key, secret_key)
result = dadata.clean(name="address", source="москва сухонская 11")
print('lat = ', result['geo_lat'])
print('lng = ', result['geo_lon'])
Позволяет использовать 10 000
бесплатных запросов в день, под ккапотом
использует тот же сервис OSM, но берет на себя нагрузу по парсингу адреса
из строки, определяет адреса так же хорошо как и Yandex geocoder API