Skip to content

Commit cd05014

Browse files
committed
Merge branch 'changes' of ssh://github.com/ScienceCore/climaterisk into changes
2 parents 0d6f38d + 845b831 commit cd05014

6 files changed

+268
-253
lines changed

book/es/md/00_Introducción_Arreglo/00_Uso_del_Hub_de_2i2c.md renamed to book/es/md/00_Introduccion_Configuracion/00_Uso_del_Hub_de_2i2c.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ jupyter:
1515
# Uso del Hub de 2i2c
1616

1717
<!-- #region jupyter={"source_hidden": true} -->
18-
Este cuaderno computacional contiene las instrucciones para iniciar sesión en la nube con ([JupyterHub](https://jupyter.org/hub)) plataforma proporcionada por [2i2c](https://2i2c.org) para este tutorial.
18+
Este cuaderno computacional contiene las instrucciones para iniciar sesión en la nube con la plataforma [JupyterHub](https://jupyter.org/hub) proporcionada por [2i2c](https://2i2c.org) para este tutorial.
1919

20-
**No podrás completar este paso hasta el día que inicie el tutorial (ese día recibirás la contraseña).**
20+
**No podrás completar este paso hasta el día que inicie el tutorial ya que ese día recibirás la contraseña para ingresar a la plataforma.**
2121
<!-- #endregion -->
2222

2323
## Iniciar sesión en el Hub de 2i2c
@@ -27,32 +27,32 @@ Para iniciar sesión en el JupyterHub proporcionado por 2i2c, sigue estos pasos:
2727
<!-- #endregion -->
2828

2929
<!-- #region jupyter={"source_hidden": true} -->
30-
1. **Navega hasta el Hub de 2i2c:** Tu navegador web debe apuntar a [este enlace] (https://climaterisk.opensci.2i2c.cloud).
30+
1. **Navega hasta el Hub de 2i2c:** Abre [este enlace](https://climaterisk.opensci.2i2c.cloud) en tu navegador web.
3131

3232
2. **Inicia sesión con tus credenciales:**
3333

3434
- **Nombre de usuario:** Puedes elegir cualquier nombre de usuario que desees. Sugerimos que utilices tu nombre de usuario de GitHub para evitar conflictos.
3535
- **Contraseña:** _Recibirás la contraseña el día que inicie el tutorial_.
3636

37-
![2i2c\_login](../../../assets/img/2i2c_login.png) (2i2c_inicio_de_sesión)
37+
![2i2c\_login](../../../assets/img/2i2c_login.png)
3838

3939
3. **Inicio de sesión:**
4040

4141
El proceso de inicio de sesión puede tardar unos minutos, especialmente si es necesario crear un nuevo espacio de trabajo virtual solo para ti.
4242
<!-- #endregion -->
4343

4444
<!-- #region jupyter={"source_hidden": true} -->
45-
![iniciar\_servidor2](../../../assets/img/start_server_2i2c.png)
45+
![iniciar_servidor2](../../../assets/img/start_server_2i2c.png)
4646
<!-- #endregion -->
4747

4848
- **Qué esperar:**
4949

5050
<!-- #region jupyter={"source_hidden": true} -->
5151
De manera predeterminada, al iniciar sesión en [`https://climaterisk.opensci.2i2c.cloud`](https://climaterisk.opensci.2i2c.cloud) se clonará automáticamente un repositorio para trabajar. Si el inicio de sesión es exitoso, verás la siguiente pantalla y estarás listo para empezar a trabajar.
5252

53-
![entorno\_de\_trabajo\_jupyter\_lab](../../../assets/img/work_environment_jupyter_lab.png)
53+
![entorno_de_trabajo_jupyter_lab](../../../assets/img/work_environment_jupyter_lab.png)
5454

55-
**Notas:** Cualquier archivo en el que trabajes se mantendrá entre sesiones siempre y cuando uses el mismo nombre de usuario al iniciar sesión.
55+
**Notas:** Todos los archivos en los que trabajes se conservarán entre sesiones, siempre y cuando utilices el mismo nombre de usuario al iniciar sesión.
5656
<!-- #endregion -->
5757

5858
<!-- #region jupyter={"source_hidden": false} -->
@@ -62,11 +62,11 @@ De manera predeterminada, al iniciar sesión en [`https://climaterisk.opensci.2i
6262
## Apagando el Hub de 2i2c
6363

6464
<!-- #region jupyter={"source_hidden": true} -->
65-
Para apagar el JupyterHub proporcionado por 2i2c, siga estos pasos:
65+
Para apagar el JupyterHub proporcionado por 2i2c, sigue estos pasos:
6666

67-
+ Guardar y apagar todos los cuadernos de Jupyter (el menú *Sessions and Tabs* puede apagar todos los kernels a la vez).
68-
+ En el menú *File*, seleccione *Hub Control Panel* (ubicado cerca de la parte inferior del menú). &nbsp;![](../../../assets/img/hub_shutdown_menu.png)
69-
+ Cuando el panel de control del hub se cargue en una nueva pestaña del navegador, haga clic en el botón rojo.&nbsp; ![](../../../assets/img/stop_server.png)
67+
+ Guarda y cierra todos los cuadernos computacionales Jupyter (el menú *Sessions and Tabs* puede apagar todos los kernels a la vez).
68+
+ En el menú *File*, selecciona *Hub Control Panel* (ubicado cerca de la parte inferior del menú). &nbsp;![](../../../assets/img/hub_shutdown_menu.png)
69+
+ Cuando el panel de control del hub se cargue en una nueva pestaña del navegador, haz clic en el botón rojo.&nbsp; ![](../../../assets/img/stop_server.png)
7070
<!-- #endregion -->
7171

7272
<!-- #region jupyter={"source_hidden": false} -->
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
jupyter:
3+
jupytext:
4+
text_representation:
5+
extension: .md
6+
format_name: markdown
7+
format_version: '1.3'
8+
jupytext_version: 1.17.1
9+
kernelspec:
10+
display_name: Python 3 (ipykernel)
11+
language: python
12+
name: python3
13+
---
14+
15+
# Cómo obtener las credenciales de NASA Earthdata
16+
17+
<!-- #region jupyter={"source_hidden": true} -->
18+
En este cuaderno se describe el proceso para obtener las credenciales de NASA Earthdata.
19+
20+
**Puedes completar este paso antes del día en que se dicta el tutorial.**
21+
<!-- #endregion -->
22+
23+
<!-- #region jupyter={"source_hidden": false} -->
24+
---
25+
<!-- #endregion -->
26+
27+
## Breve introducción
28+
29+
<!-- #region jupyter={"source_hidden": true} -->
30+
El programa [Sistemas de datos científicos de la Tierra (ESDS, por sus siglas en inglés) de la NASA](https://www.earthdata.nasa.gov/) supervisa el ciclo de vida de los datos de ciencias de la Tierra provenientes de todas sus misiones de observación terrestre, desde la adquisición hasta su procesamiento y distribución.
31+
32+
A los efectos de esta guía, el sitio web NASA Earthdata es el punto de entrada que permite el acceso completo, gratuito y abierto a las colecciones de datos de ciencias de la Tierra de la NASA, con el fin de acelerar el progreso científico en beneficio de la sociedad. Para acceder a los datos mediante este portal, quienes deseen usarlos deben definir primero sus credenciales de acceso. Para crear una cuenta en EarthData, sigue estos pasos:
33+
<!-- #endregion -->
34+
35+
<!-- #region jupyter={"source_hidden": false} -->
36+
---
37+
<!-- #endregion -->
38+
39+
## Creación las Credenciales de NASA Earthdata
40+
41+
<!-- #region jupyter={"source_hidden": true} -->
42+
Si ya has registrado credenciales de NASA Earthdata anteriormente, *pasa al siguiente cuaderno* (es decir, no es necesario registrar un nuevo perfil de NASA Earthdata).
43+
<!-- #endregion -->
44+
45+
<!-- #region jupyter={"source_hidden": true} -->
46+
Si no te has registrado previamente, sigue estos pasos para crear una cuenta de EarthData:
47+
48+
+ Ingresa al sitio web de NASA EarthData: [`https://urs.earthdata.nasa.gov/`](https://urs.earthdata.nasa.gov/).
49+
+ Deberías ver algo parecido a esto:
50+
![earthdata_login](../../../assets/img/earthdata_login.png)
51+
+ Haz clic en "*Register for a profile*".
52+
+ Una vez que se cargue la nueva página, veras algo como esto:
53+
![earthdata_profile](../../../assets/img/earthdata_profile2.png)
54+
+ Elije un nombre de usuario y una contraseña de NASA Earthdata. **Necesitaras estas credenciales más adelante**; ¡Asegúrate de guardarlos de forma segura!
55+
+ También deberas proporcionar otra información (por ejemplo, correo electrónico, país, afiliación, etc.) para completar el registro.
56+
+ Una vez que hayas completado todos los campos obligatorios, haz clic en "*Register for Earthdata Login*".
57+
<!-- #endregion -->
58+
59+
<!-- #region jupyter={"source_hidden": false} -->
60+
---
61+
<!-- #endregion -->
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
---
2+
jupyter:
3+
jupytext:
4+
text_representation:
5+
extension: .md
6+
format_name: markdown
7+
format_version: '1.3'
8+
jupytext_version: 1.17.1
9+
kernelspec:
10+
display_name: Python 3 (ipykernel)
11+
language: python
12+
name: python3
13+
---
14+
15+
# Configuración y Verificación del Entorno
16+
17+
<!-- #region jupyter={"source_hidden": true} -->
18+
Necesitas conocer tus credenciales de NASA Earthdata para usar este cuaderno computacional (es decir, tu nombre de usuario y contraseña asociados).
19+
20+
Ejecutar esta notebook te permitirá:
21+
+ Primero, construir un archivo llamado `.netrc` en la carpeta de inicio (es decir, `~/.netrc`) que contiene esas credenciales.
22+
+ Segundo, ejecutar una prueba que verifica que la configuración se haya realizado de forma correcta.
23+
24+
La siguiente celda ejecutable define algunas funciones de Python que se utilizaran más adelante para importar las utilidades necesarias.
25+
<!-- #endregion -->
26+
27+
```python jupyter={"source_hidden": true}
28+
from pathlib import Path
29+
from getpass import getpass
30+
import osgeo.gdal
31+
import rasterio
32+
from pystac_client import Client
33+
from warnings import filterwarnings
34+
filterwarnings("ignore") # suprimir advertencias de PySTAC
35+
36+
# Configuración obligatoria de GDAL para acceder a datos en la nube
37+
osgeo.gdal.SetConfigOption('GDAL_HTTP_COOKIEFILE','~/.gdal_cookies.txt')
38+
osgeo.gdal.SetConfigOption('GDAL_HTTP_COOKIEJAR', '~/.gdal_cookies.txt')
39+
osgeo.gdal.SetConfigOption('GDAL_DISABLE_READDIR_ON_OPEN','EMPTY_DIR')
40+
osgeo.gdal.SetConfigOption('CPL_VSIL_CURL_ALLOWED_EXTENSIONS','TIF, TIFF')
41+
42+
def create_netrc(PATH):
43+
"""Genera un archivo netrc en la ruta indicada (PATH) solicitando al
44+
usuario que ingrese sus credenciales de forma interactiva."""
45+
PATH.unlink(missing_ok=True)
46+
TEMPLATE = " ".join(["machine", "urs.earthdata.nasa.gov", "login",
47+
"{USERNAME}", "password", "{PASSWORD}\n"])
48+
username = input("NASA EarthData login: ")
49+
password = getpass(prompt="NASA EarthData password: ")
50+
print('Writing .netrc file.')
51+
PATH.write_text(TEMPLATE.format(USERNAME=username, PASSWORD=password))
52+
PATH.chmod(0o600)
53+
return None
54+
55+
def define_options():
56+
"Crea una URL y un diccionario de opciones necesarios para ejecutar una búsqueda con PySTAC."
57+
# Definir el área de interés (AOI) y el rango temporal
58+
livingston_tx, delta = (-95.09, 30.69), 0.1
59+
AOI = tuple(coord + sgn*delta for sgn in (-1,+1) for coord in livingston_tx)
60+
start, stop = '2024-04-30', '2024-05-05'
61+
WINDOW = f'{start}/{stop}'
62+
URL = 'https://cmr.earthdata.nasa.gov/stac'
63+
PROVIDER = 'POCLOUD'
64+
COLLECTIONS = ["OPERA_L3_DSWX-HLS_V1_1.0"]
65+
AOI_string = f"({', '.join([f'{coord:.2f}' for coord in AOI])})"
66+
print(f"\nDefined AOI={AOI_string}\n {WINDOW=}")
67+
print(f" {COLLECTIONS=}\n {PROVIDER=}\n")
68+
return URL, PROVIDER, dict(bbox=AOI, collections=COLLECTIONS, datetime=WINDOW)
69+
70+
def execute_search(STAC_URL, PROVIDER, opts):
71+
"Ejecuta una búsqueda STAC utilizando los parámetros requeridos"
72+
# Preparar el cliente de PySTAC
73+
catalog = Client.open(f'{STAC_URL}/{PROVIDER}/')
74+
results = list(catalog.search(**opts).items_as_dicts())
75+
return results
76+
77+
def process_uri(URI):
78+
"Dada una URI asociada a un archivo GeoTIFF remoto, intenta abrirlo y analizar su contenido."
79+
with rasterio.open(URI) as ds:
80+
_ = ds.profile
81+
return None
82+
83+
def test_netrc():
84+
"""Prueba mínima para verificar las credenciales de NASA Earthdata necesarias
85+
para descargar productos de datos. Requiere un archivo .netrc en el directorio
86+
personal con credenciales válidas."""
87+
STAC_URL, PROVIDER, opts = define_options()
88+
try:
89+
results = execute_search(STAC_URL, PROVIDER, opts)
90+
print(f"Retrieved {len(results)} search results...")
91+
test_uri = results[0]['assets']['0_B01_WTR']['href']
92+
print(f"Search successful. Accessing test data...\n")
93+
process_uri(test_uri)
94+
except (IndexError, KeyError) as e:
95+
print(f"{results}\n")
96+
raise e
97+
except rasterio.RasterioIOError as e:
98+
print(e)
99+
raise e
100+
return None
101+
```
102+
103+
<!-- #region jupyter={"source_hidden": false} -->
104+
---
105+
<!-- #endregion -->
106+
107+
## Configuración del entorno en la nube para acceder a NASA EarthData desde Python
108+
109+
<!-- #region jupyter={"source_hidden": true} -->
110+
Para acceder a los productos EarthData de la NASA desde programas Python o cuadernos computacionales Jupyter, es necesario guardar tus credenciales de NASA EarthData en un archivo especial llamado `.netrc`.
111+
112+
Al ejecutar la celda de abajo:
113+
+ Se te mostrará una advertencia indicando que ejecutar el resto de esta celda sobrescribirá cualquier archivo .netrc existente.
114+
+ Se te pedirá que confirmes si deseas continuar:
115+
+ En caso afirmativo, escribe `s` o `si`: se te pedirá tu nombre de usuario de *NASA Earthdata* y luego tu contraseña. Asegúrate de tenerlos listos antes de ejecutar la celda.
116+
+ Si la respuesta es no, no se realizará ninguna acción.
117+
118+
**¡Importante!**
119+
+ Elige `s` o `si` solo si te sientes cómodo con la eliminación de las credenciales almacenadas en el archivo `.netrc`. Recuerda tener disponible tu nombre de usuario y tu contraseña de NASA EarthData.
120+
121+
<!-- #endregion -->
122+
123+
```python jupyter={"source_hidden": true}
124+
NETRC_PATH = Path('~/.netrc').expanduser()
125+
print("Advertencia: Ejecutar el resto de esta celda sobrescribirá cualquier archivo .netrc existente.")
126+
overwrite = input("¿Confirmás que querés continuar? (S/N).")
127+
if overwrite.lower() in ['s', 'si', '']:
128+
create_netrc(NETRC_PATH)
129+
else:
130+
print('Se omite la escritura del archivo .netrc.')
131+
```
132+
133+
<!-- #region jupyter={"source_hidden": true} -->
134+
135+
Como alternativa, puede utilizar un editor de texto para crear el archivo`.netrc` con el siguiente contenido:
136+
137+
```
138+
machine urs.earthdata.nasa.gov login USERNAME password PASSWORD
139+
```
140+
Por supuesto, debes reemplazar `USERNAME` y `PASSWORD` en tu archivo `.netrc` real con los detalles de tu cuenta de NASA EarthData.
141+
142+
Una vez que el archivo `.netrc` se guarda con sus credenciales correctas, es una buena práctica restringir el acceso al mismo:
143+
144+
```bash
145+
$ chmod 600 ~/.netrc
146+
```
147+
Esto se logra en la penúltima línea de la función `create_netrc` (es decir, `PATH.chmod(0o600)`).
148+
<!-- #endregion -->
149+
150+
<!-- #region jupyter={"source_hidden": false} -->
151+
---
152+
<!-- #endregion -->
153+
154+
## Verificación del Acceso a los Productos de NASA EarthData
155+
156+
<!-- #region jupyter={"source_hidden": true} -->
157+
El archivo `.netrc` es necesario para acceder a los STAC (Catálogos de Activos Espacio-Temporales) dentro de los programas de Python que utilizan [PySTAC](https://pystac.readthedocs.io/en/stable/)).
158+
159+
Para asegurarte de que todo funciona correctamente, ejecuta la siguiente celda de Python. Si la celda se ejecuta sin problemas, verás un mensaje que indica que las credenciales se han configurado correctamente:
160+
161+
```bash
162+
¡Éxito! ¡Tu archivo de credenciales ~/.netrc está configurado correctamente!
163+
```
164+
En este caso, ¡ya está! ¡Ahora tienes todo lo que necesitas para explorar los datos de observación de la Tierra provistos por la NASA a través del portal EarthData!
165+
166+
<!-- #endregion -->
167+
168+
<!-- #region jupyter={"source_hidden": true} -->
169+
Si, en cambio, ves el mensaje:
170+
171+
```bash
172+
Asegurate que el archivo .netrc contiene credenciales de NASA Earthdata que existen en el directorio de inicio del usuario.
173+
```
174+
deberás ingresar tus credenciales correctas en el archivo `~/.netrc`. Puedes hacerlo reiniciando y volviendo a ejecutar este cuaderno computacional o editando el archivo con un editor de texto.
175+
176+
<!-- #endregion -->
177+
178+
Entonces, ejecuta la siguiente celda para verificar la creación del archivo `~/.netrc` con las credenciales correctas:
179+
180+
```python jupyter={"source_hidden": true}
181+
if ((not NETRC_PATH.exists()) or (NETRC_PATH.stat().st_size==0)):
182+
print("Advertencia: no existe un archivo .netrc válido; ejecuta esta celda nuevamente para crear uno con credenciales correctas.")
183+
else:
184+
try:
185+
test_netrc()
186+
print("¡Éxito! ¡Tu archivo de credenciales ~/.netrc está configurado correctamente!\n")
187+
except Exception as e:
188+
print(f"TEST FAILED.")
189+
print("\n\nAsegurate que el archivo .netrc contiene credenciales de NASA Earthdata que existen en el directorio de inicio del usuario.\n")
190+
```
191+
192+
193+
194+
<!-- #region jupyter={"source_hidden": false} -->
195+
---
196+
<!-- #endregion -->
File renamed without changes.

book/es/md/00_Introducción_Arreglo/01_Cómo_Obtener_las_Credenciales_de_NASA_Earthdata.md

Lines changed: 0 additions & 61 deletions
This file was deleted.

0 commit comments

Comments
 (0)