Spaces:
Sleeping
Sleeping
Upload 2 files
Browse files- pages/00_home.py +28 -0
- pages/01_teste.py +139 -0
pages/00_home.py
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import solara
|
2 |
+
|
3 |
+
|
4 |
+
@solara.component
|
5 |
+
def Page():
|
6 |
+
with solara.Column(align="center"):
|
7 |
+
markdown = """
|
8 |
+
## Aplicativo de Avaliação de Uso de Solo em Unidades de Conservação do Estado do Rio de Janeiro
|
9 |
+
|
10 |
+
### Unidades de Conservação
|
11 |
+
|
12 |
+
O estado do Rio de Janeiro é reconhecido por sua diversidade de ecossistemas, que incluem florestas, manguezais, restingas, e áreas costeiras, abrigando uma rica biodiversidade. Para proteger esses ambientes e promover o uso sustentável dos recursos naturais, foram criadas Unidades de Conservação (UCs), áreas delimitadas e regulamentadas por instrumentos legais que visam assegurar a preservação dos ecossistemas e o desenvolvimento sustentável das comunidades locais.
|
13 |
+
|
14 |
+
Essas unidades desempenham um papel essencial na mitigação dos impactos ambientais, conservação da fauna e flora, regulação do clima e provisão de serviços ecossistêmicos, como a purificação da água e o armazenamento de carbono. No Rio de Janeiro, as UCs estão distribuídas entre diferentes categorias, definidas pelo Sistema Nacional de Unidades de Conservação da Natureza (SNUC), que se divide em dois grupos principais: Unidades de Proteção Integral e Unidades de Uso Sustentável.
|
15 |
+
|
16 |
+
Exemplos emblemáticos de UCs no estado incluem o Parque Nacional da Serra dos Órgãos, um ícone de conservação e turismo ecológico, e a Área de Proteção Ambiental (APA) de Guapimirim, essencial para a proteção dos manguezais da Baía de Guanabara. Além disso, unidades como a Reserva Extrativista (Resex) Marinha de Arraial do Cabo exemplificam a integração entre conservação ambiental e valorização das práticas sustentáveis de comunidades tradicionais.
|
17 |
+
|
18 |
+
Dessa forma, as Unidades de Conservação no estado do Rio de Janeiro representam não apenas uma estratégia ambiental, mas também uma ferramenta de inclusão social, cultural e econômica, contribuindo para a construção de um futuro mais equilibrado e resiliente.
|
19 |
+
|
20 |
+
|
21 |
+
### Uso de Solo Global - European Space Agency (ESA)
|
22 |
+
|
23 |
+
O Arquivo de Uso do Solo Global da ESA (European Space Agency) é uma base de dados abrangente que fornece informações detalhadas sobre a cobertura e o uso do solo em escala planetária. Desenvolvido como parte do programa Climate Change Initiative (CCI), este arquivo utiliza dados de satélite de alta resolução para mapear e monitorar mudanças no uso da terra ao longo do tempo. Com uma resolução espacial aprimorada e categorias de uso do solo padronizadas, ele permite a análise de padrões ambientais, mudanças climáticas, uso agrícola, urbanização e conservação de ecossistemas.
|
24 |
+
|
25 |
+
A iniciativa é especialmente valiosa para pesquisadores, formuladores de políticas e projetos de restauração ambiental, pois oferece uma base científica robusta para planejamento sustentável e tomadas de decisão. O arquivo combina dados históricos e atuais, promovendo uma melhor compreensão da interação entre as atividades humanas e os ecossistemas naturais, com o objetivo de apoiar o cumprimento de metas globais, como os Objetivos de Desenvolvimento Sustentável (ODS) e o Acordo de Paris sobre Clima.
|
26 |
+
"""
|
27 |
+
|
28 |
+
solara.Markdown(markdown)
|
pages/01_teste.py
ADDED
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import ee
|
2 |
+
import geemap
|
3 |
+
import plotly.express as px
|
4 |
+
import pandas as pd
|
5 |
+
import solara
|
6 |
+
import dataclasses
|
7 |
+
from typing import Callable, cast
|
8 |
+
|
9 |
+
df = pd.read_csv('CSVs\esa_stats_ucs_rj2.csv')
|
10 |
+
columns = list(df.columns)
|
11 |
+
#df = px.data.iris()
|
12 |
+
|
13 |
+
@dataclasses.dataclass
|
14 |
+
class ClickPoint:
|
15 |
+
row_index: int
|
16 |
+
x_column: str
|
17 |
+
y_column: str
|
18 |
+
|
19 |
+
def find_row_index(fig, click_data):
|
20 |
+
# goes from trace index and point index to row index in a dataframe
|
21 |
+
# requires passing df.index as to custom_data
|
22 |
+
trace_index = click_data["points"]["trace_indexes"][0]
|
23 |
+
point_index = click_data["points"]["point_indexes"][0]
|
24 |
+
trace = fig.data[trace_index]
|
25 |
+
return trace.customdata[point_index][0]
|
26 |
+
|
27 |
+
|
28 |
+
|
29 |
+
|
30 |
+
class Map(geemap.Map):
|
31 |
+
def __init__(self, **kwargs):
|
32 |
+
super().__init__(**kwargs)
|
33 |
+
self.add_ee_data()
|
34 |
+
self.add("layer_manager")
|
35 |
+
self.add("inspector")
|
36 |
+
|
37 |
+
def add_ee_data(self):
|
38 |
+
# Add Earth Engine dataset
|
39 |
+
|
40 |
+
esa = ee.ImageCollection('ESA/WorldCover/v200').first()
|
41 |
+
|
42 |
+
ucs = ee.FeatureCollection("projects/ee-curso-gee-rhamon/assets/ucs_estaduais_rj")
|
43 |
+
rj = ee.FeatureCollection('FAO/GAUL/2015/level1').filter(ee.Filter.eq('ADM1_NAME', 'Rio De Janeiro'))
|
44 |
+
|
45 |
+
|
46 |
+
esa = esa.clipToCollection(ucs)
|
47 |
+
|
48 |
+
|
49 |
+
|
50 |
+
# Set visualization parameters.
|
51 |
+
|
52 |
+
visualization = {
|
53 |
+
"bands": ['Map'],
|
54 |
+
}
|
55 |
+
|
56 |
+
|
57 |
+
fc_vis_params = {
|
58 |
+
"color": "000000FF",
|
59 |
+
'lineType': 'solid',
|
60 |
+
"width": 1.5,
|
61 |
+
"fillColor": "00000000",
|
62 |
+
}
|
63 |
+
|
64 |
+
# Add Earth Engine layers to Map
|
65 |
+
|
66 |
+
self.centerObject(ucs, zoom=8)
|
67 |
+
self.addLayer(ucs.style(**fc_vis_params), {}, "UCs Estaduais RJ")
|
68 |
+
self.addLayer(esa, visualization, "Uso de Solo ESA")
|
69 |
+
self.addLayer(rj.style(**fc_vis_params), {}, "Limite Estadual RJ")
|
70 |
+
self.add_legend(title="Land Cover Type", builtin_legend='ESA_WorldCover', position="bottomright")
|
71 |
+
|
72 |
+
|
73 |
+
@solara.component
|
74 |
+
def Page():
|
75 |
+
with solara.Column(style={"max-width": "100%",'margin': "10vw"}):
|
76 |
+
Map.element(
|
77 |
+
center=[40, -100],
|
78 |
+
zoom=4,
|
79 |
+
height="600px",
|
80 |
+
)
|
81 |
+
x = solara.use_state(x)
|
82 |
+
#fig = px.pie(df,values= x, names="Classes", title='Cobertura Florestal UCs Estaduais RJ')
|
83 |
+
#fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
|
84 |
+
#solara.FigurePlotly(fig)
|
85 |
+
|
86 |
+
@solara.component
|
87 |
+
def ClickScatter(df, y, click_row, on_click: Callable[[ClickPoint], None]):
|
88 |
+
|
89 |
+
y, set_y = solara.use_state(y)
|
90 |
+
|
91 |
+
#y, set_y = solara.use_state(y)
|
92 |
+
#fig = px.scatter(df, x, y, color=color, custom_data=[df.index])
|
93 |
+
fig = px.pie(df,values= y , names='Classes', title='Uso de Solo UCs Estaduais RJ')
|
94 |
+
|
95 |
+
def on_click_trace(click_data):
|
96 |
+
# sanity checks
|
97 |
+
assert click_data["event_type"] == "plotly_click"
|
98 |
+
row_index = find_row_index(fig, click_data)
|
99 |
+
on_click(ClickPoint(row_index, y))
|
100 |
+
|
101 |
+
if click_row:
|
102 |
+
click_y = df[y].values[click_row]
|
103 |
+
#fig.add_trace(px.scatter(x=, y=[click_y], text=["⭐️"]).data[0])
|
104 |
+
fig.add_trace(px.pie(values= [click_y], names='Classes', title='Uso de Solo UCs Estaduais RJ').data[0])
|
105 |
+
# make the figure a bit smaller
|
106 |
+
fig.update_layout(width=1500,height=800)
|
107 |
+
with solara.Column(style={"width": "100%",'margin': "10vw"}) as main:
|
108 |
+
solara.FigurePlotly(fig, on_click=on_click_trace)
|
109 |
+
solara.Select(label="Escolha aqui a Unidade de Conservação a ter o Uso de solo avaliado", value=y, values=columns, on_value=set_y)
|
110 |
+
return main
|
111 |
+
|
112 |
+
@solara.component
|
113 |
+
def Page():
|
114 |
+
with solara.Column(style={"min-width": "500px", "max-width": "100%",'margin': "10vw"}):
|
115 |
+
Map.element(
|
116 |
+
center=[-22, -43],
|
117 |
+
zoom=8,
|
118 |
+
height="600px",
|
119 |
+
)
|
120 |
+
|
121 |
+
|
122 |
+
click_point, set_click_point = solara.use_state(cast(ClickPoint, None))
|
123 |
+
if click_point:
|
124 |
+
clicked_row = click_point.row_index
|
125 |
+
else:
|
126 |
+
clicked_row = None
|
127 |
+
|
128 |
+
with solara.Row(justify="center", style={"flex-wrap": "wrap"}):
|
129 |
+
ClickScatter(df, 'nome', clicked_row, on_click=set_click_point)
|
130 |
+
if click_point is not None:
|
131 |
+
clicked_row = click_point.row_index
|
132 |
+
solara.Success(f"Clicked on row {clicked_row}. Which is highlighted in the both plots.")
|
133 |
+
solara.Markdown(
|
134 |
+
f"""
|
135 |
+
```python
|
136 |
+
row_data = {df.iloc[clicked_row].to_dict()}
|
137 |
+
```"""
|
138 |
+
)
|
139 |
+
|