burn_mapper / pages /05_GOES_NBR.py
danielle-losos's picture
Re-did the whole organization!
9562f93 verified
raw
history blame
3.24 kB
import ee
import geemap
import solara
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_North_Complex_data()
self.add_ee_data()
def add_ee_data(self): #self
def calcNBR(preStart, preStop, postStart, postStop, bbox):
PREgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date(preStart, preStop)).mean()
POSTgoesCMI = ee.ImageCollection('NOAA/GOES/17/MCMIPF').filter(ee.Filter.date(postStart, postStop)).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
NorthComplexBB = ee.Geometry.BBox(-121.616097, 39.426723, -120.668526, 40.030845)
self.north = calcNBR('2020-08-15', '2020-08-16','2020-09-15', '2020-09-16', NorthComplexBB)
DixieBB = ee.Geometry.BBox(-121.680467, 39.759303, -120.065477, 40.873387)
self.dixie = calcNBR('2021-07-12', '2021-07-13','2021-09-15', '2021-09-16', DixieBB)
CamPeakBB = ee.Geometry.BBox(-106.014784, 40.377907, -105.116651, 40.822094)
self.campeak = calcNBR('2020-08-12', '2020-08-13','2020-09-12', '2020-09-13', CamPeakBB)
AugustComplexBB = ee.Geometry.BBox(-123.668726, 39.337654, -122.355860, 40.498304)
self.august = calcNBR('2020-08-15', '2020-08-16','2020-11-15', '2020-11-16', AugustComplexBB)
self.vis_params = dNBRvisParams
# Add default layer
self.addLayer(
self.north,dNBRvisParams, 'North Complex GOES NBR', True,)
@solara.component
def Page():
map_instance = Map(element_id="map")
def update_map(selected_fire):
map_instance.clear_layers()
if selected_fire == "North Complex":
map_instance.addLayer(map_instance.north, map_instance.vis_params, 'North Complex GOES NBR', True)
elif selected_fire == "Dixie":
map_instance.addLayer(map_instance.dixie, map_instance.vis_params, 'Dixie Complex GOES NBR', True)
elif selected_fire == "Cameron Peak":
map_instance.addLayer(map_instance.campeak, map_instance.vis_params, 'Cameron Peak GOES NBR', True)
elif selected_fire == "August Complex":
map_instance.addLayer(map_instance.august, map_instance.vis_params, 'August Complex GOES NBR', True)
with solara.Column(style={"min-width": "500px"}):
map_widget = Map.element(
center=[40, -100],
zoom=4,
height="600px",
)
solara.Select(label="Wildfire Case Study", value=selected_fire, values=fireList, on_value = update_map)
solara.Markdown(f"**Selected**: {selected_fire.value}")