File size: 3,244 Bytes
b1847cf
 
 
 
f26f5cc
00737c5
8d53210
f26f5cc
b1847cf
 
 
 
7b7a69f
9562f93
 
b1847cf
9562f93
8d53210
9562f93
 
 
 
 
 
 
 
 
 
 
250c394
7b7a69f
9562f93
250c394
7b7a69f
9562f93
8d53210
7b7a69f
9562f93
 
 
 
 
 
 
 
b1847cf
 
 
9562f93
dde65c4
4780658
dde65c4
9562f93
dde65c4
9562f93
dde65c4
9562f93
dde65c4
9562f93
acddc40
b1847cf
8d53210
b1847cf
8d53210
b1847cf
dcbc506
acddc40
9562f93
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
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}")