Cómo medir distancias de dos puntos geográficos y marcar los puntos en un mapa con Python y las librerías Folium y Geopy.

En este post vamos ha realizar un script en Python con el que vamos a poder ver la distancia entre dos puntos gracias a sus coordenadas geográficas y luego gracias a la librería Folium podremos visualizar los dos puntos que añadamos en un mapa.

¿Qué librerías vamos ha usar?

Folium: Librería que usaremos para poder visualizar el mapa, en un post anterior vimos como visualizar mapas con Python y dicha librería, en este artículo explicamos como instalar está librería para poder usarla.

Geopy: es una librería de Python para acceder a servicios de geocodificación que nos va ha facilitar localizar las coordenadas de direcciones en todo el mundo

Instalación y puesto en marcha

Primero vamos ha instalar la librería de Folium para ello abrimos la terminal donde tengamos instalado para introducir el siguiente comando:

pip install folium

Segundo vamos a instalar la librería Geopy en la misma terminal una vez instalado Folium introducimos el siguiente comando:

pip install geopy

Una vez instalado todo ya podemos crear el script.py para poder programar todo, lo primero es importar las librerías que vamos ha usar:

import folium
from geopy.distance import geodesic
from geopy.geocoders import Nominatim
app = Nominatim(user_agent="tycgis")

Una vez importadas las librerías procedemos a crear un input o entrada de texto para que el usuario pueda introducir una de la los localizaciones que quiere saber la distancia.

localizacion1 = input("Introduze la primera localización: ")
print("Primer punto -> " , localizacion1)

Una vez tengamos el primer punto, buscamos las coordenadas con el primer punto gracias a la librería Geopy, y de todo lo que Geopy nos ofrece solo necesitamos los puntos de latitud y longitud y lo imprimimos por pantalla para ver que todo esta correcto.

location1 = app.geocode(localizacion1).raw
latitude1 = location1["lat"]
longitude1 = location1["lon"]

punto1 = (latitude1, longitude1)

print(punto1)

Ejemplo de lo hace esta primera parte del código:

Para el segundo punto vamos hacer lo mismo que el primer punto pero cambiando los número 1 por el número 2 para poder diferenciar una dirección de otra.

localizacion2 = input("Introduze la segunda localización: ")
print("Segundo punto -> " , localizacion2)

location2 = app.geocode(localizacion2).raw
latitude2 = location2["lat"]
longitude2 = location2["lon"]

punto2 = (latitude2, longitude2)
print(punto2)

Una vez tengamos las dos direcciones ya podemos medir la distancia entre ellos para poder medir la distancia usamos una parte de la librería Geopy llamada geodesic para poder distancia entre las dos coordenadas:

distancia = geodesic((latitude1, longitude1), (latitude2, longitude2))

print("La distancia entre ", localizacion1 , " y " , localizacion2 , " es de ", distancia)

Ejemplo de lo hace esta parte del código:

Y ya solo nos queda representar los dos punto en un mapa gracias a Folium, esta parte del código la introducimos en los dos puntos explicados abajo, las dos direcciones que tenemos para que los pueda representar en un mapa.

map = folium.Map(localizacion1=[latitude1, longitude1], zoom_start=1)

# Punto 1
map.add_child(folium.Marker(punto1, popup=localizacion1, icon=folium.Icon(color='green')))

# Punto 2
map.add_child(folium.Marker(punto2, popup=localizacion2, icon=folium.Icon(color='red')))

map

Ejemplo de lo hace esta parte del código:

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (4 votos, promedio: 5,00 de 5)

Cargando...

Formación de calidad impartida por profesionales