Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Jointures Spatiales avec Geopandas | Techniques d'Analyse Spatiale
Analyse Géospatiale Avec Python

Jointures Spatiales avec Geopandas

Glissez pour afficher le menu

Les jointures spatiales sont un moyen puissant de combiner des ensembles de données géospatiales en fonction de leurs relations spatiales plutôt que de simplement faire correspondre des valeurs d'attributs. Avec geopandas, il est facile d'effectuer des jointures spatiales pour répondre à des questions telles que « Quels points se trouvent dans quels polygones ? » ou « Quelles entités sont les plus proches les unes des autres ? » L'outil principal pour cela dans geopandas est la méthode sjoin(), qui fusionne deux objets GeoDataFrame en évaluant leurs relations spatiales.

Supposons que vous disposiez de deux ensembles de données spatiales : l'un contenant les emplacements des écoles (sous forme de points) et l'autre les limites des quartiers (sous forme de polygones). En effectuant une jointure spatiale, il est possible de déterminer dans quel quartier se trouve chaque école, ou de compter le nombre d'écoles par quartier.

La méthode sjoin() de geopandas permet de spécifier le type de relation spatiale à utiliser pour la jointure, comme within, contains ou intersects. De plus, il est possible de choisir le type de jointure — left, right ou inner — qui détermine comment les enregistrements de chaque ensemble de données sont associés et conservés dans le résultat.

123456789101112131415161718192021222324252627282930313233343536
import geopandas as gpd from shapely.geometry import Point, Polygon # Create GeoDataFrame of points (e.g., schools) points = gpd.GeoDataFrame({ "school": ["A", "B", "C"], "geometry": [ Point(1, 1), Point(2, 2), Point(3, 3) ] }) # Create GeoDataFrame of polygons (e.g., neighborhoods) polygons = gpd.GeoDataFrame({ "neighborhood": ["Red", "Blue"], "geometry": [ Polygon([(0,0), (0,2), (2,2), (2,0)]), # Red neighborhood Polygon([(2,2), (2,4), (4,4), (4,2)]) # Blue neighborhood ] }) # Spatial join: which school is in which neighborhood? left_join = gpd.sjoin(points, polygons, how="left", predicate="within") right_join = gpd.sjoin(points, polygons, how="right", predicate="within") inner_join = gpd.sjoin(points, polygons, how="inner", predicate="within") print("Left Join Result:") print(left_join[["school", "neighborhood"]]) print("\nRight Join Result:") print(right_join[["school", "neighborhood"]]) print("\nInner Join Result:") print(inner_join[["school", "neighborhood"]])

Dans l'exemple ci-dessus, trois types de jointures sont illustrés :

  • Left join : conserve tous les points (écoles), en ajoutant les informations de quartier lorsque disponibles ;
  • Right join : conserve tous les polygones (quartiers), en ajoutant les écoles qu'ils contiennent ;
  • Inner join : conserve uniquement les points qui se trouvent dans un quartier.

Le choix du type de jointure dépend des objectifs de l'analyse. Par exemple, pour obtenir toutes les écoles, qu'elles soient ou non situées dans un quartier, il faut utiliser une left join. Pour visualiser tous les quartiers et les écoles qu'ils contiennent, il faut utiliser une right join. Si seuls les écoles situées dans des quartiers vous intéressent, il faut utiliser une inner join.

question mark

Laquelle des affirmations suivantes concernant les jointures spatiales dans geopandas est correcte ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 1

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 2. Chapitre 1
some-alt