zoneamento-agroclima / pages /03_Culturas.py
rhamon-garcia's picture
Upload 14 files
cb59c78 verified
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,
)