Python實戰之利用Geopandas算出每個省面積
GeoPandas是一個基於pandas,針對地理數據做瞭特別支持的第三方模塊。
它繼承pandas.Series和pandas.Dataframe,實現瞭GeoSeries和GeoDataFrame類,使得其操縱和分析平面幾何對象非常方便。
1.準備
開始之前,你要確保Python和pip已經成功安裝在電腦上。
請選擇以下任一種方式輸入命令安裝依賴:
1.Windows 環境 打開 Cmd (開始-運行-CMD)。
2.MacOS 環境 打開 Terminal (command+空格輸入Terminal)。
3.如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
由於geopandas涉及到許多第三方依賴,pip安裝起來非常麻煩。因此在本教程中,我隻推薦使用conda安裝geopandas:
conda install geopandas
一行語句即可完成安裝。
2.基本使用
設定坐標繪制簡單的圖形:
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: # result: # 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
這些變量所形成的圖形如下:
這裡有一個重要且強大的用法,通過area屬性,geopandas能直接返回這些圖形的面積:
>>> print(g.area) 0 0.5 1 1.0 2 1.0 dtype: float64
不僅如此,通過plot屬性函數,你還可以直接生成matplotlib圖。
>>> g.plot()
通過matplot的pyplot,可以將圖片保存下來:
import matplotlib.pyplot as plt g.plot() plt.savefig("test.png")
學會上面的基本用法, 我們就可以進行簡單的地圖繪制及面積的計算瞭。
3.繪制並算出每個省的面積
此外,它最大的亮點是可以通過 Fiona(底層實現,用戶不需要管),讀取比如ESRI shapefile(一種用於存儲地理要素的幾何位置和屬性信息的非拓撲簡單格式)。
import geopandas import matplotlib.pyplot as plt from shapely.geometry import Polygon maps = geopandas.read_file('1.shx') # 讀取的數據格式類似於 # geometry # 0 POLYGON ((1329152.341 5619034.278, 1323327.591... # 1 POLYGON ((-2189253.375 4611401.367, -2202922.3... # 2 POLYGON ((761692.092 4443124.843, 760999.873 4... # 3 POLYGON ((-34477.046 4516813.963, -41105.128 4... # ... ... maps.plot() plt.savefig("test.png")
如代碼所示,通過read_file你可以讀取shx、gpkg、geojson等數據。讀取出來的圖形如下:
同樣,這個shapefile是省級行政區的,每一個省級行政區都被劃分為一個區塊,因此可以一行語句算出每個省級行政區所占面積:
print(maps.area)
# 0 4.156054e+11
# 1 1.528346e+12
# 2 1.487538e+11
# 3 4.781135e+10
# 4 1.189317e+12
# 5 1.468277e+11
# 6 1.597052e+11
# 7 9.770609e+10
# 8 1.385692e+11
# 9 1.846538e+11
# 10 1.015979e+11
# ... ...
到此這篇關於Python實戰之利用Geopandas算出每個省面積的文章就介紹到這瞭,更多相關Python Geopandas內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python一繪制元二次方程曲線的實例分析
- python數學建模之Matplotlib 實現圖片繪制
- Python畫圖常用命令大全(詳解)
- python進行相關性分析並繪制散點圖詳解
- Python Matplotlib數據可視化模塊使用詳解