File size: 27,779 Bytes
216e903
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8d1daf1
216e903
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52dd204
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216e903
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e773872
216e903
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
import os
import leafmap
import solara
import ipywidgets as widgets
from leafmap import leafmap
import leafmap.colormaps as cm
from leafmap.common import get_image_colormap






zoom = solara.reactive(2)
center = solara.reactive((20, 0))


maps = {
     'Agro-ecological Zones: AEZ classification by climate/soil/terrain/LC': 'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/LR/aez/aez_v9v2_ENSEMBLE_rcp2p6_2020s.tif',
     'Koeppen-Geiger (3-character) classification 2011-2040': 'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/res01/IPSL-CM5A-LR/rcp4p5/KG3_IPSL-CM5A-LR_rcp4p5_2020s.tif',
    "Total number of growing period days": 'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/res01/GFDL-ESM2M/rcp2p6/TS/lgd_GFDL-ESM2M_rcp2p6_',
    "Number of dry days during temperature growing period LGPt=5 (days)" : 'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/res01/IPSL-CM5A-LR/rcp8p5/TS/ndd2_IPSL-CM5A-LR_rcp8p5_',
    'Longest period of consecutive dry days in temperature growing period LGPt=5(days)':'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/res01/HadGEM2-ES/rcp2p6/TS/ndd_HadGEM2-ES_rcp2p6_',
    'Annual temperature amplitude (°C)': 'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/res01/NorESM1-M/rcp4p5/TS/td2_NorESM1-M_rcp4p5_',
    'Mean annual temperature (°C)': 'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/res01/MIROC-ESM-CHEM/rcp4p5/TS/tmp_MIROC-ESM-CHEM_rcp4p5_',
    'Annual precipitation (mm)': 'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/res01/MIROC-ESM-CHEM/rcp6p0/TS/prc_MIROC-ESM-CHEM_rcp6p0_',
    'Total number of rain days (days with P > 1 mm)': 'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/res01/IPSL-CM5A-LR/rcp4p5/TS/ndr_IPSL-CM5A-LR_rcp4p5_'
    
}
anos = list(range(2025, 2041))




#municipios = ee.FeatureCollection('FAO/GAUL_SIMPLIFIED_500m/2015/level2').filter(ee.Filter.eq('ADM0_NAME', 'Brazil'))
#municipios_list = 

# Get the list of municipality names
#estados_list = [estados_list]

maps_list= list(maps)
maps_values= list(maps.values())

