Skip to content

Commit

Permalink
Merge pull request #11 from BYU-Hydroinformatics/Evapotranspiration
Browse files Browse the repository at this point in the history
Evapotranspiration
  • Loading branch information
romer8 authored Nov 4, 2022
2 parents a5dbfdd + 416e3d4 commit 6bb7335
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 58 deletions.
4 changes: 2 additions & 2 deletions tethysapp/hydro_var_monitor/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ class HydroVarMonitor(TethysAppBase):
Tethys app class for Hydrologic Trends Monitor.
"""

name = 'Hydrologic Variable Monitor'
name = 'Climate Trends'
description = 'View maps and plots of hydrologic cycle variables recorded by satellites and global models'
package = 'hydro_var_monitor'
index = 'hydro_var_monitor:home'
icon = f'{package}/images/icon.gif'
icon = f'{package}/images/logo.gif'
root_url = 'hydro-var-monitor'
color = '#6DA8D9'
tags = ['remote sensing', 'earth engine', 'hydrological cycle', 'essential water variables', 'geoglows toolbox']
Expand Down
45 changes: 23 additions & 22 deletions tethysapp/hydro_var_monitor/controllers.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from . import ee_auth
import logging
import os
from .ee_tools import ERA5, get_tile_url, GLDAS, CHIRPS, IMERG
from .ee_tools import ERA5, get_tile_url, GLDAS, CHIRPS, IMERG, GLDAS_evapo
from .plots import plot_ERA5, plot_GLDAS, plot_IMERG, plot_CHIRPS
from .compare import air_temp_compare, precip_compare

Expand All @@ -22,10 +22,9 @@ def home(request):
return render(request, 'hydro_var_monitor/no_auth_error.html')
ee_sources = {
'air_temp': ['GLDAS', 'ERA5'],
'ndvi': ['Landsat', ],
'precip': ['GLDAS', 'CHIRPS', 'IMERG', 'ERA5'],
'soil_moisture': ['GLDAS', ],
'soil_temperature': ['ERA5', 'GLDAS']
'evapo': ['GLDAS']
}
context = {
'sources': json.dumps(ee_sources)
Expand Down Expand Up @@ -90,7 +89,7 @@ def get_map_id(request):
"palette": ['009392', '72aaa1', 'b1c7b3', 'f1eac8', 'e5b9ad', 'd98994', 'd0587e']}
if var == "precip":
band = "total_precipitation"
vis_params = {"min": 0, "max": 0.03, "palette": ['00FFFF', '0000FF']}
vis_params = {"min": 0, "max": 0.008, "palette": ['00FFFF', '0000FF']}
if var == "soil_temperature":
band = "skin_temperature"
vis_params = {"min": 250, "max": 300,
Expand All @@ -101,28 +100,30 @@ def get_map_id(request):
if sensor == "GLDAS":
if var == "precip":
band = "Rainf_tavg"
vis_params = {"min": 0, "max": 0.0002, "palette": ['00FFFF', '0000FF']}
vis_params = {"min": 0, "max": 0.00006, "palette": ['00FFFF', '0000FF']}
imgs = GLDAS(band)
if var == "air_temp":
band = "Tair_f_inst"
vis_params = {"min": 206, "max": 328,
vis_params = {"min": 235, "max": 320,
"palette": ['009392', '72aaa1', 'b1c7b3', 'f1eac8', 'e5b9ad', 'd98994', 'd0587e']}
imgs = GLDAS(band)
if var == "soil_moisture":
band = "RootMoist_inst"
vis_params = {"min": 1.99, "max": 48, "palette": ['00FFFF', '0000FF']}
if var == "soil_temperature":
band = "AvgSurfT_inst"
vis_params = {"min": 222, "max": 378,
"palette": ['009392', '72aaa1', 'b1c7b3', 'f1eac8', 'e5b9ad', 'd98994', 'd0587e']}
imgs = GLDAS(band)
vis_params = {"min": 100, "max": 400}
imgs = GLDAS(band)
if var == "evapo":
band = "Evap_tavg"
vis_params = {"min":0, "max":0.00005}
imgs = GLDAS_evapo(band)

if sensor == "IMERG":
band = "HQprecipitation"
vis_params = {"min": 0, "max": 5, "palette": ['00FFFF', '0000FF']}
vis_params = {"min": 0, "max": 0.4, "palette": ['00FFFF', '0000FF']}
imgs = IMERG(band)

if sensor == "CHIRPS":
band = "precipitation"
vis_params = {"min": 0, "max": 150, "palette": ['00FFFF', '0000FF']}
vis_params = {"min": 0, "max": 40, "palette": ['00FFFF', '0000FF']}
imgs = CHIRPS(band)

# get the url from specified image and then return it in json
Expand Down Expand Up @@ -192,10 +193,10 @@ def get_plot(request):
band = "RootMoist_inst"
title = "Humedad del Suelo - GLDAS (root zone)"
yaxis = "kg/m^2"
if var == "soil_temperature":
band = "AvgSurfT_inst"
title = "Temperatura del Suelo - GLDAS"
yaxis = "Temperatura en Celsius"
if var == "evapo":
band = "Evap_tavg"
title = "Evapotranspiración- GLDAS"
yaxis = "Evapotranspiración en kg/M^2/s"
plot_data = plot_GLDAS(json.loads(region), band, title, yaxis, json.loads(isPoint), startDate, endDate)

if sensor == "IMERG":
Expand Down Expand Up @@ -282,10 +283,10 @@ def get_predefined(request):
band = "RootMoist_inst"
title = "Humedad del Suelo - GLDAS (root zone)"
yaxis = "kg/m^2"
if var == "soil_temperature":
band = "AvgSurfT_inst"
title = "Temperatura del Suelo - GLDAS"
yaxis = "Temperatura en Celsius"
if var == "evapo":
band = "Evap_tavg"
title = "Evapotranspiración- GLDAS"
yaxis = "Evapotranspiración en kg/M^2/s"
plot_data = plot_GLDAS(region, band, title, yaxis, json.loads(isPoint), startDate, endDate)

if sensor == "IMERG":
Expand Down
18 changes: 14 additions & 4 deletions tethysapp/hydro_var_monitor/ee_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,35 @@


def ERA5(band):
ic = ee.ImageCollection("ECMWF/ERA5_LAND/MONTHLY").filterDate('1983-01-01', '2023-01-01').select(band).reduce(
ic = ee.ImageCollection(
[f'users/rachelshaylahuber55/era5_monthly_avg/era5_monthly_{i:02}' for i in range(1, 13)]).select(band).reduce(
ee.Reducer.mean())
return ic


def GLDAS(band):
ic = ee.ImageCollection("NASA/GLDAS/V021/NOAH/G025/T3H").filterDate('2022-01-01', '2023-01-01').select(band).reduce(
ic = ee.ImageCollection(
[f'users/rachelshaylahuber55/gldas_monthly/gldas_monthly_avg_{i:02}' for i in range(1, 13)]).select(band).reduce(
ee.Reducer.mean())
return ic

def GLDAS_evapo(band):
ic = ee.ImageCollection(
[f'users/rachelshaylahuber55/gldas_monthly/gldas_monthly_avg_evapo_{i:02}' for i in range(1, 13)]).select(band).reduce(
ee.Reducer.mean())
return ic


def IMERG(band):
ic = ee.ImageCollection("NASA/GPM_L3/IMERG_V06").filterDate('2022-07-01', '2023-01-01').select(band).reduce(
ic = ee.ImageCollection(
[f'users/rachelshaylahuber55/imerg_monthly_avg/imerg_monthly_avg_{i:02}' for i in range(1, 13)]).select(band).reduce(
ee.Reducer.mean())
return ic


def CHIRPS(band):
ic = ee.ImageCollection("UCSB-CHG/CHIRPS/PENTAD").filterDate('2022-01-01', '2023-01-01').select(band).reduce(
ic = ee.ImageCollection(
[f'users/rachelshaylahuber55/chirps_monthly_avg/chirps_monthly_avg_{i:02}' for i in range(1, 13)]).select(band).reduce(
ee.Reducer.mean())
return ic

Expand Down
8 changes: 6 additions & 2 deletions tethysapp/hydro_var_monitor/plots.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,12 @@ def avg_gldas(img):
))

# read in assets from the gldas_monthly folder
gldas_monthly = ee.ImageCollection(
[f'users/rachelshaylahuber55/gldas_monthly/gldas_monthly_avg_{i:02}' for i in range(1, 13)])
if band == "Evap_tavg":
gldas_monthly = ee.ImageCollection(
[f'users/rachelshaylahuber55/gldas_monthly/gldas_monthly_avg_evapo_{i:02}' for i in range(1, 13)])
else:
gldas_monthly = ee.ImageCollection(
[f'users/rachelshaylahuber55/gldas_monthly/gldas_monthly_avg_{i:02}' for i in range(1, 13)])
gldas_monthly = gldas_monthly.map(avg_gldas)
gldas_avg_df = pd.DataFrame(
gldas_monthly.aggregate_array('avg_value').getInfo(),
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
59 changes: 31 additions & 28 deletions tethysapp/hydro_var_monitor/templates/hydro_var_monitor/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@

{% block app_navigation_items %}
<button id="instructions" type="button" class="btn btn-primary btn-block" >Instrucciones</button>
<button id="lat-lon" type="button" class="btn btn-primary btn-block" >Entrar Lat/Lon</button>
<button id="lat-lon" type="button" class="btn btn-primary btn-block" >Ingresar Lat/Lon</button>
<li class="title">1. Elija Variable</li>
<select class="form-select" aria-label="variable selector" id="select-variable">
<option hidden disabled selected value></option>
<option value="air_temp">Temperatura del Aire</option>
<option value="precip">Precipitación</option>
<option value="soil_moisture">Humedad del Suelo</option>
<option value="evapo">Evapotranspiración</option>

</select>

Expand All @@ -27,7 +28,7 @@

<li class="title">4. Comparar los Promedios</li>
<button id="compare" class="btn btn-primary btn-block">Comparar los Promedios </button>
<li class="title">Usar una Fecha Especifica (opcional)</li>
<li class="title">Usar una Fecha Específica (opcional)</li>
<select class="form-select" aria-label="variable selector" id="select-year">
<option hidden disabled selected value></option>
<option value="2000">2000</option>
Expand Down Expand Up @@ -56,7 +57,7 @@
<option value="last12">últimos 12 meses</option>
<option value="y2d">El año hasta la fecha</option>
</select>
<li class="title">Usar una Provincia Especifica (opcional) </li>
<li class="title">Usar una Provincia Específica (opcional) </li>
<select id="regions" class="form-select" name = "regions">
<option value = "">Ninguna</option>
<option value = "Ecuador">Ecuador</option>
Expand Down Expand Up @@ -151,39 +152,41 @@ <h4 class="modal-title">Instrucciones</h4>
<div class="modal-body">
<p>Bienvenido a la aplicación Tendencia de Clima!</p>

<p>La aplicación tendencia de clima permite visualizar información satelital de los últimos 30 años y
comparar la misma para una variable de interés.</p>
<p>Para empezar, selecciona una variable de interés: la precipitación, la temperatura, y la humedad del
suelo. Después, escoja el satélite de interés para la variable seleccionada.</p>
<p>La aplicación tendencias de clima permite visualizar información
satelital de los últimos 30 años y comparar la misma para una variable de interés.</p>
<p>Para empezar, seleccione una variable de interés: precipitación, temperatura, la humedad del suelo, y la evapotranspiración.
Después, escoja el satélite de interés para la variable seleccionada. </p>

<p>Al hacer clic en la opción <span class="bolded">“Cargar Mapa”</span> podrá visualizar un mapa de la variable y
satélite de interés seleccionada.</p>
<p>Posteriormente, seleccione el lugar ubicando una región de interés, provincia de Ecuador o coordenadas.</p>
<p><span class="bolded">Selección de un punto o región de interés:</span></p>
<p>1. Al hacer clic en la opción “Cargar Mapa” podrá visualizar un mapa de la variable y satélite de interés seleccionada.</p>
<p>2.Posteriormente, seleccione el lugar ubicando una región de interés, provincia de Ecuador o coordenadas.</p>

<p><span class="bolded">Coordenadas:</span> Hacer clic en el botón “Entrar Lat/Lon”, se desplegará una pantalla para colocar la latitud y longitud.
Haga clic en “Guardar”, seguidamente en “Mostrar Gráfico” para ver los resultados.</p>
<p><span class="bolded">Región de Interés</span></p>
<p>En la esquina izquierda de la aplicación, hay una opción con dos botones para dibujar en el mapa. Seleccionar cualquiera
de los dos botones para crear un área de interés Hacer clic en el botón “Mostrar Gráfico” para visualizar los resultados.</p>
<p><span class="bolded">Provincia en Ecuador</span></p>
<p>Al final del menú, encuentre el botón ¨Cargar datos para la región¨ y seleccione la provincia de interés en el menú
desplegable. Finalmente haga clic en el botón“Cargar Datos para la Región” para visualizar los resultados.</p>
<p><span class="bolded">1. Coordenadas:</span> Hacer clic en el botón <span class="bolded">“Ingresar Lat/Lon”</span>, se desplegará una pantalla
para colocar la latitud y longitud. Haga clic en <span class="bolded">“Guardar”</span>, seguidamente en <span class="bolded">“Mostrar Gráfico”</span> para
ver los resultados.</p>

<p><span class="bolded">2. Región de Interés: </span> En la esquina izquierda de la aplicación, hay una opción con dos botones para dibujar en el mapa.
Seleccionar cualquiera de los dos botones para crear un área de interés Hacer clic en el botón <span class="bolded">“Mostrar Gráfico”</span> para
visualizar los resultados.</p>
<p><span class="bolded">3. Provincia en Ecuador: </span> Al final del menú, encuentre el botón <span class="bolded">¨Cargar datos para la región¨</span>
y seleccione la provincia de interés en el menú desplegable. Finalmente, haga clic en el botón <span class="bolded">“Cargar Datos para la Región”</span>
para visualizar los resultados.</p>


<p><span class="bolded">Visualización de resultados</span></p>
<p>Una vez seleccionada la variable, satélite y área de interés podrá visualizar el gráfico. Los resultados los puedes
descargar en formato csv haciendo clic en el botón descargar. También puede descargar el gráfico en formato png al
hacer clic en el botón de cámara, localizado en la esquina derecha de la gráfica.</p>
<p>En el gráfico puede seleccionar una fecha de interés haciendo clic y seleccionando un rango de fechas directamente en
el gráfico. Para visualizar el gráfico nuevamente con el periodo total de tiempo haga clic en Autoscale.</p>
<p>En la leyenda del gráfico puede prender y apagar las líneas de los gráficos según necesite. Por default todas las líneas
están encendidas.</p>
<p>Una vez seleccionada la variable, satélite y área de interés podrá visualizar el gráfico. Los resultados los puede descargar en formato .csv, haciendo clic en el botón
<span class="bolded">“Descargar”</span>. También puede descargar el gráfico en formato .png, haciendo clic en el botón de cámara, localizado en la esquina derecha
de la gráfica.</p>
<p>En el gráfico, puede seleccionar una fecha de interés haciendo clic y seleccionando un rango de fechas directamente en el mismo. Para visualizar el gráfico nuevamente
con el periodo total de tiempo haga clic en Autoscale, que se encuentra localizado cerca del botón de cámara.</p>
<p>En la leyenda del gráfico puede prender y apagar las líneas de los gráficos según necesite. Por default todas las líneas están encendidas.</p>

<p><span class="bolded">Comparar los promedios por una variable</span></p>
<p>Seleccione la región y variable según lo descrito anteriormente,,, seleccione comparar promedios y observará un gráfico
con la información sobre los promedios comparando los datos obtenidos de una variable con diferentes satélites.</p>
<p>Seleccione la región y variable según lo descrito anteriormente, y posteriormente podrá comparar promedios. Observará un gráfico con la información sobre
los promedios comparando los datos obtenidos de una variable con diferentes satélites.</p>
<p><span class="bolded">Selección de una fecha determinada</span></p>
<p> Podrá visualizar los resultados por un año específico en el pasado. Puede seleccionar un año donde dice “Usar una
Fecha Específica”. Y después cuando cargue el gráfico observará la información de este año.</p>
<p> Podrá visualizar los resultados por un año específico. Haciendo clic en el botón <span class="bolded">“Usar una Fecha Específica”</span>.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
Expand Down

0 comments on commit 6bb7335

Please sign in to comment.