Skip to content

Commit ca2936e

Browse files
author
Drew Resnick
committed
add option to select different data layers to display
1 parent 413d115 commit ca2936e

File tree

2 files changed

+36
-16
lines changed

2 files changed

+36
-16
lines changed

enacts/config-nma.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,21 +167,25 @@ crop_suit:
167167
description: The map shows the result of spatial overlay analysis using the user inputs for a specific crop.
168168
units: integer index
169169
data_var: suit
170+
map_max: 5
170171
precip_map:
171172
menu_label: Precipitation
172173
description: Coverage of the region for precipitationd data.
173174
units: mm
174175
data_var: precip
176+
map_max: 20
175177
tmax_map:
176178
menu_label: Maximum temperature
177179
description: Coverage for the region for maximum temperature data.
178180
units: C
179181
data_var: temp
182+
map_max: 40
180183
tmin_map:
181184
menu_label: Minimum temperature
182185
description: Coverage for the region for minimum temperature data.
183186
units: C
184187
data_var: temp
188+
map_max: 30
185189
param_defaults:
186190
target_year: 2018
187191
target_season: MAM

enacts/crop_suitability/maproom_crop_suit.py

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def make_adm_overlay(adm_name, adm_sql, adm_color, adm_lev, adm_weight, is_check
112112
@APP.callback(
113113
Output("layers_control", "children"),
114114
Input("submit_params", "n_clicks"),
115-
State("data_choice", "value"),
115+
Input("data_choice", "value"),
116116
State("target_season", "value"),
117117
State("target_year", "value"),
118118
State("min_wet_days","value"),
@@ -244,6 +244,7 @@ def pick_location(n_clicks, click_lat_lng, latitude, longitude):
244244
lng = lng
245245
return [lat, lng], lat, lng
246246

247+
247248
def crop_suitability(
248249
rainfall_data,
249250
min_wet_days,
@@ -429,6 +430,7 @@ def write_map_title(target_year,target_season):
429430
@SERVER.route(f"{TILE_PFX}/<int:tz>/<int:tx>/<int:ty>")
430431
def cropSuit_layers(tz, tx, ty):
431432
parse_arg = pingrid.parse_arg
433+
data_choice = parse_arg("data_choice")
432434
target_season = parse_arg("target_season")
433435
target_year = parse_arg("target_year", int)
434436
data_choice = parse_arg("data_choice")
@@ -446,15 +448,23 @@ def cropSuit_layers(tz, tx, ty):
446448
# row numbers increase as latitude decreases
447449
y_max = pingrid.tile_top_mercator(ty, tz)
448450
y_min = pingrid.tile_top_mercator(ty + 1, tz)
449-
450-
crop_suit_vals = crop_suitability(
451-
rr_mrg, min_wet_days, wet_day_def, tmax_mrg, tmin_mrg,
452-
lower_wet_threshold, upper_wet_threshold, maximum_temp,
453-
minimum_temp, temp_range, target_season,
454-
)
455-
456-
data_tile = crop_suit_vals.crop_suit
457-
451+
mymap_min = float(0)
452+
mymap_max = CONFIG["map_text"][data_choice]["map_max"]
453+
if data_choice == "suitability_map":
454+
crop_suit_vals = crop_suitability(
455+
rr_mrg, min_wet_days, wet_day_def, tmax_mrg, tmin_mrg,
456+
lower_wet_threshold, upper_wet_threshold, maximum_temp,
457+
minimum_temp, temp_range, target_season,
458+
)
459+
data_tile = crop_suit_vals.crop_suit
460+
else:
461+
data_var = CONFIG["map_text"][data_choice]["data_var"]
462+
if data_choice == "precip_map":
463+
data_tile = rr_mrg[data_var]
464+
if data_choice == "tmin_map":
465+
data_tile = tmin_mrg[data_var]
466+
if data_choice == "tmax_map":
467+
data_tile = tmax_mrg[data_var]
458468
if (
459469
# When we generalize this to other datasets, remember to
460470
# account for the possibility that longitudes wrap around,
@@ -470,13 +480,14 @@ def cropSuit_layers(tz, tx, ty):
470480
X=slice(x_min - x_min % RESOLUTION, x_max + RESOLUTION - x_max % RESOLUTION),
471481
Y=slice(y_min - y_min % RESOLUTION, y_max + RESOLUTION - y_max % RESOLUTION),
472482
).compute()
473-
mymap_min = float(0)
474-
mymap_max = float(5)
475483

476484
mycolormap = CMAPS["rainbow"]
477485

478-
#mymap = data_tile.mean("year")
479-
mymap = data_tile[data_tile["year"] == target_year]
486+
if data_choice == "suitability_map":
487+
mymap = data_tile[data_tile["year"] == target_year]
488+
else:
489+
mymap = data_tile[data_tile["T.year"] == target_year]
490+
mymap = mymap[mymap["T.season"] == target_season].mean("T")
480491
mymap = np.squeeze(mymap)
481492
mymap.attrs["colormap"] = mycolormap
482493
mymap = mymap.rename(X="lon", Y="lat")
@@ -497,12 +508,17 @@ def cropSuit_layers(tz, tx, ty):
497508
def set_colorbar(
498509
data_choice,
499510
):
500-
mymap_max = 5
511+
mymap_max = CONFIG["map_text"][data_choice]["map_max"]
512+
if data_choice == "suitability_map":
513+
tick_freq = 1
514+
else:
515+
tick_freq = 5
501516
return (
502517
f"{CONFIG['map_text'][data_choice]['menu_label']} [{CONFIG['map_text'][data_choice]['units']}]",
503518
CMAPS["rainbow"].to_dash_leaflet(),
504519
mymap_max,
505-
[0,1,2,3,4,5],
520+
[i for i in range(0, mymap_max + 1) if i % tick_freq == 0],
521+
#[0,1,2,3,4,5],
506522
)
507523

508524
if __name__ == "__main__":

0 commit comments

Comments
 (0)