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")