GeoPandas-Beispiele¶
In den folgenden Beispielen verwenden wir den nybb-Datensatz.
GeoPandas-Plot¶
Import
[1]:
import geopandas as gpd
from geodatasets import get_path
Daten lesen
[2]:
nybb = get_path("nybb")
[3]:
df = gpd.read_file(nybb)
Anzeigen der ersten Zeilen
[4]:
df.head()
[4]:
BoroCode | BoroName | Shape_Leng | Shape_Area | geometry | |
---|---|---|---|---|---|
0 | 5 | Staten Island | 330470.010332 | 1.623820e+09 | MULTIPOLYGON (((970217.022 145643.332, 970227.... |
1 | 4 | Queens | 896344.047763 | 3.045213e+09 | MULTIPOLYGON (((1029606.077 156073.814, 102957... |
2 | 3 | Brooklyn | 741080.523166 | 1.937479e+09 | MULTIPOLYGON (((1021176.479 151374.797, 102100... |
3 | 1 | Manhattan | 359299.096471 | 6.364715e+08 | MULTIPOLYGON (((981219.056 188655.316, 980940.... |
4 | 2 | Bronx | 464392.991824 | 1.186925e+09 | MULTIPOLYGON (((1012821.806 229228.265, 101278... |
Plotten
[5]:
ax = df.plot(figsize=(10, 10), alpha=0.5, edgecolor="k")
figsize
gibt die Größe des Plots, alpha
die Transparenz und edgecolor
die Kantenfarbe an.
Plotten in Folium¶
Folium oder genauer das mit Folium verwendete leaflet.js verwendet standardmäßig die Werte für Breiten- und Längengrade. Daher müssen wir unsere Werte erst konvertieren:
Koordinaten bestimmen
Um die Daten mit EPSG-Codes zu verwenden zu können, bietet GeoPandas geopandas.GeoDataFrame.crs (Coordination Reference System; deutsch: Koordinatenreferenzsystem).
[6]:
print(df.crs)
EPSG:2263
[7]:
df = df.to_crs(epsg=4326)
print(df.crs)
df.head()
EPSG:4326
[7]:
BoroCode | BoroName | Shape_Leng | Shape_Area | geometry | |
---|---|---|---|---|---|
0 | 5 | Staten Island | 330470.010332 | 1.623820e+09 | MULTIPOLYGON (((-74.05051 40.56642, -74.05047 ... |
1 | 4 | Queens | 896344.047763 | 3.045213e+09 | MULTIPOLYGON (((-73.83668 40.59495, -73.83678 ... |
2 | 3 | Brooklyn | 741080.523166 | 1.937479e+09 | MULTIPOLYGON (((-73.86706 40.58209, -73.86769 ... |
3 | 1 | Manhattan | 359299.096471 | 6.364715e+08 | MULTIPOLYGON (((-74.01093 40.68449, -74.01193 ... |
4 | 2 | Bronx | 464392.991824 | 1.186925e+09 | MULTIPOLYGON (((-73.89681 40.79581, -73.89694 ... |
[8]:
import folium
[9]:
m = folium.Map(
location=[40.70, -73.94], zoom_start=10, tiles="CartoDB positron"
)
for _, r in df.iterrows():
# without simplifying the representation of each borough, the map might not be displayed
sim_geo = gpd.GeoSeries(r["geometry"]).simplify(tolerance=0.001)
geo_j = sim_geo.to_json()
geo_j = folium.GeoJson(
data=geo_j,
)
folium.Popup(r["BoroName"]).add_to(geo_j)
geo_j.add_to(m)
m
[9]:
Make this Notebook Trusted to load map: File -> Trust Notebook