Spaces:
Sleeping
Sleeping
RE WROTE IT ALLL
Browse files- pages/05_GOES_NBR.py +42 -46
pages/05_GOES_NBR.py
CHANGED
@@ -13,68 +13,64 @@ class Map(geemap.Map):
|
|
13 |
self.add("layer_manager")
|
14 |
self.add("inspector")
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
def add_ee_data(self):
|
17 |
-
|
18 |
-
|
19 |
-
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
-
|
22 |
dixie_bb = ee.Geometry.BBox(-121.680467, 39.759303, -120.065477, 40.873387)
|
23 |
-
self.dixie = self.calc_nbr('2021-07-12', '2021-07-13', '2021-09-15', '2021-09-16', dixie_bb)
|
24 |
-
|
25 |
-
# Add Cameron Peak image
|
26 |
cam_peak_bb = ee.Geometry.BBox(-106.014784, 40.377907, -105.116651, 40.822094)
|
27 |
-
self.cam_peak = self.calc_nbr('2020-08-12', '2020-08-13', '2020-09-12', '2020-09-13', cam_peak_bb)
|
28 |
-
|
29 |
-
# Add August Complex image
|
30 |
aug_complex_bb = ee.Geometry.BBox(-123.668726, 39.337654, -122.355860, 40.498304)
|
31 |
-
self.aug_complex = self.calc_nbr('2020-08-15', '2020-08-16', '2020-11-15', '2020-11-16', aug_complex_bb)
|
32 |
-
|
33 |
-
# Visualization parameters
|
34 |
-
self.dNBRvisParams = dNBRvisParams
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
|
|
44 |
|
45 |
@solara.component
|
46 |
def Page():
|
47 |
#map_instance = Map(element_id="map")
|
48 |
-
|
49 |
-
def update_map(selected_fire):
|
50 |
-
Map.clear_layers()
|
51 |
-
print("Adding layer")
|
52 |
-
|
53 |
-
if selected_fire == "North Complex":
|
54 |
-
print("Adding North Complex layer")
|
55 |
-
Map.addLayer(map_instance.north_complex, map_instance.dNBRvisParams, 'North Complex GOES NBR', True)
|
56 |
-
|
57 |
-
elif selected_fire == "Dixie":
|
58 |
-
print("Adding Dixie layer")
|
59 |
-
Map.addLayer(map_instance.dixie, map_instance.dNBRvisParams, 'Dixie Complex GOES NBR', True)
|
60 |
-
|
61 |
-
elif selected_fire == "Cameron Peak":
|
62 |
-
print("Adding Cam Peak layer")
|
63 |
-
map_instance.addLayer(map_instance.cam_peak, map_instance.dNBRvisParams, 'Cameron Peak GOES NBR', True)
|
64 |
-
|
65 |
-
elif selected_fire == "August Complex":
|
66 |
-
print("Adding August Complex layer")
|
67 |
-
Map.addLayer(map_instance.aug_complex, map_instance.dNBRvisParams, 'August Complex GOES NBR', True)
|
68 |
-
|
69 |
#Add elements to page
|
70 |
-
with solara.Column(style={"min-width": "500px", "height": "
|
71 |
solara.Select(label="Wildfire Case Study", value=selected_fire, values=fireList, on_value=update_map)
|
72 |
solara.Markdown(f"**Selected**: {selected_fire.value}")
|
73 |
-
|
|
|
|
|
74 |
# Isolation is required to prevent the map from overlapping navigation (when screen width < 960px)
|
75 |
with solara.Column(style={"isolation": "isolate"}):
|
76 |
map_widget = Map.element(
|
77 |
-
center=[
|
78 |
zoom=6,
|
79 |
height="600px",
|
80 |
)
|
|
|
13 |
self.add("layer_manager")
|
14 |
self.add("inspector")
|
15 |
|
16 |
+
solara.Select(label="Wildfire Case Study", value=selected_fire, values=fireList, on_value=update_map)
|
17 |
+
solara.Markdown(f"**Selected**: {selected_fire.value}")
|
18 |
+
mapFire_button = widgets.Button(description="Map the burn scar")
|
19 |
+
|
20 |
+
def on_button_clicked(b):
|
21 |
+
self.clear_layers()
|
22 |
+
if selected_fire == "North Complex":
|
23 |
+
self.find_layer("North Complex GOES NBR").visible = True
|
24 |
+
elif selected_fire == "Dixie":
|
25 |
+
self.find_layer("Dixie Complex GOES NBR").visible = True
|
26 |
+
elif selected_fire == "Cameron Peak":
|
27 |
+
self.find_layer("Cameron Peak GOES NBR").visible = True
|
28 |
+
elif selected_fire == "August Complex":
|
29 |
+
self.find_layer("August Complex GOES NBR").visible = True
|
30 |
+
#self.layers = self.layers[:3]
|
31 |
+
|
32 |
+
mapFire_button.on_click(on_button_clicked)
|
33 |
+
|
34 |
def add_ee_data(self):
|
35 |
+
def calc_nbr(pre_start, pre_stop, post_start, post_stop, bbox):
|
36 |
+
PREgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date(pre_start, pre_stop)).mean()
|
37 |
+
POSTgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date(post_start, post_stop)).mean()
|
38 |
+
preNBR = PREgoesCMI.select(['CMI_C03','CMI_C06']).normalizedDifference(['CMI_C03', 'CMI_C06']).toFloat().rename('NBR')
|
39 |
+
postNBR = POSTgoesCMI.select(['CMI_C03','CMI_C06']).normalizedDifference(['CMI_C03', 'CMI_C06']).toFloat().rename('NBR')
|
40 |
+
dNBR = preNBR.subtract(postNBR).select('NBR')
|
41 |
+
dNBRclipped = dNBR.clip(bbox)
|
42 |
+
return dNBRclipped
|
43 |
|
44 |
+
north_complex_bb = ee.Geometry.BBox(-121.616097, 39.426723, -120.668526, 40.030845)
|
45 |
dixie_bb = ee.Geometry.BBox(-121.680467, 39.759303, -120.065477, 40.873387)
|
|
|
|
|
|
|
46 |
cam_peak_bb = ee.Geometry.BBox(-106.014784, 40.377907, -105.116651, 40.822094)
|
|
|
|
|
|
|
47 |
aug_complex_bb = ee.Geometry.BBox(-123.668726, 39.337654, -122.355860, 40.498304)
|
|
|
|
|
|
|
|
|
48 |
|
49 |
+
north_complex = calc_nbr('2020-08-15', '2020-08-16', '2020-09-15', '2020-09-16', north_complex_bb)
|
50 |
+
dixie = calc_nbr('2021-07-12', '2021-07-13', '2021-09-15', '2021-09-16', dixie_bb)
|
51 |
+
cam_peak = calc_nbr('2020-08-12', '2020-08-13', '2020-09-12', '2020-09-13', cam_peak_bb)
|
52 |
+
aug_complex = calc_nbr('2020-08-15', '2020-08-16', '2020-11-15', '2020-11-16', aug_complex_bb)
|
53 |
+
|
54 |
+
self.addLayer(north_complex, dNBRvisParams, 'North Complex GOES NBR', True)
|
55 |
+
self.addLayer(dixie, dNBRvisParams, 'Dixie Complex GOES NBR', False)
|
56 |
+
self.addLayer(cam_peak, dNBRvisParams, 'Cameron Peak GOES NBR', False)
|
57 |
+
self.addLayer(aug_complex, dNBRvisParams, 'August Complex GOES NBR', False)
|
58 |
|
59 |
@solara.component
|
60 |
def Page():
|
61 |
#map_instance = Map(element_id="map")
|
62 |
+
'''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
#Add elements to page
|
64 |
+
with solara.Column(style={"min-width": "500px", "height": "200px"}):
|
65 |
solara.Select(label="Wildfire Case Study", value=selected_fire, values=fireList, on_value=update_map)
|
66 |
solara.Markdown(f"**Selected**: {selected_fire.value}")
|
67 |
+
mapFire_button = widgets.Button(description="Map the burn scar")
|
68 |
+
'''
|
69 |
+
|
70 |
# Isolation is required to prevent the map from overlapping navigation (when screen width < 960px)
|
71 |
with solara.Column(style={"isolation": "isolate"}):
|
72 |
map_widget = Map.element(
|
73 |
+
center=[39, -120.5],
|
74 |
zoom=6,
|
75 |
height="600px",
|
76 |
)
|