import os import leafmap import solara import ipywidgets as widgets from leafmap import leafmap import leafmap.colormaps as cm zoom = solara.reactive(2) center = solara.reactive((20, 0)) maps = { 'Milho - Potencial Produtivo Agro-Climático com somente chuva (2011-2040)': 'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/res02/HadGEM2-ES/rcp4p5/2020sH/maiz200b_yld.tif', "Café Arabica - Potencial Produtivo Agro-Climático com somente chuva (2011-2040)": 'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/res02/MIROC-ESM-CHEM/rcp8p5/2020sH/cofa200b_yld.tif', "Citrus - Potencial Produtivo Agro-Climático com somente chuva (2011-2040)" : 'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/res02/HadGEM2-ES/rcp2p6/2020sH/citr200b_yld.tif', 'Cana de Açúcar - Potencial Produtivo Agro-Climático com somente chuva (2011-2040)': 'https://s3.eu-west-1.amazonaws.com/data.gaezdev.aws.fao.org/res02/NorESM1-M/rcp2p6/2020sH/sugc200b_yld.tif' } maps_list= list(maps) maps_values= list(maps.values()) 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=[('Milho - Potencial Produtivo Agro-Climático com somente chuva (2011-2040)', maps_values[0]), ('Café Arabica - Potencial Produtivo Agro-Climático com somente chuva (2011-2040)', maps_values[1]), ('Citrus - Potencial Produtivo Agro-Climático com somente chuva (2011-2040)', maps_values[2]), ('Cana de Açúcar - Potencial Produtivo Agro-Climático com somente chuva (2011-2040)', maps_values[3]), ], description="Image:", style=style, layout=widgets.Layout(width="270px", padding=padding), ) output = widgets.Output() 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)) #municipiosBR= 'https://geoftp.ibge.gov.br/organizacao_do_territorio/malhas_territoriais/malhas_municipais/municipio_2023/Brasil/BR_Municipios_2023.zip' #estadosBR = 'https://geoftp.ibge.gov.br/organizacao_do_territorio/malhas_territoriais/malhas_municipais/municipio_2023/Brasil/BR_UF_2023.zip' m.add_basemap("HYBRID") #m.add_shp(estadosBR, layer_name='EstadosBR') #m.add_shp(municipiosBR, layer_name='MunicipiosBR') #m.remove_legend() if image.value == maps_values[0]: m.add_cog_layer(image.value, name= maps_list[0], palette = 'RdYlGn') elif image.value == maps_values[1]: m.add_cog_layer(image.value, name= maps_list[1], palette = 'RdYlGn') elif image.value == maps_values[2]: m.add_cog_layer(image.value, name= maps_list[2], palette = 'RdYlGn') elif image.value == maps_values[3]: m.add_cog_layer(image.value, name= maps_list[3], palette = 'RdYlGn') output.outputs = () #output.append_stdout(f"Image date: {image_date}\n") image.observe(change_image, names="value") box = widgets.VBox( [ image, output] ) m.add_widget(box, position="topright", add_header=False) class Map(leafmap.Map): def __init__(self, **kwargs): super().__init__(**kwargs) add_widgets(self) self.add_layer_manager(opened= True) self.add_colorbar(colors=cm.get_palette(cmap_name='RdYlGn', n_class=10) , vmin=0, vmax=10000.0, caption= 'Potencial Produtivo Agro-Climático (kg Massa Seca/ha)') @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, )