@@ -112,7 +112,7 @@ def make_adm_overlay(adm_name, adm_sql, adm_color, adm_lev, adm_weight, is_check
112
112
@APP .callback (
113
113
Output ("layers_control" , "children" ),
114
114
Input ("submit_params" , "n_clicks" ),
115
- State ("data_choice" , "value" ),
115
+ Input ("data_choice" , "value" ),
116
116
State ("target_season" , "value" ),
117
117
State ("target_year" , "value" ),
118
118
State ("min_wet_days" ,"value" ),
@@ -244,6 +244,7 @@ def pick_location(n_clicks, click_lat_lng, latitude, longitude):
244
244
lng = lng
245
245
return [lat , lng ], lat , lng
246
246
247
+
247
248
def crop_suitability (
248
249
rainfall_data ,
249
250
min_wet_days ,
@@ -429,6 +430,7 @@ def write_map_title(target_year,target_season):
429
430
@SERVER .route (f"{ TILE_PFX } /<int:tz>/<int:tx>/<int:ty>" )
430
431
def cropSuit_layers (tz , tx , ty ):
431
432
parse_arg = pingrid .parse_arg
433
+ data_choice = parse_arg ("data_choice" )
432
434
target_season = parse_arg ("target_season" )
433
435
target_year = parse_arg ("target_year" , int )
434
436
data_choice = parse_arg ("data_choice" )
@@ -446,15 +448,23 @@ def cropSuit_layers(tz, tx, ty):
446
448
# row numbers increase as latitude decreases
447
449
y_max = pingrid .tile_top_mercator (ty , tz )
448
450
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 ]
458
468
if (
459
469
# When we generalize this to other datasets, remember to
460
470
# account for the possibility that longitudes wrap around,
@@ -470,13 +480,14 @@ def cropSuit_layers(tz, tx, ty):
470
480
X = slice (x_min - x_min % RESOLUTION , x_max + RESOLUTION - x_max % RESOLUTION ),
471
481
Y = slice (y_min - y_min % RESOLUTION , y_max + RESOLUTION - y_max % RESOLUTION ),
472
482
).compute ()
473
- mymap_min = float (0 )
474
- mymap_max = float (5 )
475
483
476
484
mycolormap = CMAPS ["rainbow" ]
477
485
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" )
480
491
mymap = np .squeeze (mymap )
481
492
mymap .attrs ["colormap" ] = mycolormap
482
493
mymap = mymap .rename (X = "lon" , Y = "lat" )
@@ -497,12 +508,17 @@ def cropSuit_layers(tz, tx, ty):
497
508
def set_colorbar (
498
509
data_choice ,
499
510
):
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
501
516
return (
502
517
f"{ CONFIG ['map_text' ][data_choice ]['menu_label' ]} [{ CONFIG ['map_text' ][data_choice ]['units' ]} ]" ,
503
518
CMAPS ["rainbow" ].to_dash_leaflet (),
504
519
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],
506
522
)
507
523
508
524
if __name__ == "__main__" :
0 commit comments