burn_mapper / pages /05_GOES_NBR.py
danielle-losos's picture
Remove solara widgets
336e6ba verified
raw
history blame
5.27 kB
import ee
import geemap
import solara
import ipywidgets as widgets
fireList = ["North Complex", "Dixie", "Cameron Peak", "August Complex"]
selected_fire = solara.reactive([fireList[0]])
dNBRvisParams = {'min': 0.0,'max': 0.8, 'palette': ['green', 'yellow','orange','red']}
class Map(geemap.Map):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.add_ee_data()
self.add("layer_manager")
self.add_selector()
def add_ee_data(self):
def calc_nbr(pre_start, pre_stop, post_start, post_stop, bbox):
PREgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date(pre_start, pre_stop)).mean()
POSTgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date(post_start, post_stop)).mean()
preNBR = PREgoesCMI.select(['CMI_C03','CMI_C06']).normalizedDifference(['CMI_C03', 'CMI_C06']).toFloat().rename('NBR')
postNBR = POSTgoesCMI.select(['CMI_C03','CMI_C06']).normalizedDifference(['CMI_C03', 'CMI_C06']).toFloat().rename('NBR')
dNBR = preNBR.subtract(postNBR).select('NBR')
dNBRclipped = dNBR.clip(bbox)
return dNBRclipped
north_complex_bb = ee.Geometry.BBox(-121.616097, 39.426723, -120.668526, 40.030845)
dixie_bb = ee.Geometry.BBox(-121.680467, 39.759303, -120.065477, 40.873387)
cam_peak_bb = ee.Geometry.BBox(-106.014784, 40.377907, -105.116651, 40.822094)
aug_complex_bb = ee.Geometry.BBox(-123.668726, 39.337654, -122.355860, 40.498304)
north_complex = calc_nbr('2020-08-15', '2020-08-16', '2020-09-15', '2020-09-16', north_complex_bb)
dixie = calc_nbr('2021-07-12', '2021-07-13', '2021-09-15', '2021-09-16', dixie_bb)
cam_peak = calc_nbr('2020-08-12', '2020-08-13', '2020-09-12', '2020-09-13', cam_peak_bb)
aug_complex = calc_nbr('2020-08-15', '2020-08-16', '2020-11-10', '2020-11-11', aug_complex_bb)
self.addLayer(north_complex, dNBRvisParams, 'North Complex GOES NBR', False)
self.addLayer(dixie, dNBRvisParams, 'Dixie Complex GOES NBR', False)
self.addLayer(cam_peak, dNBRvisParams, 'Cameron Peak GOES NBR', False)
self.addLayer(aug_complex, dNBRvisParams, 'August Complex GOES NBR', False)
def add_selector(self):
selector = widgets.Dropdown(options=fireList, value="North Complex", description='Wildfire Case Study:')
output = widgets.Output()
def on_selector_change(change):
selected_fire = change['new']
#self.clear_layers()
if selected_fire == "North Complex":
self.find_layer('North Complex GOES NBR').visible = True
elif selected_fire == "Dixie":
self.find_layer('Dixie Complex GOES NBR').visible = True
elif selected_fire == "Cameron Peak":
self.find_layer('Cameron Peak GOES NBR').visible = True
elif selected_fire == "August Complex":
self.find_layer('August Complex GOES NBR').visible = True
with output:
output.clear_output()
print(f"Selected wildfire case study: {selected_fire}")
selector.observe(on_selector_change, names='value')
widget = widgets.VBox([selector, output])
self.add_widget(widget, position="topleft")
@solara.component
def Page():
#with solara.Column(style={"align":"start", "min-width": "200px", "height": "200px"}):
#solara.Select(label="Wildfire Case Study", value=selected_fire, values=fireList)
#solara.Markdown(f"**Selected**: {selected_fire.value}")
#solara.Button(label="Map the burn scar",) #on_click = on_button_clicked)
# Isolation is required to prevent the map from overlapping navigation (when screen width < 960px)
with solara.Column(style={"isolation": "isolate"}):
map_widget = Map.element(
center=[39, -120.5],
zoom=8,
height="600px",
)
'''layers=[
{
"eeObject": Map.calc_nbr('2020-08-15', '2020-08-16', '2020-09-15', '2020-09-16', north_complex_bb),
"visParams": dNBRvisParams,
"name": "North Complex GOES NBR",
"visible": True
},
{
"eeObject": Map.calc_nbr('2021-07-12', '2021-07-13', '2021-09-15', '2021-09-16', dixie_bb),
"visParams": dNBRvisParams,
"name": "Dixie Complex GOES NBR",
"visible": False
},
{
"eeObject": Map.calc_nbr('2020-08-12', '2020-08-13', '2020-09-12', '2020-09-13', cam_peak_bb),
"visParams": dNBRvisParams,
"name": "Cameron Peak GOES NBR",
"visible": True
},
{
"eeObject": Map.calc_nbr('2020-08-15', '2020-08-16', '2020-11-10', '2020-11-11', aug_complex_bb),
"visParams": dNBRvisParams,
"name": "August Complex GOES NBR",
"visible": False
}],'''