Python 一行代碼算出每個(gè)省面積的神器—Geopandas

GeoPandas是一個(gè)基于pandas,針對地理數(shù)據(jù)做了特別支持的第三方模塊。
它繼承pandas.Series和pandas.Dataframe,實(shí)現(xiàn)了GeoSeries和GeoDataFrame類,使得其操縱和分析平面幾何對象非常方便。
1.準(zhǔn)備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。
(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.
(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南。
請選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
由于geopandas涉及到許多第三方依賴,pip安裝起來非常麻煩。因此在本教程中,我只推薦使用conda安裝geopandas:
conda install geopandas一行語句即可完成安裝。
2.基本使用
設(shè)定坐標(biāo)繪制簡單的圖形:
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這些變量所形成的圖形如下:

這里有一個(gè)重要且強(qiáng)大的用法,通過area屬性,geopandas能直接返回這些圖形的面積:
>>> print(g.area)
0 0.5
1 1.0
2 1.0
dtype: float64不僅如此,通過plot屬性函數(shù),你還可以直接生成matplotlib圖。
>>> g.plot()通過matplot的pyplot,可以將圖片保存下來:
import matplotlib.pyplot as plt
g.plot()
plt.savefig("test.png")學(xué)會(huì)上面的基本用法, 我們就可以進(jìn)行簡單的地圖繪制及面積的計(jì)算了。
3.繪制并算出每個(gè)省的面積
此外,它最大的亮點(diǎn)是可以通過 Fiona(底層實(shí)現(xiàn),用戶不需要管),讀取比如ESRI shapefile(一種用于存儲(chǔ)地理要素的幾何位置和屬性信息的非拓?fù)浜唵胃袷?。
import geopandas
import matplotlib.pyplot as plt
from shapely.geometry import Polygon
maps = geopandas.read_file('1.shx')
# 讀取的數(shù)據(jù)格式類似于
# 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等數(shù)據(jù)。讀取出來的圖形如下:

同樣,這個(gè)shapefile是省級(jí)行政區(qū)的,每一個(gè)省級(jí)行政區(qū)都被劃分為一個(gè)區(qū)塊,因此可以一行語句算出每個(gè)省級(jí)行政區(qū)所占面積:
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
# ... ...怎么樣,是不是很酷?它還有許多更庫的特性,歡迎閱讀官方文檔:
https://geopandas.readthedocs.io/
推薦閱讀:
入門: 最全的零基礎(chǔ)學(xué)Python的問題 | 零基礎(chǔ)學(xué)了8個(gè)月的Python | 實(shí)戰(zhàn)項(xiàng)目 |學(xué)Python就是這條捷徑
干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 | 從萬眾期待到口碑撲街!唐探3令人失望 | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個(gè)海量小姐姐素描圖 |碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影
趣味:彈球游戲 | 九宮格 | 漂亮的花 | 兩百行Python《天天酷跑》游戲!
AI: 會(huì)做詩的機(jī)器人 | 給圖片上色 | 預(yù)測收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影
小工具: Pdf轉(zhuǎn)Word,輕松搞定表格和水印! | 一鍵把html網(wǎng)頁保存為pdf!| 再見PDF提取收費(fèi)! | 用90行代碼打造最強(qiáng)PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換 | 制作一款釘釘?shù)蛢r(jià)機(jī)票提示器! |60行代碼做了一個(gè)語音壁紙切換器天天看小姐姐!|
年度爆款文案
2).學(xué)Python真香!我用100行代碼做了個(gè)網(wǎng)站,幫人PS旅行圖片,賺個(gè)雞腿吃
9).發(fā)現(xiàn)一個(gè)舔狗福利!這個(gè)Python爬蟲神器太爽了,自動(dòng)下載妹子圖片
點(diǎn)閱讀原文,領(lǐng)AI全套資料!


