11. Visualización de Mapas I#

11.1. Librerías para Mapas con Python#

Table 11.1 Algunas librerías de Python para Mapas#

Librería

Descripción

Arcy

Sirve para el análisis espacial, la conversión de datos, la administración y la producción de mapas utilizando los programas SIG de ESRI.

Geopandas

Es un proyecto de código abierto que facilita el trabajo con datos geoespaciales en Python y extiende los tipos de datos utilizados por pandas para permitir operaciones espaciales en tipos geométricos.

Cartopy

Cartopy es un paquete de Python diseñado para el procesamiento de datos geoespaciales con el fin de producir mapas y otros análisis de datos geoespaciales.

GDAL/OGR

Es una biblioteca traductora para formatos de datos geoespaciales raster y vectoriales que se publica bajo una licencia de código abierto de estilo MIT por la Open Source Geospatial Foundation.

Geemap

Es un paquete de Python para el análisis y visualización geoespacial interactivos con Google Earth Engine (GEE), que es una plataforma de computación en la nube con un catálogo de múltiples petabytes de imágenes satelitales y conjuntos de datos geoespaciales.

Geopy

Es una librería que permite acceder a servicios de geocodificación,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.

Documentación de Librerías para Mapas

11.2. Librería Folium#

¿Qué es Folium?

Folium es una biblioteca de Python que se utiliza para la visualización de datos geoespaciales en mapas interactivos. Se basa en la popular biblioteca de JavaScript Leaflet.js y permite crear mapas detallados y personalizables de manera sencilla y eficaz.

11.3. Creación de un Mapa#

import folium as fl
import pandas as pd
import geopandas as gpd
from folium import plugins
import folium
from folium.plugins import MiniMap
from folium.plugins import FloatImage, Fullscreen
Web de mapas de leaflet con folium

11.3.1. Mapa Base - Leaflet - OpenStreetMap#

Por defecto, Folium utiliza OpenStreetMap como mapa base. Pueden elegirse otros mapas base mediante el parámetro tiles, el cual tiene un conjunto de valores predeterminados:
  • “OpenStreetMap”

  • “Mapbox Bright”

  • “Mapbox Control Room”

  • “Stamen” (“Terrain”, “Toner” y “Watercolor”)

  • “Cloudmade” (Requiere una llave del API)

  • “Mapbox” (Requiere una llave del API)

  • “CartoDB” (“positron” y “dark_matter”)

¿Qué es OpenStreetMap?

OpenStreetMap (OSM) es un proyecto colaborativo para crear mapas editables y libres, creado por una comunidad creciente de mappers de todo el mundo. La comunidad de OpenStreetMap es diversa y entusiasta y crece todos los días. Entre los colaboradores figuran cartógrafos apasionados, profesionales de GIS, ingenieros que hacen funcionar los servidores de OSM, personal humanitario que elabora mapas de zonas de desastre, y muchas personas más..
Web de OpenStreetMap
mapa_base= fl.Map()
mapa_base
Make this Notebook Trusted to load map: File -> Trust Notebook
mapa_base.save("001_mapa_base.html")

11.3.2. Latitud - Longitud - Única Ubicación#

¿Cómo obtener las coordenadas de un lugar?

Para obtener las coordenadas de un lugar solo abre Google Maps, haz clic con el botón derecho en el lugar o en el área del mapa o búscalo en "Buscar lugar". Se abrirá una ventana emergente. Puedes encontrar tu latitud y longitud en formato decimal en la parte superior. Luego haz clic con el botón izquierdo en la latitud y la longitud y la copias automaticamente y la pegas en el algortimo respectivo que estás trabajando.
# Colegio San Francisc Javier: -41.48342776832596, -72.88303959993823

CSFJ=fl.Map (location=[-41.485252250380675, -72.89014208945709], zoom_start=18)
CSFJ
Make this Notebook Trusted to load map: File -> Trust Notebook
CSFJ.save("002_mapa_CSF.html")

11.3.4. Tipos de Tiles (Teselas):#

¿Qué es Tiles?

El argumento tiles permite especificar diferentes tipos de mapa base, tales como Stamen Terrain, CartoDB Positron, stamentoner, Cartodb dark_matter, etc. El valor por defecto es "OpenStreetMap" y puedes encontrar más estilos online.

11.3.4.1. Mini Mapa - Tiles - FullScreen#

CSFJ03=fl.Map(location=[-41.48342776832596, -72.88303959993823], zoom_start=18, tiles="CartoDB Positron") #Revisar porque no siempre el tile funciona
#CSFJ02=fl.Map(location=[-41.48342776832596, -72.88303959993823], zoom_start=18)

imagen_01= "/Users/claudiorojas/Documents/Consultora Iteracion Data Science/Logos/Fiverr Premium Kit v2 Iteracion/PNG Logo Files/Transparent Logo.png"

FloatImage(imagen_01,left=90, bottom=90).add_to(CSFJ03)

fl.Marker(location=[-41.485252250380675, -72.89014208945709], icon=fl.Icon(color="purple",icon="heart"), tooltip="<b>CSFJ</b>").add_to(CSFJ03)
fl.Circle(location=[-41.485252250380675, -72.89014208945709], color="orange",fill_color="red",weight=10, fill_opacity=0.4, tooltip="Jesuitas").add_to(CSFJ03)

#MiniMap(position="bottomleft",toggle_display= True).add_to(CSFJ02)
MiniMap(position="bottomleft",toggle_display= True, tile_layer="CartoDB Positron").add_to(CSFJ03) #revisar porque no siempre tile funciona


CSFJ03
Make this Notebook Trusted to load map: File -> Trust Notebook
# Si deseas guardar el mapa en formato html en tu computador: CSFJ03.save("002_mapa_CSF.html")

11.3.5. Configuración Popup#

¿Qué es Popup?

El parámetro popup se utiliza para especificar una hilera HTML que se desplegará en una ventana emergente al hacer clic sobre el marcador.
CSFJ05=fl.Map(location=[-41.48342776832596, -72.88303959993823], zoom_start=18, tiles="CartoDB Positron") #Revisar porque no siempre el tile funciona

html_001='''
<b style="font-family: Arial; "><b>Lugar: Colegio San Francisco Javier</b><br>
<b style="font-family: Arial; ">Latitud: -41.48342776832596</b><br>
<b style="font-family: Arial; ">Longitud: -72.88303959993823</b><br><br>
<b style="font-family: Arial; ">web: <a href="https://goo.su/tM65oO9" target= "_blank">Colegio San Francisco Javier</b><br><br>
<center><img src="https://goo.su/LFaJ" width=200 height=100></center>

'''

iframe = fl.IFrame(html=html_001,width=300,height=250)


fl.Marker(location=[-41.485252250380675, -72.89014208945709], icon=fl.Icon(color="purple",icon="heart"), popup=fl.Popup(iframe), tooltip="<b>CSFJ</b>").add_to(CSFJ05)

fl.Circle(location=[-41.485252250380675, -72.89014208945709], color="orange",fill_color="red",weight=10, fill_opacity=0.4, tooltip="Jesuitas").add_to(CSFJ05)

MiniMap(position="bottomleft",toggle_display= True, tile_layer="CartoDB Positron").add_to(CSFJ05) #revisar porque no siempre tile funciona

fl.TileLayer("Stamen Terrain").add_to(CSFJ05)
fl.TileLayer("stamen toner").add_to(CSFJ05)
fl.TileLayer("CartoDB Positron").add_to(CSFJ05)
fl.TileLayer("stamenwatercolor").add_to(CSFJ05)
fl.TileLayer("OpenStreetMap").add_to(CSFJ05)
fl.TileLayer("Cartodb dark_matter").add_to(CSFJ04)

fl.LayerControl(position="bottomright").add_to(CSFJ05)

CSFJ05
Make this Notebook Trusted to load map: File -> Trust Notebook
# Si deseas guardar el mapa en formato html en tu computador: 
CSFJ05.save("002_mapa_CSF.html")

11.3.6. Multiples Marcadores#

html_001='''
<b style="font-family: Arial; "><b>Lugar: Colegio San Francisco Javier</b><br>
<b style="font-family: Arial; ">Latitud: -41.48342776832596</b><br>
<b style="font-family: Arial; ">Longitud: -72.88303959993823</b><br><br>
<b style="font-family: Arial; ">web: <a href="https://goo.su/tM65oO9" target= "_blank">Colegio San Francisco Javier</b><br><br>
<center><img src="https://goo.su/LFaJ" width=200 height=100></center>

'''

html_002='''
<b style="font-family: Arial; "><b>Lugar: Universidad San Sebastián</b><br>
<b style="font-family: Arial; ">Latitud: -41.46805828626035</b><br>
<b style="font-family: Arial; ">Longitud: -72.90724385396024</b><br><br>
<b style="font-family: Arial; ">web: <a href="https://onx.la/9f9f9" target= "_blank">Universidad San Sebastián</b><br><br>
<center><img src="https://www.uss.cl" width=200 height=100></center>

'''

html_003='''
<b style="font-family: Arial; "><b>Lugar: Mall Alerce</b><br>
<b style="font-family: Arial; ">Latitud: -41.45911787343535</b><br>
<b style="font-family: Arial; ">Longitud: -72.92277920892815</b><br><br>
<b style="font-family: Arial; ">web: <a href="http://www.pasmar.cl/paseo-alerce/" target= "_blank">Mall Alerce</b><br><br>
<center><img src="https://goo.su/zjBH" width=200 height=100></center>

'''

iframe_1 = fl.IFrame(html=html_001,width=300,height=250)

iframe_2 = fl.IFrame(html=html_002,width=300,height=250)

iframe_3 = fl.IFrame(html=html_003,width=300,height=250)

Centro=fl.Map(location=[-41.45979327156361, -72.92269337820014], zoom_start=18) 


fl.Marker(location=[-41.485252250380675,-72.89014208945709], icon=fl.Icon(color="purple",icon="heart"), popup=fl.Popup(iframe_1), tooltip="<b>CSFJ</b>").add_to(Centro)
fl.Marker(location=[-41.46805828626035,-72.90724385396024], icon=fl.Icon(color="red",icon="tower"), popup=fl.Popup(iframe_2), tooltip="<b>USS</b>").add_to(Centro)
fl.Marker(location=[-41.45911787343535,-72.92277920892815], icon=fl.Icon(color="blue",icon="flag"), popup=fl.Popup(iframe_3), tooltip="<b>Mall</b>").add_to(Centro)



Centro
Make this Notebook Trusted to load map: File -> Trust Notebook
# Si deseas guardar el mapa en formato html en tu computador: 
Centro.save("003_mapa_CSF.html")