aez_colors = {
    0: "#FFFFFF",  # NAA
    1: "#FFD700",  # Tropics, lowland; semi-arid, no soil/terrain limitations
    2: "#DAA520",  # Tropics, lowland; semi-arid, with soil/terrain limitations
    3: "#32CD32",  # Tropics, lowland; sub-humid, no soil/terrain limitations
    4: "#228B22",  # Tropics, lowland; sub-humid, with soil/terrain limitations
    5: "#008000",  # Tropics, lowland; humid, no soil/terrain limitations
    6: "#006400",  # Tropics, lowland; humid, with soil/terrain limitations
    7: "#FFA500",  # Tropics, highland; semi-arid, no soil/terrain limitations
    8: "#FF8C00",  # Tropics, highland; semi-arid, with soil/terrain limitations
    9: "#7FFF00",  # Tropics, highland; sub-humid, no soil/terrain limitations
    10: "#ADFF2F",  # Tropics, highland; sub-humid, with soil/terrain limitations
    11: "#00FF00",  # Tropics, highland; humid, no soil/terrain limitations
    12: "#00FA9A",  # Tropics, highland; humid, with soil/terrain limitations
    13: "#FF4500",  # Sub-tropics, warm; semi-arid, no soil/terrain limitations
    14: "#FF6347",  # Sub-tropics, warm; semi-arid, with soil/terrain limitations
    15: "#9ACD32",  # Sub-tropics, warm; sub-humid, no soil/terrain limitations
    16: "#6B8E23",  # Sub-tropics, warm; sub-humid, with soil/terrain limitations
    17: "#3CB371",  # Sub-tropics, warm; humid, no soil/terrain limitations
    18: "#2E8B57",  # Sub-tropics, warm; humid, with soil/terrain limitations
    19: "#8B4513",  # Sub-tropics, mud, cool; semi-arid, no soil/terrain limitations
    20: "#A0522D",  # Sub-tropics, mud, cool; semi-arid, with soil/terrain limitations
    21: "#D2B48C",  # Sub-tropics, mud, cool; sub-humid, no soil/terrain limitations
    22: "#BC8F8F",  # Sub-tropics, mud, cool; sub-humid, with soil/terrain limitations
    23: "#8FBC8F",  # Sub-tropics, mud, cool; humid, no soil/terrain limitations
    24: "#556B2F",  # Sub-tropics, mud, cool; humid, with soil/terrain limitations
    25: "#CD853F",  # Sub-tropics, cool; semi-arid, no soil/terrain limitations
    26: "#DEB887",  # Sub-tropics, cool; sub-humid, no soil/terrain limitations
    27: "#F4A460",  # Sub-tropics, cool; humid, with soil/terrain limitations
    28: "#D2691E",  # Sub-tropics, cool; humid, no soil/terrain limitations
    29: "#B0C4DE",  # Temperature, moderate; dry, no soil/terrain limitations
    30: "#87CEEB",  # Temperature, moderate; dry, with soil/terrain limitations
    31: "#ADD8E6",  # Temperature, moderate; moist, no soil/terrain limitations
    32: "#6495ED",  # Temperature, moderate; moist, with soil/terrain limitations
    33: "#1E90FF",  # Temperature, moderate; wet, no soil/terrain limitations
    34: "#0000FF",  # Temperature, moderate; wet, with soil/terrain limitations
    35: "#4682B4",  # Temperature, cool; dry, no soil/terrain limitations
    36: "#5F9EA0",  # Temperature, cool; dry, with soil/terrain limitations
    37: "#00CED1",  # Temperature, cool; moist, no soil/terrain limitations
    38: "#40E0D0",  # Temperature, cool; moist, with soil/terrain limitations
    39: "#00FFFF",  # Temperature, cool; wet, no soil/terrain limitations
    40: "#00BFFF",  # Temperature, cool; wet, with soil/terrain limitations
    41: "#A9A9A9",  # Cold, no permafrost; dry, no soil/terrain limitations
    42: "#808080",  # Cold, no permafrost; dry, with soil/terrain limitations
    43: "#C0C0C0",  # Cold, no permafrost; moist, no soil/terrain limitations
    44: "#D3D3D3",  # Cold, no permafrost; moist, with soil/terrain limitations
    45: "#E0FFFF",  # Cold, no permafrost; wet, no soil/terrain limitations
    46: "#F0FFFF",  # Cold, no permafrost; wet, with soil/terrain limitations
    47: "#8B0000",  # Dominantly very steep terrain
    48: "#FF0000",  # Land with severe soil/terrain limitations
    49: "#00FF00",  # Ample irrigated soils
    50: "#008080",  # Dominantly hydromorphic soils
    51: "#FFDAB9",  # Desert/Arid climate
    52: "#000080",  # Boreal/Cold climate
    53: "#FFFFFF",  # Arctic/Very cold climate
    54: "#A52A2A",  # Dominantly built-up land
    55: "#0000FF"   # Dominantly water
}

