Chargement et manipulation de données géographiques
-
gpd.read_file()
La fonction gpd.read_file() permet de lire un fichier géospatial (par exemple, un Shapefile, GeoJSON, etc.) et de le charger sous forme de GeoDataFrame. Elle est utilisée pour importer des données géographiques à partir de fichiers externes dans un format compatible avec GeoPandas.
Importation :
import geopandas as gpd
Attributs :
Paramètre Type Description Valeur par défaut filename
str Le chemin du fichier à lire (ex : « data.shp », « data.geojson »). None
crs
str Le système de référence de coordonnées (CRS) souhaité. Si non précisé, GeoPandas essaie de détecter le CRS du fichier. None
bbox
tuple Une boîte délimitée (bbox) pour restreindre la lecture aux géométries à l’intérieur de cette boîte (optionnel). None
Exemple de code :
import geopandas as gpd # Chargement d'un fichier Shapefile dans un GeoDataFrame gdf = gpd.read_file("data.shp") # Affichage des 5 premières lignes du GeoDataFrame print(gdf.head())
Explication du code :
-
La fonction
gpd.read_file()
est utilisée pour charger un fichier Shapefile (data.shp
) dans unGeoDataFrame
. -
Une fois le fichier chargé, la méthode
head()
est appelée pour afficher les 5 premières lignes duGeoDataFrame
. -
Le fichier peut être d’un autre format pris en charge, comme GeoJSON, KML, etc. GeoPandas gère automatiquement les différents types de fichiers géospatiaux.
Remarque importante :
-
gpd.read_file()
est une méthode très pratique pour charger des données géospatiales en provenance de fichiers. Elle gère la conversion automatique du système de coordonnées (CRS) si le fichier en contient un. -
Si le fichier a un CRS différent de celui attendu ou si vous souhaitez spécifier un CRS différent lors du chargement, vous pouvez utiliser le paramètre
crs
. -
Vous pouvez également utiliser le paramètre
bbox
pour ne charger qu’une partie des données géographiques à l’intérieur d’une zone géographique spécifique.
-
-
GeoDataFrame.to_file()
La méthode GeoDataFrame.to_file() permet de sauvegarder un GeoDataFrame dans un fichier au format spécifié (par exemple, shapefile, GeoJSON, etc.). Elle prend en charge divers formats géospatiaux populaires pour l’exportation des données géométriques.
Importation :
import geopandas as gpd
Attributs :
Paramètre Type Description Valeur par défaut filename
str Le chemin du fichier de sortie (ex: « output.shp », « output.geojson »). None
driver
str Le format du fichier de sortie (par exemple, « ESRI Shapefile », « GeoJSON »). None
schema
dict Schéma pour le fichier de sortie (optionnel, dépend du format). None
Exemple de code :
import geopandas as gpd from shapely.geometry import Point # Création d’un GeoDataFrame avec quelques données gdf = gpd.GeoDataFrame({ 'id': [1, 2, 3], 'geometry': [Point(0, 0), Point(1, 1), Point(2, 2)], 'name': ['A', 'B', 'C'] }, crs="EPSG:4326") # WGS84 (Latitude/Longitude) # Sauvegarde du GeoDataFrame en format Shapefile gdf.to_file("output.shp")
Explication du code :
-
Un
GeoDataFrame
est créé avec des géométries simples (des points) et quelques autres colonnes. -
La méthode
to_file()
est utilisée pour exporter leGeoDataFrame
au format Shapefile (ici « output.shp »). -
Le fichier de sortie sera créé dans le même répertoire que celui où le script est exécuté, à moins qu’un chemin complet ne soit fourni.
Remarque importante :
-
Vous pouvez spécifier le format du fichier de sortie avec le paramètre
driver
si nécessaire. Par exemple, pour un fichier GeoJSON, vous pourriez utiliserdriver="GeoJSON"
. -
La méthode
to_file()
est flexible et prend en charge plusieurs formats, dont Shapefile, GeoJSON, et d’autres formats pris en charge par la bibliothèquefiona
utilisée parGeoPandas
. -
Le paramètre
schema
peut être utilisé pour définir explicitement la structure des données à sauvegarder, notamment les types des colonnes, mais il est optionnel dans de nombreux cas.
-
-
GeoDataFrame.head()
La méthode GeoDataFrame.head() permet de visualiser les premières lignes d’un GeoDataFrame. Par défaut, elle retourne les 5 premières lignes, ce qui est utile pour examiner rapidement un échantillon de données et vérifier leur structure.
Importation :
import geopandas as gpd
Attributs :
Paramètre Type Description Valeur par défaut n
int Le nombre de lignes à afficher (par défaut 5). 5
Exemple de code :
import geopandas as gpd from shapely.geometry import Point # Création d’un GeoDataFrame avec quelques données gdf = gpd.GeoDataFrame({ 'id': [1, 2, 3], 'geometry': [Point(0, 0), Point(1, 1), Point(2, 2)], 'name': ['A', 'B', 'C'] }, crs="EPSG:4326") # WGS84 (Latitude/Longitude) # Affichage des premières lignes du GeoDataFrame print(gdf.head())
Explication du code :
-
Un
GeoDataFrame
est créé avec des données simples contenant des identifiants, des géométries (points) et des noms. -
La méthode
head()
est utilisée pour afficher les 5 premières lignes de ceGeoDataFrame
. -
Le résultat est un aperçu rapide du contenu du
GeoDataFrame
, incluant les colonnesid
,geometry
etname
pour les premières lignes.
Remarque importante :
-
La méthode
head()
est particulièrement utile pour explorer unGeoDataFrame
avant de l’analyser ou de le manipuler davantage. Vous pouvez aussi spécifier un autre nombre de lignes à afficher en passant un argumentn
(par exemple,gdf.head(10)
pour afficher les 10 premières lignes). -
Cette méthode est identique à celle de
pandas.DataFrame.head()
, mais elle affiche les géométries dans le format approprié pour unGeoDataFrame
.
-
-
GeoDataFrame.to_crs()
La méthode GeoDataFrame.to_crs() permet de transformer les coordonnées géographiques d’un GeoDataFrame dans un autre système de référence de coordonnées (CRS - Coordinate Reference System). Cela est utile pour effectuer des calculs géospatiaux ou pour standardiser les données selon un CRS spécifique.
Importation :
import geopandas as gpd
Attributs :
Paramètre Type Description Valeur par défaut crs
str, dict ou pyproj.CRS Système de référence de coordonnées (CRS) cible dans lequel les géométries doivent être transformées. None
epsg
int Code EPSG du CRS cible. Utilisé si crs
est défini commeNone
.None
always_xy
bool Si True
, force l’utilisation des coordonnées cartésiennes (X, Y), même pour les systèmes géographiques.False
Exemple de code :
import geopandas as gpd from shapely.geometry import Point # Création d’un GeoDataFrame avec un système de coordonnées géographiques (WGS84) gdf = gpd.GeoDataFrame({ 'id': [1, 2, 3], 'geometry': [Point(0, 0), Point(1, 1), Point(2, 2)], 'name': ['A', 'B', 'C'] }, crs="EPSG:4326") # WGS84 (Latitude/Longitude) # Transformation des coordonnées en un CRS projeté (par exemple, UTM) gdf_transformed = gdf.to_crs(epsg=32633) # UTM zone 33N # Affichage du GeoDataFrame après transformation du CRS print(gdf_transformed)
Explication du code :
-
Un
GeoDataFrame
est créé avec un système de référence de coordonnées (CRS) basé sur le système WGS84 (EPSG:4326
), qui est un système de coordonnées géographiques couramment utilisé pour la latitude et la longitude. -
La méthode
to_crs(epsg=32633)
est utilisée pour transformer les coordonnées duGeoDataFrame
en un autre CRS, ici le système de projection UTM zone 33N (EPSG:32633
), qui est un système de coordonnées projetées utilisé pour des calculs plus précis sur de petites zones géographiques. -
Le
GeoDataFrame
résultant possède des coordonnées projetées selon le CRS spécifié, et il peut être utilisé pour des calculs géospatiaux précis ou pour l’affichage sur des cartes dans ce CRS.
Remarque importante :
-
Avant de transformer les coordonnées d’un
GeoDataFrame
, il est essentiel que celui-ci ait déjà un CRS défini. Si vous avez unGeoDataFrame
sans CRS ou dans un CRS inconnu, vous devrez d’abord lui attribuer un CRS avecset_crs()
. -
L’utilisation de codes EPSG est courante pour spécifier des CRS, mais vous pouvez aussi utiliser une chaîne de caractères ou un dictionnaire décrivant le CRS cible.
-
-
GeoDataFrame.set_index()
La méthode GeoDataFrame.set_index() permet de définir une ou plusieurs colonnes comme index d'un GeoDataFrame. Cela permet de réorganiser les données et de faciliter les opérations de recherche et d'indexation.
Importation :
import geopandas as gpd
Attributs :
Paramètre Type Description Valeur par défaut keys
str ou list Nom(s) de la ou des colonnes à utiliser comme index. None
drop
bool Si True
, supprime la colonne utilisée comme index du DataFrame.True
inplace
bool Si True
, modifie le GeoDataFrame en place, sinon retourne un nouveau GeoDataFrame.False
verify_integrity
bool Vérifie l’intégrité des index, s’assurant qu’ils sont uniques. False
Exemple de code :
import geopandas as gpd from shapely.geometry import Point # Création d’un GeoDataFrame avec des géométries gdf = gpd.GeoDataFrame({ 'id': [1, 2, 3], 'geometry': [Point(0, 0), Point(1, 1), Point(2, 2)], 'name': ['A', 'B', 'C'] }) # Définir 'id' comme index gdf_set_index = gdf.set_index('id') # Affichage du GeoDataFrame après modification de l'index print(gdf_set_index)
Explication du code :
-
Un
GeoDataFrame
est créé avec trois colonnes :id
,geometry
etname
. -
Nous utilisons
set_index('id')
pour définir la colonneid
comme index duGeoDataFrame
. -
Après l’exécution de cette ligne, le
GeoDataFrame
est réorganisé, et la colonneid
devient l’index. Ce qui signifie que la colonneid
ne fera plus partie des données du DataFrame, sauf sidrop=False
est spécifié. -
Le
GeoDataFrame
modifié est ensuite affiché, et on remarque que la colonneid
a été déplacée en tant qu’index, ce qui facilite les recherches et les manipulations basées sur cet index.
Remarque importante :
-
Si vous ne souhaitez pas supprimer la colonne utilisée comme index, vous pouvez définir
drop=False
. Cela conservera la colonne dans leGeoDataFrame
, tout en la rendant l’index. -
Le paramètre
verify_integrity
permet de vérifier si les valeurs de l’index sont uniques. Si vous souhaitez garantir qu’il n’y a pas de doublons dans l’index, il peut être utile de définir ce paramètre surTrue
.
-
-
GeoDataFrame.drop()
La méthode GeoDataFrame.drop() permet de supprimer des colonnes ou des lignes d’un GeoDataFrame. Cette fonction est identique à celle de pandas.DataFrame.drop(), mais elle conserve la géométrie du GeoDataFrame et peut supprimer des colonnes de données géospatiales.
Importation :
import geopandas as gpd
Attributs :
Paramètre Type Description Valeur par défaut labels
str ou list Nom(s) de la ou des colonnes ou index à supprimer. None
axis
int, str Si 0
, supprime les lignes ; si1
, supprime les colonnes.0
inplace
bool Si True
, modifie le GeoDataFrame en place, sinon retourne un nouveau GeoDataFrame.False
errors
str Si 'raise'
, lève une erreur si la colonne ou ligne n’existe pas. Si'ignore'
, ne fait rien si la colonne ou ligne n’existe pas.'raise'
Exemple de code :
import geopandas as gpd from shapely.geometry import Point # Création d’un GeoDataFrame avec des géométries gdf = gpd.GeoDataFrame({ 'id': [1, 2, 3], 'geometry': [Point(0, 0), Point(1, 1), Point(2, 2)], 'name': ['A', 'B', 'C'] }) # Suppression de la colonne 'name' gdf_dropped = gdf.drop('name', axis=1) # Affichage du GeoDataFrame après suppression print(gdf_dropped)
Explication du code :
Nous créons un
GeoDataFrame
avec des colonnesid
,geometry
etname
. Ensuite, on supprime la colonnename
du GeoDataFrame, en conservant les géométries.
Avantages :
-
Utile pour nettoyer un
GeoDataFrame
en supprimant des colonnes non nécessaires ou des lignes indésirables. -
Conserve la géométrie lors de la suppression.
-
Option
inplace=True
permet de modifier directement le GeoDataFrame sans avoir à créer une nouvelle variable.
-
-
GeoDataFrame.merge()
La méthode GeoDataFrame.merge() permet de fusionner un GeoDataFrame avec un autre DataFrame (ou GeoDataFrame) en se basant sur une ou plusieurs colonnes communes. Elle fonctionne comme pandas.merge(), tout en conservant les géométries.
Importation :
import geopandas as gpd import pandas as pd
Attributs :
Paramètre Type Description Valeur par défaut right
DataFrame ou GeoDataFrame Le DataFrame à fusionner avec le GeoDataFrame de gauche. None
how
str Type de jointure : 'left'
,'right'
,'outer'
,'inner'
.'inner'
on
str ou list Nom(s) de colonne(s) à utiliser pour la jointure. None
left_on
str Colonne du GeoDataFrame de gauche à utiliser pour la jointure. None
right_on
str Colonne du DataFrame de droite à utiliser pour la jointure. None
suffixes
tuple(str, str) Suffixes à utiliser pour les colonnes dupliquées. ('x', 'y')
Exemple de code :
import geopandas as gpd import pandas as pd from shapely.geometry import Point # GeoDataFrame avec des géométries gdf = gpd.GeoDataFrame({ 'id': [1, 2, 3], 'geometry': [Point(0, 0), Point(1, 1), Point(2, 2)] }) # DataFrame à fusionner df = pd.DataFrame({ 'id': [1, 2, 3], 'nom': ['A', 'B', 'C'] }) # Fusion basée sur la colonne 'id' merged = gdf.merge(df, on='id') # Affichage du résultat print(merged)
Explication du code :
On fusionne un GeoDataFrame contenant des points avec un DataFrame contenant des noms.
La jointure est faite sur la colonne communeid
.
Avantages :
-
Permet d’enrichir un GeoDataFrame avec des données tabulaires.
-
Compatible avec toutes les options de fusion de
pandas.merge
. -
Les géométries sont automatiquement conservées après la fusion.
-
-
GeoDataFrame.buffer()
La méthode GeoDataFrame.buffer() permet de créer une zone tampon (buffer) autour de chaque géométrie du GeoDataFrame, à une distance spécifiée. C’est particulièrement utile pour modéliser des zones d’influence, des périmètres de sécurité, ou encore pour les analyses de proximité.
Importation :
import geopandas as gpd
Attributs :
Paramètre Type Description Valeur par défaut distance
float ou array-like Distance du buffer (dans les unités de projection, ex : mètres). None
resolution
int Nombre de segments utilisés pour approximer un quart de cercle. 16
cap_style
int Style de terminaison des buffers linéaires : 1 = rond, 2 = plat, 3 = carré. 1
join_style
int Style de jonction entre segments : 1 = rond, 2 = plat, 3 = biseauté. 1
Exemple de code :
import geopandas as gpd from shapely.geometry import Point import matplotlib.pyplot as plt # Création d’un GeoDataFrame avec un point gdf = gpd.GeoDataFrame(geometry=[Point(0, 0)]) # Création d’un buffer de 1 unité autour du point buffered = gdf.buffer(1) # Affichage base = gdf.plot(color='red') buffered.plot(ax=base, color='lightblue', alpha=0.5, edgecolor='blue') plt.title("Buffer autour d’un point") plt.show()
Explication du code :
On crée un point au centre (0,0), puis on applique un buffer de rayon 1.
La zone bleue représente l’aire tampon générée autour du point rouge.
Avantages :
-
Essentiel pour les analyses spatiales de proximité.
-
Permet de créer des zones d’influence ou de sécurité.
-
Fonctionne aussi bien sur des points, lignes ou polygones.
-
-
GeoDataFrame.intersection()
La méthode GeoDataFrame.intersection() permet de calculer l’intersection géométrique entre chaque géométrie d’un GeoDataFrame et une géométrie ou un autre GeoSeries. Elle retourne les zones communes entre les objets — c’est une opération essentielle en géotraitement (ex : croisement entre limites administratives et zones naturelles).
Importation :
import geopandas as gpd from shapely.geometry import Polygon
Attributs :
Paramètre Type Description Valeur par défaut other
GeoSeries ou GeoDataFrame Objet géospatial avec lequel calculer l’intersection. None
align
bool Si True
, aligne les index entreself
etother
avant intersection.True
Exemple de code :
import geopandas as gpd from shapely.geometry import Polygon import matplotlib.pyplot as plt # Création d'un GeoDataFrame avec un polygone poly1 = Polygon([(0, 0), (2, 0), (2, 2), (0, 2)]) poly2 = Polygon([(1, 1), (3, 1), (3, 3), (1, 3)]) gdf1 = gpd.GeoDataFrame(geometry=[poly1]) gdf2 = gpd.GeoDataFrame(geometry=[poly2]) # Calcul de l'intersection intersection = gdf1.intersection(gdf2.geometry[0]) # Affichage base = gdf1.plot(color='lightblue', edgecolor='black') gdf2.plot(ax=base, color='salmon', edgecolor='black') gpd.GeoSeries(intersection).plot(ax=base, color='green') plt.title("Intersection entre deux polygones") plt.show()
Explication du code :
On crée deux polygones avec une zone de recouvrement.
La méthode.intersection()
permet d’extraire cette zone.
On affiche les deux formes initiales et la zone verte représentant l’intersection.
Avantages :
-
Permet d’extraire les zones communes entre entités spatiales.
-
Très utile pour des opérations comme :
– l’analyse d’impact environnemental,
– la planification urbaine,
– le croisement entre jeux de données géographiques.
-
-
GeoDataFrame.dissolve()
La méthode GeoDataFrame.dissolve() permet de fusionner les géométries d’un GeoDataFrame en regroupant les lignes selon une valeur d’un champ commun (par exemple une région ou un pays). Elle réalise une opération géospatiale d’union des géométries et peut également agréger d’autres colonnes avec une fonction d’agrégation (somme, moyenne, etc.).
Importation :
import geopandas as gpd
Attributs :
Paramètre Type Description Valeur par défaut by
str ou array Nom de la colonne sur laquelle regrouper les géométries (clé de regroupement). None
aggfunc
str ou fonction Fonction d’agrégation appliquée aux autres colonnes (ex : 'sum'
,'mean'
).'first'
as_index
bool Définit si la colonne de regroupement devient l’index du résultat. True
Exemple de code :
import geopandas as gpd import matplotlib.pyplot as plt # Chargement d’un GeoDataFrame avec les pays gdf = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) # Fusion des géométries par continent dissolved = gdf.dissolve(by='continent') # Affichage du résultat dissolved.plot(edgecolor='black', cmap='Set3') plt.title('Fusion des pays par continent') plt.show()
Explication du code :
On regroupe les géométries des pays selon leur continent avec
dissolve(by='continent')
.
Le résultat est une carte où chaque continent est représenté par une seule géométrie.
Avantages :
-
Simplifie et regroupe les données spatiales.
-
Très utile pour regrouper des entités administratives (ex : départements → régions).
-
Permet aussi d’agréger des données statistiques associées.
-
-
GeoDataFrame.simplify()
La méthode GeoDataFrame.simplify() permet de simplifier la géométrie des objets contenus dans une GeoDataFrame en réduisant le nombre de points, tout en préservant leur forme générale. Elle est utile pour alléger les fichiers géographiques, améliorer les performances d’affichage ou préparer des cartes interactives.
Importation :
import geopandas as gpd
Attributs :
Paramètre Type Description Valeur par défaut tolerance
float Distance maximale autorisée entre l’ancienne géométrie et la simplifiée (plus elle est grande, plus la simplification est forte). None
preserve_topology
bool Indique si la topologie (liens entre formes) doit être conservée. True
Exemple de code :
import geopandas as gpd import matplotlib.pyplot as plt # Chargement d'un GeoDataFrame gdf = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) # Création d'une version simplifiée gdf_simplified = gdf.simplify(tolerance=0.1, preserve_topology=True) # Affichage de la version originale et simplifiée fig, ax = plt.subplots(1, 2, figsize=(14, 7)) gdf.plot(ax=ax[0], color='lightblue', edgecolor='black') ax[0].set_title("Original") gdf_simplified.plot(ax=ax[1], color='lightgreen', edgecolor='black') ax[1].set_title("Simplifié") plt.show()
Explication du code :
On charge une carte du monde puis on crée une version simplifiée des géométries à l’aide d’un paramètre
tolerance
.
Les deux cartes (originale et simplifiée) sont affichées côte à côte pour comparaison.
Avantages :
-
Permet de réduire considérablement la taille des fichiers géographiques.
-
Améliore les performances de rendu, notamment en webmapping.
-
Facile à utiliser et à paramétrer.
-