Spaces:
Sleeping
Sleeping
File size: 4,924 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 bf8f114 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 |
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",
)
@solara.reaction(four_fires)
def update_map(selected_fire):
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)
|