{
"cells": [
{
"cell_type": "markdown",
"id": "c796ba94-a853-4344-87a9-092057adf064",
"metadata": {},
"source": [
"**CURSO**: Sensores Remotos, Departamento de Geociencias y Medio Ambiente, Universidad Nacional de Colombia - sede Medellín
\n",
"**Profesor**: Edier Aristizábal (evaristizabalg@unal.edu.co)
\n",
"**Créditos**: El contenido de este cuaderno proviene de varias fuentes: [CDSE](https://jupyterhub.dataspace.copernicus.eu/user/edieraristizabal@gmail.com/lab/tree/RTC%3Asamples/sentinelhub/from_browser_to_jupyter.ipynb). Se ha hecho todo lo posible por identificar a los titulares de los derechos de autor de los materiales utilizados en este libro. El autor ofrece disculpas por cualquier omisión involuntaria y agradecería incluir el reconocimiento correspondiente en futuras ediciones."
]
},
{
"cell_type": "markdown",
"id": "73b59e56-2873-4aed-9d5c-f850ea9cea89",
"metadata": {},
"source": [
"# Copernicus Data Space Ecosystem (CDSE)"
]
},
{
"cell_type": "markdown",
"id": "08f82be9-f277-4608-a789-de57905697a4",
"metadata": {},
"source": [
"El Copernicus Data Space Ecosystem (CDSE) es un gran laboratorio de ciencias de la Tierra digital y colaborativo (https://dataspace.copernicus.eu). Este laboratorio tiene:\n",
"\n",
"* Un Almacén de Datos Gigante: Donde están todas las materias primas (imágenes satelitales).\n",
"\n",
"* Un Taller de Análisis: Con diferentes herramientas para procesar y analizar esos datos.\n",
"\n",
"* Una Biblioteca/Galería Pública: Donde puedes compartir tus resultados y usar los métodos de otros.\n",
"\n",
"La Estructura del Ecosistema de Datos Copernicus (CDSE) se puede organizar en tres categorías lógicas:\n",
"\n",
"1. **Acceso y Exploración de Datos (El Almacén)**\n",
" \n",
"Aquí es donde buscas, visualizas y descargas los datos satelitales en bruto. Es el primer contacto con la información.\n",
"\n",
"**Copernicus Browser**: Es la herramienta más sencilla y visual. Es un mapa interactivo que te permite navegar, encontrar imágenes de los satélites Sentinel (y otros) para tu área de interés, previsualizarlas y descargarlas. Es perfecto para una primera exploración visual.\n",
"\n",
"**APIs de Acceso a Datos (como STAC y OData)**: Son las \"puertas traseras\" para programadores. Te permiten automatizar la búsqueda y descarga de datos escribiendo scripts (en Python, por ejemplo), en lugar de hacer clic en un mapa. Es mucho más eficiente si sabes exactamente qué datos necesitas para un área y fechas específicas.\n",
"\n",
"2. **Procesamiento y Análisis (El Taller)**\n",
"\n",
"Una vez que tienes los datos, necesitas herramientas para trabajar con ellos. El CDSE te ofrece varios entornos para que no tengas que descargar petabytes de datos a tu ordenador. El procesamiento se hace \"en la nube\", cerca de los datos.\n",
"\n",
"**JupyterLab**: Este es tu entorno de programación personal en la nube. Como usas Python, R y JavaScript, te sentirás como en casa. Te dan una máquina virtual con todo preinstalado para que puedas escribir y ejecutar tu código directamente sobre los datos del ecosistema. Ideal para desarrollar, probar tus métodos y hacer análisis detallados en áreas de tamaño moderado.\n",
"\n",
"**openEO**: Piensa en openEO como el \"motor de procesamiento a gran escala\". No es tanto un entorno de programación, sino una API (un lenguaje común) para decirle a la infraestructura de la nube qué hacer. Usas openEO para aplicar análisis complejos (como los que podrías prototipar en JupyterLab) sobre áreas inmensas (un país, un continente) sin preocuparte por la infraestructura. Es la herramienta para pasar de la investigación a la operación a gran escala.\n",
"\n",
"**Data Workspace**: Es una interfaz web más guiada que te permite generar productos bajo demanda seleccionando un algoritmo y configurando sus parámetros. Es menos flexible que JupyterLab u openEO, pero más sencillo si solo necesitas aplicar un procesamiento estándar.\n",
"\n",
"3. **Colaboración y Difusión (La Biblioteca)**\n",
"\n",
"La ciencia avanza compartiendo. Esta parte del ecosistema se centra en la reutilización y la colaboración.\n",
"\n",
"**openEO Algorithm Plaza**: Como ya vimos, es el mercado de algoritmos. Aquí puedes publicar los flujos de trabajo que creaste con openEO para que otros los usen, o puedes tomar algoritmos de otros para aplicarlos a tus propios problemas."
]
},
{
"cell_type": "markdown",
"id": "4df630f8-efe0-4bd0-879e-db1431f1dde9",
"metadata": {},
"source": [
"## Copernicus Browser"
]
},
{
"cell_type": "markdown",
"id": "e160b244-b3d9-40bc-a58c-60faa814c0f3",
"metadata": {},
"source": [
"La herramienta `Search` del Copernicus Browser permite localizar rápidamente escenas satelitales dentro de un área de interés definida por el usuario, como se observa en la imagen. Una vez se dibuja o selecciona un polígono en el mapa, la barra lateral izquierda muestra una lista de imágenes disponibles para esa zona, junto con metadatos clave como misión (por ejemplo, Sentinel-2), tipo de producto, fecha de adquisición, tamaño del archivo y porcentaje de cobertura nubosa. Search también incluye filtros que permiten restringir la búsqueda por intervalo de fechas, sensor o nivel de procesamiento, facilitando identificar únicamente las imágenes relevantes. Cada resultado puede visualizarse de manera inmediata sobre el mapa, agregarse al espacio de trabajo (Workspace) o descargarse para su análisis posterior. En conjunto, esta herramienta agiliza el proceso de descubrimiento y selección de datos satelitales adecuados para un estudio específico.\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"id": "78e44a28-97ed-4643-b379-bfc4490a1fd4",
"metadata": {},
"source": [
"La herramienta `Visualize` permite inspeccionar y analizar en detalle la imagen satelital seleccionada desde `Search`. Una vez cargada la escena, el usuario puede elegir diferentes visualizaciones predefinidas en el panel lateral izquierdo, como True Color, False Color, índices de vegetación (NDVI), humedad (Moisture Index), entre otros. En la imagen se muestra el uso del índice de humedad, donde los colores representan variaciones en el contenido de agua en suelo y vegetación (valores más altos se visualizan en tonos cálidos y los más bajos en tonos fríos). Esta funcionalidad permite resaltar características específicas del terreno o de la cobertura, facilitando la interpretación geoespacial sin necesidad de descargar la imagen ni procesarla en otro software. Además, `Visualize` permite ajustar parámetros, comparar escenas, activar capas adicionales y exportar la visualización para su uso en informes o análisis posteriores.\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"id": "fa96876a-b0c1-4a50-a306-1309b1dd6fb1",
"metadata": {},
"source": [
"Dentro de la herramienta `Visualize`, la pestaña `Index` permite calcular y visualizar índices espectrales directamente desde el navegador, sin necesidad de descargar la imagen ni usar software especializado. En esta sección, el usuario puede arrastrar y combinar bandas del sensor —por ejemplo, la banda del rojo (B04) y del infrarrojo cercano (B08) en Sentinel-2— para construir un índice mediante una expresión matemática. En la imagen se muestra el cálculo del NDVI mediante la ecuación \n",
"B03−B04)/(B03+B04), donde el panel izquierdo permite seleccionar las bandas, editar la fórmula y ajustar una escala de colores o umbrales para resaltar valores altos o bajos de vegetación. Esta funcionalidad facilita explorar variables como vigor de la vegetación, humedad o áreas afectadas por cambios en cobertura, permitiendo un análisis rápido e interactivo directamente sobre la escena satelital.\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"id": "9a05385b-a62d-442e-bb41-0b211c56d5ff",
"metadata": {},
"source": [
"Dentro de la herramienta Visualize, la pestaña `Custom` permite al usuario ir más allá de las visualizaciones predefinidas e índices básicos, ofreciendo la posibilidad de cargar scripts personalizados para procesar y representar las imágenes satelitales según necesidades específicas. En este modo, el panel izquierdo permite escribir o pegar código en JavaScript (o cargarlo desde una URL), definiendo qué bandas usar, cómo combinarlas y qué escala de colores aplicar. En la imagen adjunta se observa un script personalizado que utiliza bandas del sensor Sentinel-2 y una rampa de colores para resaltar áreas con determinadas características espectrales, mostrando los resultados directamente en el mapa. Esta función es especialmente útil para usuarios avanzados que requieren implementar índices no estándar, realzar características específicas del terreno o automatizar análisis, todo sin salir del navegador.\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"id": "a9c90378-3574-46e2-afc6-61eda9ae9f9e",
"metadata": {},
"source": [
"También es posible copiar *scripts* desde otras aplicaciones y obtener los resultados en esta herramienta. A continuación se presenta el siguiente ejemplo.\n",
"\n",
"El **Burnt Area Visualization Custom Script** combina el Índice de Vegetación de Diferencia Normalizada (**NDVI**), el Índice de Diferencia Normalizada de Humedad (**NDMI**) y un índice personalizado usando las bandas **B12, B11 y B08** para detectar áreas quemadas.\n",
"\n",
"```javascript\n",
"//VERSION=3\n",
"// Burned area detection\n",
"// Author: Monja B. Šebela\n",
"\n",
"function setup() {\n",
" return {\n",
" input: [\"B02\", \"B03\", \"B04\", \"B08\", \"B11\", \"B12\", \"dataMask\"],\n",
" output: { bands: 4 }\n",
" };\n",
"}\n",
"\n",
"function evaluatePixel(samples) {\n",
"\tvar NDWI=index(samples.B03, samples.B08); \n",
"\tvar NDVI=index(samples.B08, samples.B04);\n",
"\tvar INDEX= ((samples.B11 - samples.B12) / (samples.B11 + samples.B12))+(samples.B08);\n",
"\n",
" \tif((INDEX>0.1)||(samples.B02>0.1)||(samples.B11<0.1)||(NDVI>0.3)||(NDWI > 0.1)){\n",
" \t\treturn[2.5*samples.B04, 2.5*samples.B03, 2.5*samples.B02, samples.dataMask]\n",
"\t}\n",
"\telse {\n",
" \treturn [1, 0, 0, samples.dataMask]\n",
"\t}\n",
"}\n",
"```\n",
""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "OpenEO",
"language": "python",
"name": "openeo"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 5
}