aez_dict ={
    "NAA": "#FFFFFF",  # Branco
    "Tropics, lowland; semi-arid, no soil/terrain limitations": "#FFD700",  # Dourado
    "Tropics, lowland; semi-arid, with soil/terrain limitations": "#DAA520",  # Dourado escuro
    "Tropics, lowland; sub-humid, no soil/terrain limitations": "#32CD32",  # Verde Lima
    "Tropics, lowland; sub-humid, with soil/terrain limitations": "#228B22",  # Verde Floresta
    "Tropics, lowland; humid, no soil/terrain limitations": "#008000",  # Verde
    "Tropics, lowland; humid, with soil/terrain limitations": "#006400",  # Verde Escuro
    "Tropics, highland; semi-arid, no soil/terrain limitations": "#FFA500",  # Laranja
    "Tropics, highland; semi-arid, with soil/terrain limitations": "#FF8C00",  # Laranja Escuro
    "Tropics, highland; sub-humid, no soil/terrain limitations": "#7FFF00",  # Verde Chartreuse
    "Tropics, highland; sub-humid, with soil/terrain limitations": "#ADFF2F",  # Verde Amarelo
    "Tropics, highland; humid, no soil/terrain limitations": "#00FF00",  # Verde Limão
    "Tropics, highland; humid, with soil/terrain limitations": "#00FA9A",  # Verde Médio
    "Sub-tropics, warm; semi-arid, no soil/terrain limitations": "#FF4500",  # Laranja Vermelho
    "Sub-tropics, warm; semi-arid, with soil/terrain limitations": "#FF6347",  # Tomate
    "Sub-tropics, warm; sub-humid, no soil/terrain limitations": "#9ACD32",  # Verde Amarelo Escuro
    "Sub-tropics, warm; sub-humid, with soil/terrain limitations": "#6B8E23",  # Verde Oliva
    "Sub-tropics, warm; humid, no soil/terrain limitations": "#3CB371",  # Verde Mar Médio
    "Sub-tropics, warm; humid, with soil/terrain limitations": "#2E8B57",  # Verde Mar
    "Sub-tropics, mud, cool; semi-arid, no soil/terrain limitations": "#8B4513",  # Marrom Sela
    "Sub-tropics, mud, cool; semi-arid, with soil/terrain limitations": "#A0522D",  # Sienna
    "Sub-tropics, mud, cool; sub-humid, no soil/terrain limitations": "#D2B48C",  # Tan
    "Sub-tropics, mud, cool; sub-humid, with soil/terrain limitations": "#BC8F8F",  # Rosa Marrom
    "Sub-tropics, mud, cool; humid, no soil/terrain limitations": "#8FBC8F",  # Verde Mar Claro
    "Sub-tropics, mud, cool; humid, with soil/terrain limitations": "#556B2F",  # Verde Oliva Escuro
    "Sub-tropics, cool; semi-arid, no soil/terrain limitations": "#CD853F",  # Peru
    "Sub-tropics, cool; sub-humid, no soil/terrain limitations": "#DEB887",  # Burlywood
    "Sub-tropics, cool; humid, with soil/terrain limitations": "#F4A460",  # Sandy Brown
    "Sub-tropics, cool; humid, no soil/terrain limitations": "#D2691E",  # Chocolate
    "Temperature, moderate; dry, no soil/terrain limitations": "#B0C4DE",  # Azul Aço Claro
    "Temperature, moderate; dry, with soil/terrain limitations": "#87CEEB",  # Céu Azul
    "Temperature, moderate; moist, no soil/terrain limitations": "#ADD8E6",  # Azul Claro
    "Temperature, moderate; moist, with soil/terrain limitations": "#6495ED",  # Azul Cornflower
    "Temperature, moderate; wet, no soil/terrain limitations": "#1E90FF",  # Azul Dodger
    "Temperature, moderate; wet, with soil/terrain limitations": "#0000FF",  # Azul
    "Temperature, cool; dry, no soil/terrain limitations": "#4682B4",  # Azul Aço
    "Temperature, cool; dry, with soil/terrain limitations": "#5F9EA0",  # Azul Cadet
    "Temperature, cool; moist, no soil/terrain limitations": "#00CED1",  # Azul Turquesa Escuro
    "Temperature, cool; moist, with soil/terrain limitations": "#40E0D0",  # Turquesa
    "Temperature, cool; wet, no soil/terrain limitations": "#00FFFF",  # Ciano
    "Temperature, cool; wet, with soil/terrain limitations": "#00BFFF",  # Azul Céu Profundo
    "Cold, no permafrost; dry, no soil/terrain limitations": "#A9A9A9",  # Cinza Escuro
    "Cold, no permafrost; dry, with soil/terrain limitations": "#808080",  # Cinza
    "Cold, no permafrost; moist, no soil/terrain limitations": "#C0C0C0",  # Prata
    "Cold, no permafrost; moist, with soil/terrain limitations": "#D3D3D3",  # Cinza Claro
    "Cold, no permafrost; wet, no soil/terrain limitations": "#E0FFFF",  # Azul Claro Claro
    "Cold, no permafrost; wet, with soil/terrain limitations": "#F0FFFF",  # Azul Celeste
    "Dominantly very steep terrain": "#8B0000",  # Vermelho Escuro
    "Land with severe soil/terrain limitations": "#FF0000",  # Vermelho
    "Ample irrigated soils": "#00FF00",  # Verde Limão
    "Dominantly hydromorphic soils": "#008080",  # Verde Azulado
    "Desert/Arid climate": "#FFDAB9",  # Pêssego
    "Boreal/Cold climate": "#000080",  # Azul Marinho
    "Arctic/Very cold climate": "#FFFFFF",  # Branco
    "Dominantly built-up land": "#A52A2A",  # Marrom
    "Dominantly water": "#0000FF"  # Azul
}


