mirror of
https://github.com/wassname/geopandas.git
synced 2026-09-20 12:50:47 +08:00
325 KiB
325 KiB
In [1]:
import geopandas as gpd
import folium
import matplotlib.pyplot as pltIn [2]:
path = gpd.datasets.get_path('nybb')
df = gpd.read_file(path)
df.head()Out [2]:
| BoroCode | BoroName | Shape_Leng | Shape_Area | geometry | |
|---|---|---|---|---|---|
| 0 | 5 | Staten Island | 330470.010332 | 1.623820e+09 | (POLYGON ((970217.0223999023 145643.3322143555... |
| 1 | 4 | Queens | 896344.047763 | 3.045213e+09 | (POLYGON ((1029606.076599121 156073.8142089844... |
| 2 | 3 | Brooklyn | 741080.523166 | 1.937479e+09 | (POLYGON ((1021176.479003906 151374.7969970703... |
| 3 | 1 | Manhattan | 359299.096471 | 6.364715e+08 | (POLYGON ((981219.0557861328 188655.3157958984... |
| 4 | 2 | Bronx | 464392.991824 | 1.186925e+09 | (POLYGON ((1012821.805786133 229228.2645874023... |
In [3]:
df.plot(figsize=(6, 6))
plt.show()In [4]:
print(df.crs){'init': 'epsg:2263'}
In [5]:
df = df.to_crs(epsg=4326)
print(df.crs)
df.head()Out [5]:
{'init': 'epsg:4326', 'no_defs': True}
| BoroCode | BoroName | Shape_Leng | Shape_Area | geometry | |
|---|---|---|---|---|---|
| 0 | 5 | Staten Island | 330470.010332 | 1.623820e+09 | (POLYGON ((-74.05050806403247 40.5664220341607... |
| 1 | 4 | Queens | 896344.047763 | 3.045213e+09 | (POLYGON ((-73.83668274106707 40.5949466970158... |
| 2 | 3 | Brooklyn | 741080.523166 | 1.937479e+09 | (POLYGON ((-73.86706149472118 40.5820879767934... |
| 3 | 1 | Manhattan | 359299.096471 | 6.364715e+08 | (POLYGON ((-74.01092841268031 40.6844914725429... |
| 4 | 2 | Bronx | 464392.991824 | 1.186925e+09 | (POLYGON ((-73.89680883223774 40.7958084451597... |
In [6]:
df.plot(figsize=(6, 6))
plt.show()In [7]:
m = folium.Map(location=[40.70, -73.94], zoom_start=10, tiles='CartoDB positron')
mOut [7]:
In [8]:
for _, r in df.iterrows():
#without simplifying the representation of each borough, the map might not be displayed
#sim_geo = gpd.GeoSeries(r['geometry'])
sim_geo = gpd.GeoSeries(r['geometry']).simplify(tolerance=0.001)
geo_j = sim_geo.to_json()
geo_j = folium.GeoJson(data=geo_j,
style_function=lambda x: {'fillColor': 'orange'})
folium.Popup(r['BoroName']).add_to(geo_j)
geo_j.add_to(m)
mOut [8]:
In [9]:
df['lat'] = df.centroid.y
df['lon'] = df.centroid.x
df.head()Out [9]:
| BoroCode | BoroName | Shape_Leng | Shape_Area | geometry | lat | lon | |
|---|---|---|---|---|---|---|---|
| 0 | 5 | Staten Island | 330470.010332 | 1.623820e+09 | (POLYGON ((-74.05050806403247 40.5664220341607... | 40.580858 | -74.153369 |
| 1 | 4 | Queens | 896344.047763 | 3.045213e+09 | (POLYGON ((-73.83668274106707 40.5949466970158... | 40.707604 | -73.818485 |
| 2 | 3 | Brooklyn | 741080.523166 | 1.937479e+09 | (POLYGON ((-73.86706149472118 40.5820879767934... | 40.644734 | -73.947677 |
| 3 | 1 | Manhattan | 359299.096471 | 6.364715e+08 | (POLYGON ((-74.01092841268031 40.6844914725429... | 40.777276 | -73.967159 |
| 4 | 2 | Bronx | 464392.991824 | 1.186925e+09 | (POLYGON ((-73.89680883223774 40.7958084451597... | 40.852627 | -73.866524 |
In [10]:
for _, r in df.iterrows():
folium.Marker(location=[r['lat'], r['lon']], popup='length: {} <br> area: {}'.format(r['Shape_Leng'], r['Shape_Area'])).add_to(m)
mOut [10]: