用於地理資料的 Python 工具
GeoPandas 是一個為 pandas 物件添加對地理資料的支援的專案。它目前實作了GeoSeries
和GeoDataFrame
類型,它們分別是pandas.Series
和pandas.DataFrame
的子類別。 GeoPandas 物件可以作用於形狀良好的幾何物件並執行幾何操作。
GeoPandas 幾何運算是笛卡兒的。座標參考系 (crs) 可以作為物件的屬性存儲,並在從檔案載入時自動設定。可以使用to_crs()
方法將物件轉換為新的座標系。目前還沒有強制執行類似的操作座標,但未來可能會發生變化。
文件可在 geopandas.org(當前版本)和閱讀文件(發行版和開發版本)上取得。
GeoPandas 計畫採用開放式治理模式,並由 NumFOCUS 提供財務資助。考慮進行免稅捐贈,以幫助計畫支付開發人員的時間、專業服務、旅行、研討會和各種其他需求。
有關所有詳細信息,請參閱安裝文件。 GeoPandas 依賴以下軟體包:
pandas
shapely
pyogrio
pyproj
packaging
此外, matplotlib
是繪圖所需的可選依賴項。這些軟體包依賴幾個用於地理空間分析的低階庫,這可能是安裝的一個挑戰。因此,我們建議使用 conda 套件管理器安裝 GeoPandas。有關更多詳細信息,請參閱安裝文件。
>>> 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
一些地理操作會傳回正常的 pandas 物件。 GeoSeries
的area
屬性將傳回pandas.Series
其中包含GeoSeries
中每個項目的面積:
>>> print(g.area)
0 0.5
1 1.0
2 1.0
dtype: float64
其他操作傳回 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
GeoPandas 物件也知道如何繪製自身。 GeoPandas 使用 matplotlib 進行繪圖。若要產生GeoSeries
的繪圖,請使用:
>>> g.plot()
GeoPandas 還實作了備用建構函數,可以讀取 pyogrio 識別的任何資料格式。若要讀取包含具有紐約市行政區邊界的 ESRI shapefile 的 zip 檔案(可以使用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