legend_dict = {
    "NA": "#FFFFFF",
    "Tropics, lowland; semi-arid, no soil/terrain limitations": "#FF99CC",
    "Tropics, lowland; semi-arid, with soil/terrain limitations": "#FF6699",
    "Tropics, lowland; sub-humid, no soil/terrain limitations": "#FF9966",
    "Tropics, lowland; sub-humid, with soil/terrain limitations": "#FF6600",
    "Tropics, lowland; humid, no soil/terrain limitations": "#FFCC66",
    "Tropics, lowland; humid, with soil/terrain limitations": "#FF9933",
    "Tropics, highland; semi-arid, no soil/terrain limitations": "#FFCC99",
    "Tropics, highland; semi-arid, with soil/terrain limitations": "#FFCC00",
    "Tropics, highland; sub-humid, no soil/terrain limitations": "#FFFF99",
    "Tropics, highland; sub-humid, with soil/terrain limitations": "#FFFF33",
    "Tropics, highland; humid, no soil/terrain limitations": "#FFFF66",
    "Tropics, highland; humid, with soil/terrain limitations": "#FFFF00",
    "Sub-tropics, warm; semi-arid, no soil/terrain limitations": "#FFCC33",
    "Sub-tropics, warm; semi-arid, with soil/terrain limitations": "#FF9900",
    "Sub-tropics, warm; sub-humid, no soil/terrain limitations": "#FFCC00",
    "Sub-tropics, warm; sub-humid, with soil/terrain limitations": "#FF9900",
    "Sub-tropics, warm; humid, no soil/terrain limitations": "#FFD700",
    "Sub-tropics, warm; humid, with soil/terrain limitations": "#FF8C00",
    "Sub-tropics, mod. cool; semi-arid, no soil/terrain limitations": "#FFA07A",
    "Sub-tropics, mod. cool; semi-arid, with soil/terrain limitations": "#FF4500",
    "Sub-tropics, mod. cool; sub-humid, no soil/terrain limitations": "#FFA500",
    "Sub-tropics, mod. cool; sub-humid, with soil/terrain limitations": "#FFDAB9",
    "Sub-tropics, mod. cool; humid, no soil/terrain limitations": "#FFD700",
    "Sub-tropics, mod. cool; humid, with soil/terrain limitations": "#FFC0CB",
    "Sub-tropics, cool; semi-arid, no soil/terrain limitations": "#98FB98",
    "Sub-tropics, cool; semi-arid, with soil/terrain limitations": "#7CFC00",
    "Sub-tropics, cool; sub-humid, no soil/terrain limitations": "#ADFF2F",
    "Sub-tropics, cool; sub-humid, with soil/terrain limitations": "#32CD32",
    "Sub-tropics, cool; humid, no soil/terrain limitations": "#00FF00",
    "Sub-tropics, cool; humid, with soil/terrain limitations": "#008000",
    "Temperate, moderate; dry, no soil/terrain limitations": "#ADD8E6",
    "Temperate, moderate; dry, with soil/terrain limitations": "#4682B4",
    "Temperate, moderate; moist, no soil/terrain limitations": "#5F9EA0",
    "Temperate, moderate; moist, with soil/terrain limitations": "#6495ED",
    "Temperate, moderate; wet, no soil/terrain limitations": "#1E90FF",
    "Temperate, moderate; wet, with soil/terrain limitations": "#0000FF",
    "Temperate, cool; dry, no soil/terrain limitations": "#87CEEB",
    "Temperate, cool; dry, with soil/terrain limitations": "#4169E1",
    "Temperate, cool; moist, no soil/terrain limitations": "#191970",
    "Temperate, cool; moist, with soil/terrain limitations": "#00008B",
    "Temperate, cool; wet, no soil/terrain limitations": "#4B0082",
    "Temperate, cool; wet, with soil/terrain limitations": "#8A2BE2",
    "Cold, no permafrost; dry, no soil/terrain limitations": "#708090",
    "Cold, no permafrost; dry, with soil/terrain limitations": "#2F4F4F",
    "Cold, no permafrost; moist, no soil/terrain limitations": "#696969",
    "Cold, no permafrost; moist, with soil/terrain limitations": "#808080",
    "Cold, no permafrost; wet, no soil/terrain limitations": "#A9A9A9",
    "Cold, no permafrost; wet, with soil/terrain limitations": "#D3D3D3",
    "Dominantly very steep terrain": "#FFD700",
    "Land with severe soil/terrain limitations": "#A0522D",
    "Ample irrigated soils": "#CD5C5C",
    "Dominantly hydromorphic soils": "#8B0000",
    "Desert/Arid climate": "#FF4500",
    "Boreal/Cold climate": "#2E8B57",
    "Arctic/Very cold climate": "#00CED1",
    "Dominantly built-up land": "#8B4513",
    "Dominantly water": "#0000FF"
}

      
    

def add_widgets(m):
            
            
            setattr(m, "zoom_to_layer", True)
            style = {"description_width": "initial"}
            padding = "0px 0px 0px 5px"

            
            image = widgets.Dropdown(
                value=None,
                options=[('Agro-ecological Zones classification by climate/soil/terrain/LC', maps_values[0]),
                     ('Koeppen-Geiger (3-character) classification 2011-2040', maps_values[1]),
                        ('Total number of growing period days', maps_values[2]),
                        ('Number of dry days during temperature growing period LGPt=5 (days)', maps_values[3]),
                        ('Longest period of consecutive dry days in temperature growing period LGPt=5(days)', maps_values[4]),
                        ('Annual temperature amplitude (°C)', maps_values[5]),
                        ('Mean annual temperature (°C)', maps_values[6]),
                        ('Annual precipitation (mm)', maps_values[7]),
                        ('Total number of rain days (days with P > 1 mm)', maps_values[8]),
                            ],
                description="Image:",
                style=style,
                layout=widgets.Layout(width="270px", padding=padding),
            )

            ano = widgets.Dropdown(
                value=None,
                options=anos,
                description="Ano:",
                style=style,
                layout=widgets.Layout(width="270px", padding=padding),
            )

            output = widgets.Output()


           

            def change_ano(change):
                if change.new:
                    if change.new not in m.get_layer_names():
                        #mosaic = f"{url}/datasets/{dataset.value}/{image.value}.json"
                                                
                        m.add_cog_layer(image.value+ str(ano.value) + '.tif', name=str(ano.value), palette = 'inferno' )
                        
                        output.outputs = ()
                        #output.append_stdout(f"Image date: {image_date}\n")

            ano.observe(change_ano, names="value")
            

            def change_image(change):
                if change.new:
                    if change.new not in m.get_layer_names():
                        #mosaic = f"{url}/datasets/{dataset.value}/{image.value}.json"
                        layer_list = m.get_layer_names()
                        
                        for layer in layer_list:
                            m.remove_layer(m.find_layer(layer))
                        

                        m.add_basemap("HYBRID")
                        #m.remove_legend()

                        if image.value == maps_values[0]:
                            m.add_cog_layer(maps_values[0], name=maps_list[0],colormap=aez_colors)
                            m.add_legend(legend_title="Legenda", legend_dict=aez_dict, layer_name=maps_list[0], position="bottomleft")

                        elif image.value == maps_values[1]:
                            
                            
                            #m.remove_colorbar()
                            #raster = 'pages/aez.tif'
                            legend_dict = {
                                    "A4 Equatorial rainforest": "#00FF00",  # Verde
                                    "Am Equatorial monsoon": "#32CD32",     # Verde Lima
                                    "As Equatorial savannah, dry summer": "#ADFF2F",  # Verde Amarelo
                                    "Aw Equatorial savannah, dry winter": "#9ACD32",  # Verde Amarelo Escuro
                                    "BWh Desert climate, hot": "#FF4500",   # Laranja Vermelho
                                    "BWk Desert climate, cold": "#FF8C00",  # Laranja Escuro
                                    "BSh Steppe climate, hot": "#FFD700",   # Ouro
                                    "BSk Steppe climate, cold": "#DAA520",  # Ouro Escuro
                                    "Cfa Temperate/mesothermal, fully humid, hot": "#87CEEB",  # Céu Azul
                                    "Cfb Temperate/mesothermal, fully humid, warm": "#ADD8E6",  # Azul Claro
                                    "Cfc Temperate/mesothermal, fully humid, cold": "#4682B4",  # Azul Aço
                                    "Csa Temperate/mesothermal, dry summer, hot": "#FFA07A",  # Salmão Claro
                                    "Csb Temperate/mesothermal, dry summer, warm": "#FA8072",  # Salmão
                                    "Csc Temperate/mesothermal, dry summer, cold": "#E9967A",  # Salmão Escuro
                                    "Cwa Temperate/mesothermal, dry winter, hot": "#FFDAB9",  # Pêssego
                                    "Cwb Temperate/mesothermal, dry winter, warm": "#FFE4B5",  # Moccasin
                                    "Cwc Temperate/mesothermal, dry winter, cold": "#FFDEAD",  # Navajo Branco
                                    "Dfa Continental/microthermal, fully humid, hot": "#8B0000",  # Vermelho Escuro
                                    "Dfb Continental/microthermal, fully humid, warm": "#B22222",  # Tijolo Fogo
                                    "Dfc Continental/microthermal, fully humid, cold": "#DC143C",  # Carmesim
                                    "Dfd Continental/microthermal, fully humid, very cold": "#FF0000",  # Vermelho
                                    "Dsa Continental/microthermal, dry summer, hot": "#800080",  # Roxo
                                    "Dsb Continental/microthermal, dry summer, warm": "#9370DB",  # Roxo Médio
                                    "Dsc Continental/microthermal, dry summer, cold": "#8A2BE2",  # Azul Violeta
                                    "Dsd Continental/microthermal, dry summer, very cold": "#4B0082",  # Índigo
                                    "Dwa Continental/microthermal, dry winter, hot": "#000080",  # Azul Marinho
                                    "Dwb Continental/microthermal, dry winter, warm": "#0000CD",  # Azul Médio
                                    "Dwc Continental/microthermal, dry winter, cold": "#1E90FF",  # Azul Dodger
                                    "Dwd Continental/microthermal, dry winter, very cold": "#00BFFF",  # Azul Céu Profundo
                                    "ET Tundra climate": "#F0E68C",  # Caqui
                                    "EF Eternal Frost climate": "#FFFFFF"   # Branco
                                }
                            
                            custom_cmap = {
                                    0: "#00FF00",  # A4 Equatorial rainforest
                            1: "#32CD32",  # Am Equatorial monsoon
                            2: "#ADFF2F",  # As Equatorial savannah, dry summer
                            3: "#9ACD32",  # Aw Equatorial savannah, dry winter
                            4: "#FF4500",  # BWh Desert climate, hot
                            5: "#FF8C00",  # BWk Desert climate, cold
                            6: "#FFD700",  # BSh Steppe climate, hot
                            7: "#DAA520",  # BSk Steppe climate, cold
                            8: "#87CEEB",  # Cfa Temperate/mesothermal climate, fully humid, hot
                            9: "#ADD8E6",  # Cfb Temperate/mesothermal climate, fully humid, warm
                            10: "#4682B4",  # Cfc Temperate/mesothermal climate, fully humid, cold
                            11: "#FFA07A",  # Csa Temperate/mesothermal climate, dry summer, hot
                            12: "#FA8072",  # Csb Temperate/mesothermal climate, dry summer, warm
                            13: "#E9967A",  # Csc Temperate/mesothermal climate, dry summer, cold
                            14: "#FFDAB9",  # Cwa Temperate/mesothermal climate, dry winter, hot
                            15: "#FFE4B5",  # Cwb Temperate/mesothermal climate, dry winter, warm
                            16: "#FFDEAD",  # Cwc Temperate/mesothermal climate, dry winter, cold
                            17: "#8B0000",  # Dfa Continental/microthermal climate, fully humid, hot
                            18: "#B22222",  # Dfb Continental/microthermal climate, fully humid, warm
                            19: "#DC143C",  # Dfc Continental/microthermal climate, fully humid, cold
                            20: "#FF0000",  # Dfd Continental/microthermal climate, fully humid, very cold
                            21: "#800080",  # Dsa Continental/microthermal climate, dry summer, hot
                            22: "#9370DB",  # Dsb Continental/microthermal climate, dry summer, warm
                            23: "#8A2BE2",  # Dsc Continental/microthermal climate, dry summer, cold
                            24: "#4B0082",  # Dsd Continental/microthermal climate, dry summer, very cold
                            25: "#000080",  # Dwa Continental/microthermal climate, dry winter, hot
                            26: "#0000CD",  # Dwb Continental/microthermal climate, dry winter, warm
                            27: "#1E90FF",  # Dwc Continental/microthermal climate, dry winter, cold
                            28: "#00BFFF",  # Dwd Continental/microthermal climate, dry winter, very cold
                            29: "#F0E68C",  # ET Tundra climate
                            30: "#FFFFFF"   # EF Eternal Frost climate
                                }

                            
                            
                            m.add_cog_layer(image.value, colormap=custom_cmap, name=maps_list[1])
                            m.add_legend(legend_title="Legenda", legend_dict=legend_dict, layer_name=maps_list[1], position="bottomleft")

                        
                        elif image.value == maps_values[5] or image.value == maps_values[6]:
                            

                            

                            colors = cm.get_palette(cmap_name='inferno', hashtag=True)
                            m.add_cog_layer(image.value+ str(ano.value) + '.tif', name=str(ano.value), palette = 'inferno' )
                            m.add_colorbar(colors= colors, vmin=0, vmax=40, position='bottomright', orientation='horizontal', label='°C', caption='Graus Celsius')
                        elif image.value == maps_values[7]:
                            
                        

                            colors = cm.get_palette(cmap_name='inferno', hashtag=True)
                            m.add_cog_layer(image.value+ str(ano.value) + '.tif', name=str(ano.value), palette = 'inferno' )
                            m.add_colorbar(colors= colors, vmin=0, vmax=3000, position='bottomright', orientation='horizontal', label='mm', caption='Precipitação Anual')
                        
                            

                        else:
                                
                            
                                m.add_cog_layer(image.value+ str(ano.value) + '.tif', name=str(ano.value), palette = 'inferno' )
                                
                                colors = cm.get_palette(cmap_name='inferno', hashtag=True)
                                m.add_colorbar(colors= colors, vmin=0, vmax=365, position='bottomright', orientation='horizontal', label='Dias', caption='Dias no Ano')
                            
                                
                        
                        #image_date = get_image_date(image.value, m)
                        
                        output.outputs = ()
                        #output.append_stdout(f"Image date: {image_date}\n")

            image.observe(change_image, names="value")
                
            box = widgets.VBox(
                [ ano,image, output]
            )
            m.add_widget(box, position="topright", add_header=False)


class Map(leafmap.Map):
        def __init__(self, **kwargs):
            super().__init__(**kwargs)
            #ee.Authenticate()
            #ee.Initialize(project='ee-curso-gee-rhamon')
            #self.add_ee_data()
            

            add_widgets(self)
            self.add_layer_manager(opened= True)
            #self.add_legend(legend_title="Legend", legend_dict=legend_dict, open=False)
            #self.add_inspector()
            
            

           

        
        
        
        

@solara.component
def Page():
    with solara.Column(style={"min-width": "500px"}):
        Map.element(
            zoom=zoom.value,
            on_zoom=zoom.set,
            center=center.value,
            on_center=center.set,
            height="600px",
            toolbar_ctrl=False,
            data_ctrl=True,
            add_google_map=True,
        )