31 Práctica 10 · Radar: inundaciones con Sentinel-1 y exploración de NISAR
Duración: 3 horas · Software: Google Earth Engine, NASA Earthdata / ASF Vertex · Lectura previa: Capítulo 11
31.1 Parte A · Mapa de inundación con Sentinel-1 en Earth Engine
Caso sugerido: desborde de ríos en la zona centro-sur durante un sistema frontal (ajusta fechas y área a un evento documentado por SENAPRED).
import ee, geemap
ee.Initialize(project="geomatica-chile-tunombre")
aoi = ee.Geometry.Rectangle([-72.20, -36.70, -71.90, -36.50]) # ajusta tu área
def s1(inicio, fin):
return (ee.ImageCollection("COPERNICUS/S1_GRD")
.filterBounds(aoi).filterDate(inicio, fin)
.filter(ee.Filter.eq("instrumentMode", "IW"))
.filter(ee.Filter.listContains("transmitterReceiverPolarisation", "VV"))
.select("VV").median().clip(aoi))
antes = s1("2023-05-01", "2023-06-10").focalMedian(30, "circle", "meters")
despues = s1("2023-06-22", "2023-06-30").focalMedian(30, "circle", "meters")
diferencia = despues.subtract(antes) # en dB
agua_nueva = diferencia.lt(-3).And(despues.lt(-16))
# Excluir pendientes > 5° (sombra radar y layover)
glo30 = ee.ImageCollection("COPERNICUS/DEM/GLO30").select("DEM")
# mosaic() pierde la proyección nativa: se restablece antes de calcular la pendiente
dem = glo30.mosaic().setDefaultProjection(glo30.first().projection())
pendiente = ee.Terrain.slope(dem)
inundacion = agua_nueva.updateMask(pendiente.lt(5)).selfMask()
m = geemap.Map(center=[-36.6, -72.05], zoom=11)
m.addLayer(despues, {"min": -25, "max": 0}, "VV después (dB)")
m.addLayer(inundacion, {"palette": ["#21A9D8"]}, "Inundación")
mSuperficie inundada
ha = inundacion.multiply(ee.Image.pixelArea()).divide(1e4).reduceRegion(
ee.Reducer.sum(), aoi, 10, maxPixels=1e10)
print(ha.getInfo())31.2 Parte B · Exploración de NISAR
- Crea una cuenta en NASA Earthdata Login (https://urs.earthdata.nasa.gov).
- Ingresa a ASF Vertex (https://search.asf.alaska.edu) y selecciona el conjunto de datos NISAR.
- Busca adquisiciones sobre tu región desde el 17 de junio de 2026 (fecha de inicio usada en el ejemplo; los productos calibrados se liberaron al público el 20 de julio de 2026).
- Registra en una tabla: fecha, órbita (ascendente/descendente), nivel de producto, polarizaciones y tamaño del archivo.
# Búsqueda programática con asf_search
# !pip install asf_search
import asf_search as asf
res = asf.search(platform="NISAR", intersectsWith="POINT(-72.6 -38.7)",
start="2026-06-17", maxResults=10)
for r in res:
p = r.properties
print(p["startTime"], p.get("flightDirection"), p.get("processingLevel"))
NotaDato 2026
Los productos calibrados de NISAR en banda L son públicos desde el 20 de julio de 2026 (Alaska Satellite Facility, 2026). El identificador de plataforma en asf_search puede variar entre versiones de la biblioteca; si la búsqueda no devuelve resultados, usa la interfaz web de Vertex.
31.3 Preguntas
- ¿Por qué se aplica un filtro de pendiente al mapa de inundación?
- ¿Qué ventajas tendría la banda L de NISAR frente a la banda C para detectar inundación bajo el bosque?
31.4 Entregable
Mapa de inundación con superficie estimada y tabla de adquisiciones NISAR disponibles para tu región.