Outils Python pour les données géographiques
GeoPandas est un projet visant à ajouter la prise en charge des données géographiques aux objets pandas. Il implémente actuellement les types GeoSeries
et GeoDataFrame
qui sont respectivement des sous-classes de pandas.Series
et pandas.DataFrame
. Les objets GeoPandas peuvent agir sur des objets géométriques galbés et effectuer des opérations géométriques.
Les opérations géométriques de GeoPandas sont cartésiennes. Le système de référence de coordonnées (crs) peut être stocké en tant qu'attribut sur un objet et est automatiquement défini lors du chargement à partir d'un fichier. Les objets peuvent être transformés vers de nouveaux systèmes de coordonnées avec la méthode to_crs()
. Il n’existe actuellement aucune application de coordonnées similaires pour les opérations, mais cela pourrait changer à l’avenir.
La documentation est disponible sur geopandas.org (version actuelle) et Read the Docs (versions release et de développement).
Le projet GeoPandas utilise un modèle de gouvernance ouvert et est financé financièrement par NumFOCUS. Envisagez de faire un don déductible d'impôt pour aider le projet à payer le temps des développeurs, les services professionnels, les déplacements, les ateliers et divers autres besoins.
Consultez la documentation d'installation pour tous les détails. GeoPandas dépend des packages suivants :
pandas
shapely
pyogrio
pyproj
packaging
De plus, matplotlib
est une dépendance facultative, requise pour le traçage. Ces packages dépendent de plusieurs bibliothèques de bas niveau pour l'analyse géospatiale, ce qui peut être difficile à installer. Par conséquent, nous vous recommandons d'installer GeoPandas à l'aide du gestionnaire de packages conda. Consultez la documentation d'installation pour plus de détails.
>>> import geopandas
>>> from shapely.geometry import Polygon
>>> p1 = Polygon([(0, 0), (1, 0), (1, 1)])
>>> p2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
>>> p3 = Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])
>>> g = geopandas.GeoSeries([p1, p2, p3])
>>> g
0 POLYGON ((0 0, 1 0, 1 1, 0 0))
1 POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))
2 POLYGON ((2 0, 3 0, 3 1, 2 1, 2 0))
dtype: geometry
Certaines opérations géographiques renvoient des objets pandas normaux. La propriété area
d'une GeoSeries
renverra un pandas.Series
contenant la superficie de chaque élément de la GeoSeries
:
>>> print(g.area)
0 0.5
1 1.0
2 1.0
dtype: float64
D'autres opérations renvoient des objets GeoPandas :
>>> g.buffer(0.5)
0 POLYGON ((-0.3535533905932737 0.35355339059327...
1 POLYGON ((-0.5 0, -0.5 1, -0.4975923633360985 ...
2 POLYGON ((1.5 0, 1.5 1, 1.502407636663901 1.04...
dtype: geometry
Les objets GeoPandas savent également se tracer. GeoPandas utilise matplotlib pour le traçage. Pour générer un tracé d'une GeoSeries
, utilisez :
>>> g.plot()
GeoPandas implémente également des constructeurs alternatifs capables de lire n'importe quel format de données reconnu par pyogrio. Pour lire un fichier zip contenant un fichier de formes ESRI avec les limites des arrondissements de la ville de New York (l'exemple peut être récupéré à l'aide du package geodatasets
) :
>>> import geodatasets
>>> nybb_path = geodatasets.get_path('nybb')
>>> boros = geopandas.read_file(nybb_path)
>>> boros.set_index('BoroCode', inplace=True)
>>> boros.sort_index(inplace=True)
>>> boros
BoroName Shape_Leng Shape_Area
BoroCode
1 Manhattan 359299.096471 6.364715e+08
2 Bronx 464392.991824 1.186925e+09
3 Brooklyn 741080.523166 1.937479e+09
4 Queens 896344.047763 3.045213e+09
5 Staten Island 330470.010332 1.623820e+09
geometry
BoroCode
1 MULTIPOLYGON (((981219.0557861328 188655.31579...
2 MULTIPOLYGON (((1012821.805786133 229228.26458...
3 MULTIPOLYGON (((1021176.479003906 151374.79699...
4 MULTIPOLYGON (((1029606.076599121 156073.81420...
5 MULTIPOLYGON (((970217.0223999023 145643.33221...
>>> boros['geometry'].convex_hull
BoroCode
1 POLYGON ((977855.4451904297 188082.3223876953,...
2 POLYGON ((1017949.977600098 225426.8845825195,...
3 POLYGON ((988872.8212280273 146772.0317993164,...
4 POLYGON ((1000721.531799316 136681.776184082, ...
5 POLYGON ((915517.6877458114 120121.8812543372,...
dtype: geometry