{ "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": "629382ed-b27c-40b3-9220-6010d8cf7d3e", "metadata": {}, "source": [ "# Request Builder\n", "\n", "[Request Builder](https://shapps.dataspace.copernicus.eu/requests-builder/) es una interfaz gráfica en línea para las API de Sentinel Hub. Esta herramienta facilita la creación y depuración de solicitudes a las API, y permite exportar el código resultante en varios lenguajes de programación. En este tutorial, crearemos una solicitud de la [Process API](https://documentation.dataspace.copernicus.eu/APIs/SentinelHub/Process.html) para descargar imágenes ráster del área en Colombia que previamente examinamos en el Browser. Al igual que una [solicitud de Process API en código](https://github.com/eu-cdse/notebook-samples/blob/main/sentinelhub/introduction_to_SH_APIs.ipynb), una solicitud creada con el Request Builder consiste en 5 partes principales:\n", "\n", "- `Data Collection`\n", "- `Time Range`\n", "- `Area of Interest`\n", "- `Output`\n", "- `Evalscript`\n", "\n", "![True Color Sentinel-2 image of Wildfires near Lac de la Frégate, Quebec, Canada ](https://i.pinimg.com/736x/ed/ea/14/edea14f72e8263558fc1db7f5c3771c1.jpg)\n", "\n", "Cada una de estas puede configurarse de manera independiente en la interfaz. Utiliza los siguientes ajustes para el ejemplo :\n", "\n", "- `Data Collection`: sentinel-2 l2a\n", "- `Time Range`: Del 01.01.2025 al 30.09.2025\n", "- `Area of Interest`: [-76.048422,5.583184,-74.839341,6.768261]\n", "\n", "Haz clic en `Parse` para cargar el área de interés; esta debería mostrarse en la ventana del mapa y acercarse al rectángulo seleccionado.\n", "\n", "- `Evalscript`: usa el siguiente evalscript o puedes hacerlo y tomarlo del Copernicus Browser:\n", "\n", "```javascript\n", "function setup() {\n", " return {\n", " input: [\"B02\", \"B03\", \"B04\", \"B08\", \"B11\", \"B12\", \"dataMask\"],\n", " output: [\n", " \t\t{ id: \"default\", bands: 4 },\n", " \t\t{ id: \"burnMask\", bands: 1, sampleType: \"UINT8\" },\n", " \t]\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{\n", " default:[2.5*samples.B04, 2.5*samples.B03, 2.5*samples.B02, samples.dataMask],\n", "\t\t\tburnMask:[0]\n", " }\n", "\t}\n", "\telse {\n", " \treturn {\n", " default: [1, 0, 0, samples.dataMask],\n", " burnMask: [1]}\n", "\t}\n", "}\n", "```\n", "\n", "**Output**: el evalscript tiene dos salidas diferentes: default, con 4 bandas (Rojo, Verde, Azul y Transparencia/Data Mask), y burnMask, que devuelve 1 donde el área está quemada y 0 donde no lo está. Debemos configurar la salida para que se cree un ráster a partir de ambas para cada imagen. Como el área de interés es bastante grande y el límite para una sola solicitud es de 2500×2500 píxeles, reduciremos la resolución a 40 metros. Primero, haz clic en la pestaña `resolution`, luego selecciona:\n", "\n", "`Res` X in meters: 40\n", "\n", "`Res` Y in meters: 40\n", "\n", "`Image format`: TIFF\n", "\n", "`Identifier`: default\n", "\n", "Ahora debes hacer clic en el botón `+ Add` para crear un segundo conjunto de datos de salida. Este debe tener el mismo formato y llevar el nombre correspondiente a la segunda salida del evalscript:\n", "\n", "`Image format`: TIFF\n", "\n", "`Identifier`: burnMask\n", "\n", "Finalmente, debes configurar el lenguaje del `Request Preview` como `python-requests` en el menú desplegable. Esto generará el código de la solicitud que luego podrás usar también en un Jupyter Notebook.\n", "\n", "Si ahora haces clic en `Send`, el sistema te pedirá guardar la solicitud y descargar la respuesta. La respuesta será un archivo .tar que contiene default.tif y burnMask.tif." ] }, { "cell_type": "markdown", "id": "bad7c352", "metadata": {}, "source": [] } ], "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 }