Cómo realizar geocodificación con GeoPy

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:

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.

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:

Let’s connect!

Date de alta en nuestra newsletter y te enviaremos GRATIS el ebook que te ayudará a impulsar tu perfil GIS:
Vitaminas MappingGIS

Tan solo una vez al mes recibirás las últimas novedades del sector GIS y de nuestros cursos