File size: 5,036 Bytes
b1847cf
 
 
 
f26f5cc
00737c5
8d53210
f26f5cc
b1847cf
 
 
 
 
 
 
8d53210
 
 
 
 
 
 
 
 
 
 
 
250c394
8d53210
250c394
fcaa928
250c394
8a7f2a2
 
b1847cf
 
089dcef
f26f5cc
8d53210
 
b1847cf
8d53210
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b1847cf
 
 
dde65c4
5d476b0
dde65c4
 
 
 
 
 
 
 
 
00737c5
dde65c4
 
 
accc03c
3d75bfa
afa26bc
dcbc506
b1847cf
8d53210
b1847cf
8d53210
b1847cf
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
94
95
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 update_map(selected_fire):
            Map.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)
                
    def SelectFire(value):
        #selected_fire.value = value
        update_map(value)
        
    solara.Select(label="Wildfire Case Study", value=selected_fire, values=fireList, on_value = SelectFire)
    solara.Markdown(f"**Selected**: {selected_fire.value}")
        
    
    with solara.Column(style={"min-width": "500px"}):
        map_widget = Map.element(
            center=[40, -100],
            zoom=4,
            height="600px",
        )