# visualizacion-geospacial-avanzada-con-geopandas
Visualización Geospacial Avanzada con GeoPandas
Volver a la portada del cursoVisualización de Polígonos y Líneas
Sección 3 · Visualizaciones Avanzadas
Visualización de polígonos y líneas
En este notebook practicas con dos tipos de geometría que se dibujan distinto: los polígonos (estados) tienen relleno y borde, y las líneas (ríos y rutas) solo tienen trazo. Construirás un mapa de México con sus estados, el contorno del país, los ríos principales y rutas desde la capital hacia otras ciudades, y terminarás con una versión interactiva. Descarga el notebook adjunto a esta lección y ejecútalo celda por celda.
Antes de empezar
Necesitas geopandas, matplotlib, mapclassify y folium (para el mapa interactivo). Los datos vienen de Natural Earth y se leen directo de su URL, así que la primera ejecución necesita conexión a internet.
Paso 1: polígonos con estilo
Un polígono tiene dos partes que se controlan por separado: el relleno (color o facecolor) y el borde (edgecolor y linewidth). Además, dissolve() une todos los estados en un solo polígono, el contorno del país, y boundary convierte polígonos en líneas:
import geopandas as gpd
import matplotlib.pyplot as plt
NE = "https://naciscdn.org/naturalearth/10m/"
estados = gpd.read_file(NE + "cultural/ne_10m_admin_1_states_provinces.zip",
where="iso_a2 = 'MX'", columns=["name", "iso_a2"])
estados = estados.dropna(subset=["name"]).to_crs(6372)
pais = estados.dissolve()
fig, ax = plt.subplots(figsize=(10, 7))
estados.plot(ax=ax, color="#f2efe9", edgecolor="#b0a99f", linewidth=0.4)
pais.boundary.plot(ax=ax, color="#333333", linewidth=1.2)
ax.set_axis_off()
Paso 2: líneas leídas con un rectángulo
La capa de ríos de Natural Earth cubre el mundo. Con bbox lees solo los que tocan el rectángulo de México y con gpd.clip recortas los tramos que salen del país. El grosor de la línea puede depender de una columna; aquí, de scalerank (menor valor, río más importante):
rios = gpd.read_file(NE + "physical/ne_10m_rivers_lake_centerlines.zip",
bbox=(-118, 14, -86, 33), columns=["name", "scalerank"])
rios = gpd.clip(rios.to_crs(6372), pais)
rios["grosor"] = 2.5 - rios["scalerank"] / 5
print(len(rios), "tramos de río dentro de México")
fig, ax = plt.subplots(figsize=(10, 7))
estados.plot(ax=ax, color="#f2efe9", edgecolor="#b0a99f", linewidth=0.4)
rios.plot(ax=ax, color="#3b82c4", linewidth=rios["grosor"])
ax.set_axis_off()
Paso 3: crear líneas desde puntos
Las líneas también se construyen con Shapely. Unes la Ciudad de México con otras cinco ciudades usando LineString; como el CRS está en metros, length da directamente la distancia en línea recta:
from shapely.geometry import LineString
ciudades = gpd.read_file(NE + "cultural/ne_10m_populated_places_simple.zip",
where="iso_a2 = 'MX'",
columns=["name", "pop_max", "iso_a2"]).to_crs(6372)
top = ciudades.nlargest(6, "pop_max")
origen = top.geometry.iloc[0]
rutas = gpd.GeoDataFrame(
{"destino": top["name"].iloc[1:].values},
geometry=[LineString([origen, p]) for p in top.geometry.iloc[1:]],
crs=6372)
rutas["km"] = (rutas.length / 1000).round(0)
print(rutas[["destino", "km"]])
Paso 4: el mapa completo
Combinas las cuatro capas en orden: estados, ríos, rutas y ciudades. Agregas una leyenda manual para las líneas, porque plot() de GeoPandas solo genera leyendas automáticas para coropletas y categorías.
Paso 5: versión interactiva
explore() crea un mapa web con Folium: puedes acercarte, moverte y pasar el ratón sobre cada estado para ver sus atributos. Se guarda como HTML y se abre en cualquier navegador. Usa los mosaicos de OpenStreetMap, que no requieren clave (los de CartoDB ahora piden una).
Ejercicios
- Dibuja solo los ríos con
scalerankmenor o igual a 6 y compara la legibilidad. - Resalta tu estado con otro color y un borde más grueso.
- Calcula la longitud total de ríos dentro de cada estado con
gpd.overlayo con un recorte por estado. - Agrega al mapa interactivo una capa con las rutas usando el argumento
m=deexplore().
Trampas comunes
- Pasar
colora una capa de líneas esperando un relleno: las líneas no tienen relleno, solo trazo. - Calcular longitudes en
EPSG:4326: el resultado sale en grados. - Olvidar
clip: los ríos de Estados Unidos y Guatemala aparecen en el mapa de México.