Ya he demostrado varias posibilidades de geocodificación de datos espaciales en forma de nombres de ciudades o localidades en R, utilizando APIs como la proporcionada por Open Street Map.
En este post demostraré la posibilidad de geocodificar nombres de localidades en Python, utilizando Geopy. Geopy es un módulo de Python que permite la geocodificación de cadenas proporcionando acceso a varios servicios de geocodificación.
A continuación importo Geopy (soporta el comando pip install) y lo utilizo para geocodificar una lista de nombres de ciudades utilizando el servicio Nominatim. Este es un servicio basado en Open Street Map.
# importando Geopy import geopy # obtener un manejador para un objeto de servicio de Nominatim service = geopy.Nominatim(user_agent = "myGeocoder") # geocodificar el nombre de una ciudad utilizando el servicio Nominatim (es decir, OSM) service.geocode("Berlin, Germany")
Location(Berlin, Deutschland, (52.5170365, 13.3888599, 0.0))
La función geocode() devuelve un tipo de datos especial de tipo localización. Un objeto de localización tiene varios atributos:
# creación de otro objeto de localización mediante la geocodificación del nombre de la ciudad de Berlín en Alemania utilizando el servicio Nominatim locationObj = service.geocode("Berlin, Germany") # latitud print(locationObj.latitude) # longitud print(locationObj.longitude)
52.5170365 13.3888599
Utilizando estas coodinadas de latitud y longitud se podría ahora, por ejemplo, colocar un marcador en un mapa, utilizando el módulo Folium en Python en combinación con Geopy:
# import folium import folium # crear un mapa base centrado en Berlín mapObj = folium.Map(location = [locationObj.latitude,locationObj.longitude], zoom_start = 5) # crear un objeto marcador para Berlín markerObj = folium.Marker(location = [locationObj.latitude,locationObj.longitude]) # añadir marcador al mapa markerObj.add_to(mapObj) # mostrar mapa mapObj
Ingeniero industrial especializado en optimización y simulación (R, Python, SQL, VBA)
Leave a Reply