Spaces:
Sleeping
Sleeping
File size: 4,549 Bytes
b1847cf 8324d6e b1847cf f26f5cc 00737c5 8d53210 f26f5cc b1847cf 9562f93 cb2ab79 8d53210 7c74f2b c1d10d6 85dc91c 7c74f2b 9562f93 7c74f2b 85dc91c 9562f93 7c74f2b b1847cf c1d10d6 b1847cf 9b9b493 c1d10d6 54419cd 600ca48 54419cd 600ca48 54419cd 600ca48 54419cd 600ca48 c1d10d6 600ca48 7c74f2b 0ed20b8 8d53210 7c74f2b 45d532d b1847cf dcbc506 acddc40 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
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("inspector")
selector = widgets.Dropdown(options=fireList, value="North Complex", description='Wildfire Case Study:',)
mapFire_button = widgets.Button(description="Map the burn scar")
def on_button_clicked():
self.clear_layers()
if selector == "North Complex":
self.find_layer("North Complex GOES NBR").visible = True
elif selector == "Dixie":
self.find_layer("Dixie Complex GOES NBR").visible = True
elif selector == "Cameron Peak":
self.find_layer("Cameron Peak GOES NBR").visible = True
elif selector == "August Complex":
self.find_layer("August Complex GOES NBR").visible = True
mapFire_button.on_click(on_btn_clicked)
widgets = widgets.VBox([selector, mapFire_button])
self.add_widget(widgets, position="topleft")
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-15', '2020-11-16', aug_complex_bb)
self.addLayer(north_complex, dNBRvisParams, 'North Complex GOES NBR', True)
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)
#self.layers = self.layers[:3]
#mapFire_button.on_click(on_button_clicked)
@solara.component
def Page():
#map_instance = Map(element_id="map")
#with solara.Column(style={"min-width": "500px", "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)
'''def on_button_clicked():
Map.clear_layers()
if selected_fire == "North Complex":
Map.find_layer("North Complex GOES NBR").visible = True
elif selected_fire == "Dixie":
Map.find_layer("Dixie Complex GOES NBR").visible = True
elif selected_fire == "Cameron Peak":
Map.find_layer("Cameron Peak GOES NBR").visible = True
elif selected_fire == "August Complex":
Map.find_layer("August Complex GOES NBR").visible = True'''
# 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=6,
height="600px",
)
|