Académique Documents
Professionnel Documents
Culture Documents
2
Après avoir généré les données de manière arbitraire en incluant les coordonnées de longitude
et latitude, nous les avons enregistrées au format Geoparquet
Le format Geoparquet semble bien adapté pour ce cas, en particulier si vous travaillez avec
des ensembles de données géospatiales de taille importante. Ses avantages en termes de
stockage efficace, performances élevées et support spécifique aux données géographiques en
font un choix judicieux pour les applications impliquant une manipulation fréquente de
données géospatiales.
2/-Utiliser streamlit geospatial (ou autre) pour afficher ces données (depuis le format
geoparquet) ?
a) Volet Cartographie du jour J :
Pour représenter graphiquement mes données discrètes, réparties sous forme de points
à travers tout le Maroc, nous avons choisi deux approches. La première utilise le
heatmap, permettant d'interpoler ces points et de générer une première carte en
extrapolant les valeurs de chaque colonne de nos données. La seconde approche
repose sur l'utilisation de symboles proportionnels, ajustant la taille du symbole pour
refléter l'importance de la variable cartographiée
3
cette application permet à l'utilisateur de sélectionner une colonne à cartographier, puis
affiche une carte thématique interactive du Maroc avec une couche de heatmap et une
couche de symboles proportionnels. La visualisation est réalisée grâce aux bibliothèques
Leafmap et Folium.
b) A l’aide d’un Slider, possibilité de naviguer entre les cartes (obligatoirement en
format raster) du jour 0, Jour -1, …Jour –5 ?
Afin de pouvoir utiliser un curseur permettant de naviguer entre différentes cartes au format
raster, il est impératif d'effectuer une interpolation sur les données aléatoires que nous avons
générées au début. Pour ce faire, nous avons utilisé le logiciel QGIS pour exécuter une
interpolation IDW sur l'ensemble des attributs.
Et nous avons utilisé ce script pour visualiser le résultat et naviguer entre différentes cartes.
import streamlit as st
import leafmap.foliumap as leafmap
import os
st.set_page_config(layout="wide")
st.title("Création d'un slider pour naviguer entre les cartes")
# Sélection du jour
selected_day = st.slider("Sélectionnez le jour", -6, 0, -1)
# Sélection de l'attribut
selected_attribute = st.selectbox("Choisissez l'attribut", ["Attibut1", "Attibut2",
"Attibut3"])
4
# Création de la carte Leaflet
legend_dict = {
"Faible": "#f1eef6",
"Moyen": "#bdc9e1",
"Fort": "#74a9cf",
"Tres fort": "#0570b0",
}
m = leafmap.Map()
style = {
'position': 'fixed',
'z-index': '9999',
'border': '2px solid grey',
'background-color': 'rgba(255, 255, 255, 0.8)',
'border-radius': '10px',
'padding': '5px',
'font-size': '14px',
'bottom': '20px',
'right': '5px',
}
m.add_legend(
title='Legende', legend_dict=legend_dict, draggable=False, style=style
)
cette application Streamlit offre une interface utilisateur interactive pour explorer des cartes
raster générées à partir de fichiers image spécifiques, en fonction des choix de jour et
d'attribut de l'utilisateur. La visualisation est réalisée grâce à la bibliothèque Leafmap, qui
simplifie l'intégration de cartes Leaflet dans l'environnement Streamlit.
Voici l’interface de l’application affichée exécutant ce code :
5
c)-Utiliser des Timelapses pour naviguer entre les différents jours ?
Dans cette partie nous avons utiliser la bibliothèque LeafMap pour prendre une série d'images
de cartes raster stockées dans le dossier spécifié, puis nous avons génèrer un time-lapse animé
qui montre comment ces cartes raster évoluent au fil du temps. Le résultat est une animation
(GIF dans ce cas, nommé 'carte.gif') montrant les changements ou les variations des données
géospatiales au cours de la période couverte par la série d'images.
import streamlit as st
import leafmap
st.set_page_config(layout="centered")
markdown = """
Web App URL: <https://geotemplate.streamlit.app>
GitHub Repository: <https://github.com/giswqs/streamlit-multipage-template>
"""
st.sidebar.title("About")
st.sidebar.info(markdown)
logo = "https://i.imgur.com/UbOXYAU.png"
st.sidebar.image(logo)
url = 'interpolation'
images = 'interpolation/*.tif'
leafmap.create_timelapse(
6
images,
out_gif='carte.gif',
bands=[0, 1, 2],
fps=7,
progress_bar_color='blue',
add_text=True,
text_xy=('3%', '3%'),
text_sequence =1,
font_size=20,
font_color='white',
mp4=False,
reduce_size=False,
)
leafmap.show_image('carte.gif')
st.image('carte.gif', width=600)
7
st.title("Split Map des cartes Raster")
# Dossier contenant les fichiers
interpolation_folder = 'interpolation'
e) - Créer une Pop-up en cliquant sur les points affichant la série temporelle
AttributiJourj (j allant de jour 0 à jour -6) ?
8
Dans cette partie nous avons crée une application web interactive utilisant Streamlit pour
afficher une carte interactive avec des marqueurs pour chaque point d'un GeoDataFrame.
Chaque marqueur est associé à un pop-up contenant un graphique linéaire combiné
représentant l'évolution des attributs spécifiques du point sélectionné. Cette application est
particulièrement utile pour explorer et visualiser des données géospatiales de manière
dynamique.
import streamlit as st
import geopandas as gpd
import folium
from streamlit_folium import folium_static
from io import BytesIO
import base64
import matplotlib.pyplot as plt
st.set_page_config(layout="wide")
# Titre de l'application
st.title("Cartographie Thématique par Coordonnées")
plt.title('Graphe linéaire')
plt.xlabel('Jours')
plt.ylabel('Valeurs')
plt.legend()
buffer = BytesIO()
plt.savefig(buffer, format='png')
plt.close()
return base64.b64encode(buffer.getvalue()).decode()
# Créer une carte Folium avec le fond de carte ESRI World Street Map
9
m = folium.Map(location=[gdf['Latitude'].mean(), gdf['Longitude'].mean()], zoom_start=6,
tiles="https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile
/{z}/{y}/{x}", attr="ESRI World Street Map")
# Afficher la carte
folium_static(m, width=1200, height=700)
Nous avons aussi penser à l’utilisation du graphiques intéractives dans le pop up mais ceci ne
marche pas vue que le pop up n’acceptent pas Javascript dédié à l’intéractivité . Cependant
nous avons pensé à les générer indépendamment à partir d’un selectbox
10
f) -Possibilité de chercher un point par ses coordonnées dans une textbox ?
Dans cette partie nous avons essayer de chercher un point à partir de ces
coordonnées et pour se faire nous avons afficher en premier lieu un tabeau
indiquant la longitude et la latitude de notre point
Puis nous allons essayer de copier les coordonnées d’un point sur une zone de texte et une fois
qu’on tape sur entrer on est dirigé vers notre point specifié :
11
g) -Possibilité de filtrer les données affichées sur la carte en utilisant des requêtes
attributaires ou spatiales (la requête doit être construite à la volée et non stockée) ?
A ce niveau nous avons essayer de créer des requêtes attributaires pour essayer de filtrer les
données affichées sur la carte
On pourra choisir autant d’options qu’on veut et on indique nos conditons dans la zone du
texte .une fois qu’on clique sur Ok , les points qui satisfaisent les conditions s’affichent sur la
carte
Une fois qu’on clique sur Ok , les points qui satisfaisent les conditions s’affichent sur la carte
12
h) -Explorer l’utilisation du format COG au lieu de geotiff pour les cartes Raster ?
Les Formats Géospatiaux Optimisés pour le Cloud (COGs) représentent une avancée cruciale
dans la gestion des données géospatiales. Leur efficacité de stockage, leur récupération rapide
et leur adaptabilité les rendent indispensables pour diverses applications.
COG nous a permis de réduire la taille de l’image et de gagner en temps pendant l’exécution
dans l’application.
Tout d’abord nous avons essayer de convertir nos données ‘Tif’ vers le format COG en
utilisant le script suivant :
import os
import leafmap
print("Conversion terminée.")
Puis nous avons évaluer que la taille des images tif s’est réduit lors de la conversion vers le
format cog
13
Lors du chargement de l’image COG on remarque que celle-ci est découpé en en petites
images rectangulaires (tuiles) pour permettre une visualisation rapide et interactive.
14
Conclusion :
En guise de conclusion, ce projet a réussi à créer une application interactive et complète pour
explorer, analyser et visualiser des données géospatiales fictives. Les fonctionnalités mises en
œuvre offrent une expérience utilisateur riche et flexible, répondant aux besoins d'exploration
temporelle, de comparaison, de filtrage et d'exportation de résultats. La combinaison de
Streamlit Geospatial et des formats de données efficaces a permis de créer un outil puissant
pour l'analyse géospatiale.
15