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)