File size: 4,994 Bytes
b1847cf
 
 
 
f26f5cc
00737c5
8d53210
f26f5cc
b1847cf
 
 
 
 
 
 
8d53210
 
 
 
 
 
 
 
 
 
 
 
250c394
8d53210
250c394
fcaa928
250c394
8a7f2a2
 
b1847cf
 
089dcef
f26f5cc
8d53210
 
b1847cf
8d53210
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b1847cf
 
 
00737c5
 
 
dcbc506
afa26bc
dcbc506
b1847cf
8d53210
b1847cf
8d53210
b1847cf
dcbc506
afa26bc
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
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_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():
    def SelectFire(value):
        selected_fire.value = value
    solara.SelectMultiple(label="Wildfire Case Study", value=selected_fire, values=fireList, on_value = SelectFire)
    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(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)