GeoPy es una librería de python para acceder a servicios de geocodificación.
GeoPy facilita a desarrolladores de Python localizar las coordenadas de direcciones, ciudades, países y puntos de referencia en todo el mundo mediante geocodificadores de terceros y otras fuentes de datos.
GeoPy incluye clases de geocodificación para los siguientes servicios:
- OpenStreetMap Nominatim
- ESRI ArcGIS
- Google Geocoding API (V3)
- Baidu Maps
- Bing Maps API
- Yandex
- IGN France
- Geolake
- GeoNames
- Pelias
- geocode.earth
- OpenMapQuest
- PickPoint
- What3Words
- OpenCage
- SmartyStreets
- GeocodeFarm
- Here
- MapBox
La variedad de geocodificadores se localizan en geopy.geocoders.
Geopy se ha testeado en CPython (versiones 2.7, 3.4, 3.5, 3.6, 3.7), PyPy y PyPy3. Geopy no admite ni admitirá CPython 2.6.
Índice
Instalación
Para instalar GeoPy debemos utilizar la librería pip.
pip install geopy
¿Es necesario instalar pip?
Depende, pip ya está instalado si está utilizando Python 2> = 2.7.9 o Python 3> = 3.4 descargado de python.org o si estás trabajando en un entorno virtual creado por virtualenv o pyvenv.
Pero si utilizas otro Python necesitarás instalar pip.
En nuestro caso utilizaremos una distribución descargada de python.org. Por lo que el primer paso será abrir el símbolo del sistema y ubicarnos en la ruta en la que tenemos instalado Python (a no ser que tengas la ruta definida en el Path del sistema).
En la ventana de símbolo del sistema escribimos el siguiente comando para ubicarnos en el directorio de instalación de python:
cd C:\Users\Aurelio\AppData\Local\Programs\Python\Python37-32
Una vez ubicados en la ruta procedemos a instalar GeoPy, para lo cual escribimos:
python -m pip install geopy
Como vemos en la imagen inferior (en amarillo), se nos advierte que existe una versión más actualizada de pip, por lo que procedemos a actualizar tal y como nos indica, con el comando:
python -m install --upgrade pip
Geocodificación directa con GeoPy
Para geolocalizar una dirección y obtener las coordenadas escribimos en Python:
>>> from geopy.geocoders import Nominatim >>> geolocator = Nominatim(user_agent="specify_your_app_name_here")
De esta forma importamos el geocodificador Nominatim de GeoPy.
A continuación introducimos una dirección (basta indicar la provincia) y solicitamos la dirección exacta:
>>> location = geolocator.geocode("Calle del Universo, 3, Valladolid") >>> print(location.address) Calle del Universo, Pilarica, Valladolid, Castilla y León, 47011, España
A continuación pedimos las coordenadas de la latitud y de la longitud de la ubicación:
>>> print((location.latitude, location.longitude)) (41.6569033, -4.6990056) >>> print(location.raw) {'place_id': '93034279', 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'way', 'osm_id': '75689481', 'boundingbox': ['41.6550687', '41.6587924', '-4.6990298', '-4.698207'], 'lat': '41.6569033', 'lon': '-4.6990056', 'display_name': 'Calle del Universo, Pilarica, Valladolid, Castilla y León, 47011, España', 'class': 'highway', 'type': 'residential', 'importance': 0.8099999999999999}
Vamos a verlo todo junto:
Geocodificación inversa con GeoPy
Geocodificación inversa o cómo encontrar la dirección que corresponde a un conjunto de coordenadas.
>>> from geopy.geocoders import Nominatim >>> geolocator = Nominatim(user_agent="specify_your_app_name_here") >>> location = geolocator.reverse("42.59944444, -5.56666667") >>> print(location.address) Catedral de León, Plaza de Regla, León, Castilla y León, 24006, España
Medir distancias con GeoPy
Geopy puede calcular la distancia geodésica entre dos puntos utilizando la distancia geodésica, con un valor predeterminado de la distancia geodésica disponible como la función geopy.distance.distance.
Aquí hay un ejemplo de uso de la distancia geodésica entre las coordenadas anteriores de las ubicaciones de Valladolid y León expresadas en kilómetros:
>>> from geopy.distance import geodesic >>> calle = (41.6569033, -4.6990056) >>> catedral = (42.59944444, -5.56666667) >>> print(geodesic(calle, catedral).kilometers) 126.9140
En esta entrada del blog de gvSIG encontrarás unas sencillas instrucciones parea realizar geocodificación en gvSIG utilizando GeoPy
Enlaces de interés:
- Documentación: https://geopy.readthedocs.io/
- Código fuente: https://github.com/geopy/geopy
- Issue Tracker: https://github.com/geopy/geopy/issues
- Stack Overflow: https://stackoverflow.com/questions/tagged/geopy
- PyPI: https://pypi.org/project/geopy/
Licenciado en Geografía. Máster en Sistemas de Información Geográfica. Consultor GIS desde el año 2004. En MappingGIS desde el año 2012 para ayudarte a impulsar tu perfil GIS y diferenciarte de la competencia. Echa un vistazo a todos nuestros cursos de SIG online.