Spaces:
Sleeping
Sleeping
File size: 4,985 Bytes
b1847cf f26f5cc 8d53210 f26f5cc b1847cf 8d53210 250c394 8d53210 250c394 fcaa928 250c394 8a7f2a2 b1847cf 089dcef f26f5cc 8d53210 b1847cf 8d53210 b1847cf dcbc506 b1847cf 8d53210 b1847cf 8d53210 b1847cf dcbc506 8d53210 dcbc506 |
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 |
import ee
import geemap
import solara
fireList = ["North Complex", "Dixie", "Cameron Peak", "August Complex"]
four_fires = 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_plot_gui()
def add_ee_data(map_widget): #self
# Create a bounding box geometry
NorthComplexBB = ee.Geometry.BBox(-121.616097, 39.426723, -120.668526, 40.030845)
PREgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date('2020-08-15', '2020-08-16')).mean()
POSTgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date('2020-09-15', '2020-09-16')).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(NorthComplexBB)
#self.addLayer(dNBRclipped, dNBRvisParams, "GOES dNBR")
map_widget.addLayer(dNBR, dNBRvisParams, "GOES dNBR - North Complex")
def add_Dixie_data(map_widget):
# Create a bounding box geometry
NorthComplexBB = ee.Geometry.BBox(-121.616097, 39.426723, -120.668526, 40.030845)
PREgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date('2020-08-15', '2020-08-16')).mean()
POSTgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date('2020-09-15', '2020-09-16')).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(NorthComplexBB)
#self.addLayer(dNBRclipped, dNBRvisParams, "GOES dNBR")
map_widget.addLayer(dNBR, dNBRvisParams, "GOES dNBR - North Complex")
def add_Cameron_Peak_data(map_widget):
# Create a bounding box geometry
NorthComplexBB = ee.Geometry.BBox(-121.616097, 39.426723, -120.668526, 40.030845)
PREgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date('2020-08-15', '2020-08-16')).mean()
POSTgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date('2020-09-15', '2020-09-16')).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(NorthComplexBB)
#self.addLayer(dNBRclipped, dNBRvisParams, "GOES dNBR")
map_widget.addLayer(dNBR, dNBRvisParams, "GOES dNBR - North Complex")
def add_August_Complex_data(map_widget):
# Create a bounding box geometry
NorthComplexBB = ee.Geometry.BBox(-121.616097, 39.426723, -120.668526, 40.030845)
PREgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date('2020-08-15', '2020-08-16')).mean()
POSTgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date('2020-09-15', '2020-09-16')).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(NorthComplexBB)
#self.addLayer(dNBRclipped, dNBRvisParams, "GOES dNBR")
map_widget.addLayer(dNBR, dNBRvisParams, "GOES dNBR - North Complex")
@solara.component
def Page():
solara.SelectMultiple("Wildfire Case Study", four_fires, fireList)
solara.Markdown(f"**Selected**: {four_fires.value}")
with solara.Column(style={"min-width": "500px"}):
map_widget = Map.element(
center=[40, -100],
zoom=4,
height="600px",
)
def update_map(change):
selected_fire = change["new"]
map_widget.clear_layers()
if selected_fire == "North Complex":
add_North_Complex_data(map_widget)
elif selected_fire == "Dixie":
add_Dixie_data(map_widget)
elif selected_fire == "Cameron Peak":
add_Cameron_Peak_data(map_widget)
elif selected_fire == "August Complex":
add_August_Complex_data(map_widget)
four_fires.observe(update_map, names="value")
|