Py.Cafe

Lordblackwood201113/

lagune-ébrié

Lagoon Ebrie Surface Change Analysis

DocsPricing
  • Logo.jpg
  • Remblais.cpg
  • Remblais.dbf
  • Remblais.prj
  • Remblais.qix
  • Remblais.shp
  • Remblais.shx
  • app.py
  • ee-learn2014-4a0935ef7b24.json
  • requirements.txt
app.py
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
import streamlit as st
import geemap.foliumap as geemap
import datetime


service_account = "test-789@ee-learn2014.iam.gserviceaccount.com"
credentials = geemap.ee.ServiceAccountCredentials(service_account, 'ee-learn2014-4a0935ef7b24.json')
geemap.ee.Initialize(credentials)

st.set_page_config(layout="wide", page_title = "Water Observation", page_icon= "🌍")

st.sidebar.image("Logo.jpg")

st.sidebar.title("Contact")

st.sidebar.info(
    """
    [LinkedIn] https://www.linkedin.com/in/yao-franck-daniel-yao/ |
     
    [Email] gle.yao@inphb.ci |
     
    [GitHub] https://github.com/Lordblackwood201113 |
     
    | [Téléphone](+33 0744943191) | 
    """
)

#st.logo("Logo.jpg", size = "medium")


#------- HEADER -------------
with st.container() :
    st.subheader("OBSERVATION DE LA LAGUNE EBRIE 2015 - 2024")
    
# Affichage de quelques métriques (valeurs statiques ici)
total1, total2, total3 = st.columns(3, gap='small')
with total1:
    st.info('Surface lagune 2015')
    st.metric(label="Surface lagune (ha)", value=868.9111)

with total2:
    st.info('Surface lagune 2024')
    st.metric(label="Surface lagune (ha)", value=596.3545)

with total3:
    st.info('Surface Remblai')
    st.metric(label="Surfacer Remblais (ha)", value=270.7267)


#center=[5.27719337, -3.98766093], zoom=14
m = geemap.Map(center=[5.27719337, -3.98766093], zoom=14)
m.add_basemap("HYBRID")

def maskL8sr(image):
    """
    Applique un masque pour éliminer les nuages et les ombres de nuages
    en utilisant la bande QA_PIXEL.
    Les bits 3 (ombre de nuage) et 5 (nuage) doivent être à 0.
    """
    qa = image.select('QA_PIXEL')
    cloudShadowBitMask = 1 << 3  # Bit 3 : ombre de nuage
    cloudsBitMask = 1 << 5       # Bit 5 : nuage
    mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0).And(qa.bitwiseAnd(cloudsBitMask).eq(0))
    return image.updateMask(mask)

annees_left = list(range(2015, 2023))   # 2015 à 2022
annees_right = list(range(2016, 2025))  # 2016 à 2024

c1, c2 = st.columns(2, gap='small')

with c1 :
    
# Création des selectbox avec des options filtrées
    left_year = st.selectbox(
        "Sélectionnez l'année de gauche",
        options=annees_left,
        index=0
    )

with c2 :
    st.write("")
    


# Charger la collection Landsat 9 Collection 2 Tier 1 Level 2
collection_2015 = (geemap.ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
              .filterDate(f"{left_year}-01-01", f"{left_year}-12-31")
              .map(maskL8sr))

# Créer une image composite (médiane) sur l'ensemble de la collection
composite_image_2015 = collection_2015.median()

# Afficher les informations de l'image composite dans la console
#print(composite_image.getInfo())

# Paramètres de visualisation
visParams = {
    'min': 7000,
    'max': 15000,
    'bands': ['SR_B4', 'SR_B3', 'SR_B2']
}

collection_2024 = (geemap.ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
              .filterDate("2024-01-01", "2024-12-31")
              .map(maskL8sr))

# Créer une image composite (médiane) sur l'ensemble de la collection
composite_image_2024 = collection_2024.median()

image_2015 = geemap.ee_tile_layer(composite_image_2015, visParams, "Image 2015")

image_2024 = geemap.ee_tile_layer(composite_image_2024, visParams, "Image 2024")




# Centrer la carte sur l'image composite (le centre est défini automatiquement)
#m.addLayer(composite_image, visParams, 'Composite Image 2024')

m.split_map(left_layer=image_2015, right_layer="HYBRID")

#remblais = "Remblais.shp"
#remblais = geemap.shp_to_ee(remblais)
#m.addLayer(remblais, {}, "remblais", shown=False)

m.add_text(text = f"{left_year}", fontsize= 30, fontcolor="red", bold=True, position = "bottomleft")

m.add_text(text = 2024, fontsize= 30, fontcolor="red", bold=True, position = "bottomright")

m.to_streamlit(height=500)