MAT281 - Laboratorio N°06: Visualizacion Geoespacial con GeoPandas¶
Objetivos del laboratorio¶
- Comprender los conceptos de geometria, GeoDataFrame y sistema de referencia (CRS).
- Cargar y explorar datos espaciales desde GeoJSON.
- Construir mapas coropleticos (relleno segun una variable).
- Graficar mapas de puntos y aplicar operaciones espaciales basicas.
- Generar un mapa interactivo con
explore().
Instrucciones¶
Lea con atencion cada problema antes de resolverlo. Reemplace cada celda que contiene # FIXME con su propia solucion y, cuando se solicite, responda las preguntas en celdas de texto.
Nota: Puede apoyarse en asistentes virtuales (ChatGPT, Gemini, Claude) o en el autocompletado de Colab, pero asegurese de entender cada linea de codigo que entregue.
Requisito: instala las librerias geoespaciales si no las tienes (descomenta la celda de instalacion).
In [ ]:
Copied!
# !pip install geopandas folium mapclassify
# !pip install geopandas folium mapclassify
In [ ]:
Copied!
import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt
import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt
Dataset: paises del mundo¶
Cargaremos un GeoJSON publico con los poligonos de los paises del mundo y sus atributos (poblacion estimada, continente, nombre).
In [ ]:
Copied!
url = ('https://raw.githubusercontent.com/'
'datasets/geo-countries/master/data/countries.geojson')
world = gpd.read_file(url)
world.head()
url = ('https://raw.githubusercontent.com/'
'datasets/geo-countries/master/data/countries.geojson')
world = gpd.read_file(url)
world.head()
Problema 01 — Exploracion del GeoDataFrame¶
Tu tarea:
- ¿Cuantos paises (filas) y cuantas columnas tiene
world? - ¿Cual es el CRS del GeoDataFrame? (
world.crs). - Inspecciona la columna
geometry: ¿que tipo de geometrias contiene (Polygon/MultiPolygon)? - Dibuja un mapa basico del mundo con
world.plot().
In [ ]:
Copied!
# FIXME
# FIXME
Problema 02 — Filtrar y graficar una region¶
Tu tarea:
- Filtra los paises de America del Sur (usa la columna de continente/region disponible; si no existe, filtra por una lista de nombres).
- Grafica solo esa region, asignando un color de borde y un relleno suave.
- Añade un titulo al mapa.
In [ ]:
Copied!
# FIXME
# FIXME
Problema 03 — Mapa coropletico¶
Un mapa coropletico colorea cada region segun el valor de una variable.
Tu tarea:
- Si el dataset trae una columna de poblacion o area, usala; si no, calcula el
area de cada pais con
world.geometry.area(reproyecta antes a un CRS metrico, por ejemploworld.to_crs(6933)). - Grafica un mapa coropletico coloreado por esa variable, con
legend=Truey uncmapadecuado.
In [ ]:
Copied!
# FIXME
# FIXME
Problema 04 — Mapa de puntos (capitales)¶
Tu tarea:
- Construye un GeoDataFrame de puntos a partir de las coordenadas de abajo
(usa
gpd.points_from_xy). - Superpon estos puntos sobre el mapa del mundo (dibuja primero el mundo como fondo y luego los puntos en rojo).
In [ ]:
Copied!
capitales = pd.DataFrame({
'ciudad': ['Santiago', 'Lima', 'Bogota', 'Brasilia', 'Madrid'],
'lon': [-70.65, -77.04, -74.07, -47.93, -3.70],
'lat': [-33.45, -12.05, 4.71, -15.78, 40.42],
})
# FIXME
capitales = pd.DataFrame({
'ciudad': ['Santiago', 'Lima', 'Bogota', 'Brasilia', 'Madrid'],
'lon': [-70.65, -77.04, -74.07, -47.93, -3.70],
'lat': [-33.45, -12.05, 4.71, -15.78, 40.42],
})
# FIXME
Problema 05 — Mapa interactivo¶
Tu tarea:
- Usa
world.explore(column=...)para generar un mapa interactivo coloreado por la variable del Problema 03. - Pregunta: ¿que ventajas ofrece un mapa interactivo frente a uno estatico?
In [ ]:
Copied!
# FIXME
# FIXME
Respuesta: (escribe aqui)