Python-Tools für geografische Daten
GeoPandas ist ein Projekt, das Pandas-Objekten Unterstützung für geografische Daten hinzufügt. Derzeit werden die Typen GeoSeries
und GeoDataFrame
implementiert, die Unterklassen von pandas.Series
bzw. pandas.DataFrame
sind. GeoPandas-Objekte können auf formschöne Geometrieobjekte einwirken und geometrische Operationen ausführen.
GeoPandas-Geometrieoperationen sind kartesisch. Das Koordinatenreferenzsystem (crs) kann als Attribut eines Objekts gespeichert werden und wird beim Laden aus einer Datei automatisch festgelegt. Objekte können mit der Methode to_crs()
in neue Koordinatensysteme transformiert werden. Derzeit gibt es keine Durchsetzung ähnlicher Koordinaten für Operationen, aber das könnte sich in Zukunft ändern.
Die Dokumentation ist unter geopandas.org (aktuelle Version) und unter „Read the Docs“ (Release- und Entwicklungsversionen) verfügbar.
Das GeoPandas-Projekt nutzt ein offenes Governance-Modell und wird finanziell von NumFOCUS gefördert. Erwägen Sie eine steuerlich absetzbare Spende, um dem Projekt dabei zu helfen, Entwicklerzeit, professionelle Dienstleistungen, Reisen, Workshops und eine Vielzahl anderer Bedürfnisse zu finanzieren.
Alle Details finden Sie in den Installationsdokumenten. GeoPandas ist auf die folgenden Pakete angewiesen:
pandas
shapely
pyogrio
pyproj
packaging
Darüber hinaus ist matplotlib
eine optionale Abhängigkeit, die zum Plotten erforderlich ist. Diese Pakete sind für die Geoanalyse auf mehrere Low-Level-Bibliotheken angewiesen, deren Installation eine Herausforderung darstellen kann. Daher empfehlen wir, GeoPandas mit dem Conda-Paketmanager zu installieren. Weitere Informationen finden Sie in den Installationsdokumenten.
>>> 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
Einige geografische Operationen geben normale Pandas-Objekte zurück. Die Eigenschaft area
einer GeoSeries
gibt eine pandas.Series
zurück, die die Fläche jedes Elements in der GeoSeries
enthält:
>>> print(g.area)
0 0.5
1 1.0
2 1.0
dtype: float64
Andere Operationen geben GeoPandas-Objekte zurück:
>>> 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
GeoPandas-Objekte können sich auch selbst plotten. GeoPandas verwendet matplotlib zum Plotten. Um einen Plot einer GeoSeries
zu erstellen, verwenden Sie:
>>> g.plot()
GeoPandas implementiert außerdem alternative Konstruktoren, die jedes von Pyogrio erkannte Datenformat lesen können. So lesen Sie eine ZIP-Datei, die ein ESRI-Shapefile mit den Bezirksgrenzen von New York City enthält (das Beispiel kann mit dem geodatasets
-Paket abgerufen werden):
>>> 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