Geolocalización en Python con Geopy

Geolocalización en Python con Geopy

La geolocalización es la técnica de obtener la posición geográfica de un lugar, objeto o persona. En Python, podemos realizar esta tarea utilizando la librería Geopy: https://geopy.readthedocs.io/en/stable/.

Instalación

Para instalar Geopy, podemos utilizar el siguiente comando:

pip install geopy

Geocodificación

La geocodificación es el proceso de convertir una dirección, ciudad o país en sus coordenadas geográficas (latitud y longitud). Con Geopy, podemos realizar esta tarea utilizando los siguientes métodos:

  • geocode(): Geocodifica una dirección o punto de referencia.
  • geocode_placemark(): Geocodifica un punto de referencia utilizando un objeto Placemark.
  • reverse(): Obtiene la dirección de una coordenada geográfica.

Ejemplos

Python
# Geocodificar una dirección
from geopy.geocoders import Nominatim

geolocator = Nominatim()
location = geolocator.geocode("Calle Mayor, 1, Madrid, España")

print(location.latitude, location.longitude)
# 40.416667, -3.703333

# Geocodificar un punto de referencia
from geopy.geocoders import ArcGIS

geolocator = ArcGIS()
location = geolocator.geocode("Plaza de Cibeles, Madrid, España")

print(location.latitude, location.longitude)
# 40.415333, -3.695556

# Obtener la dirección de una coordenada
from geopy.geocoders import Nominatim

geolocator = Nominatim()
location = geolocator.reverse(40.416667, -3.703333)

print(location.address)
# Calle Mayor, 1, Madrid, España

Distancia entre dos puntos

Geopy también nos permite calcular la distancia entre dos puntos utilizando el método distance().

Python
# Calcular la distancia entre Madrid y Barcelona
from geopy.distance import geodesic

madrid = (40.416667, -3.703333)
barcelona = (41.387762, 2.169927)

distance = geodesic(madrid, barcelona).km

print(distance)
# 621.7024000000001

Conclusión

Geopy es una librería muy potente que nos permite realizar tareas de geolocalización en Python. Con ella, podemos geocodificar direcciones, calcular distancias entre puntos y mucho más.