geopy — это клиент Python для нескольких популярных веб-сервисов геокодирования.
geopy позволяет разработчикам Python легко находить координаты адресов, городов, стран и достопримечательностей по всему миру с помощью сторонних геокодеров и других источников данных.
geopy включает классы геокодирования для OpenStreetMap Nominatim, Google Geocoding API (V3) и многих других сервисов геокодирования. Полный список доступен в разделе документации «Геокодеры». Классы геокодеров расположены в geopy.geocoders.
geopy тестируется на CPython (версии 3.7, 3.8, 3.9, 3.10, 3.11, 3.12) и PyPy3. Линия geopy 1.x также поддерживает CPython 2.7, 3.4 и PyPy2.
© geopy contributors 2006–2018 (см. АВТОРЫ) по лицензии MIT.
Установите с помощью pip с помощью:
pip установить geopy
Или загрузите колесо или архив исходного кода с PyPI.
Чтобы геолоцировать запрос по адресу и координатам:
>>> from geopy.geocoders import Nominatim
>>> geolocator = Nominatim( user_agent = " specify_your_app_name_here " )
>>> location = geolocator.geocode( " 175 5th Avenue NYC " )
>>> print (location.address)
Flatiron Building, 175, 5th Avenue, Flatiron, New York, NYC, New York, ...
>>> print ((location.latitude, location.longitude))
(40.7410861, -73.9896297241625)
>>> print (location.raw)
{'place_id': '9167009604', 'type': 'attraction', ...}
Чтобы найти адрес, соответствующий набору координат:
>>> from geopy.geocoders import Nominatim
>>> geolocator = Nominatim( user_agent = " specify_your_app_name_here " )
>>> location = geolocator.reverse( " 52.509669, 13.376294 " )
>>> print (location.address)
Potsdamer Platz, Mitte, Berlin, 10117, Deutschland, European Union
>>> print ((location.latitude, location.longitude))
(52.5094982, 13.3765983)
>>> print (location.raw)
{'place_id': '654513', 'osm_type': 'node', ...}
Geopy может рассчитать геодезическое расстояние между двумя точками, используя геодезическое расстояние или расстояние по большому кругу, при этом геодезическое расстояние по умолчанию доступно как функция geopy.distance.distance.
Вот пример использования геодезического расстояния с использованием пары кортежей (lat, lon)
:
>>> from geopy.distance import geodesic
>>> newport_ri = ( 41.49008 , - 71.312796 )
>>> cleveland_oh = ( 41.499498 , - 81.695391 )
>>> print (geodesic(newport_ri, cleveland_oh).miles)
538.390445368
Используя расстояние по большому кругу, а также пару кортежей (lat, lon)
:
>>> from geopy.distance import great_circle
>>> newport_ri = ( 41.49008 , - 71.312796 )
>>> cleveland_oh = ( 41.499498 , - 81.695391 )
>>> print (great_circle(newport_ri, cleveland_oh).miles)
536.997990696
Дополнительную документацию и примеры можно найти в разделе «Прочитать документацию».