Python實(shí)戰(zhàn)之利用Geopandas算出每個(gè)省面積
GeoPandas是一個(gè)基于pandas,針對(duì)地理數(shù)據(jù)做了特別支持的第三方模塊。
它繼承pandas.Series和pandas.Dataframe,實(shí)現(xiàn)了GeoSeries和GeoDataFrame類,使得其操縱和分析平面幾何對(duì)象非常方便。
1.準(zhǔn)備
開(kāi)始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上。
請(qǐng)選擇以下任一種方式輸入命令安裝依賴:
1.Windows 環(huán)境 打開(kāi) Cmd (開(kāi)始-運(yùn)行-CMD)。
2.MacOS 環(huán)境 打開(kāi) Terminal (command+空格輸入Terminal)。
3.如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
由于geopandas涉及到許多第三方依賴,pip安裝起來(lái)非常麻煩。因此在本教程中,我只推薦使用conda安裝geopandas:
conda install geopandas
一行語(yǔ)句即可完成安裝。
2.基本使用
設(shè)定坐標(biāo)繪制簡(jiǎn)單的圖形:
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)大的用法,通過(guò)area屬性,geopandas能直接返回這些圖形的面積:
>>>?print(g.area) 0????0.5 1????1.0 2????1.0 dtype: float64
不僅如此,通過(guò)plot屬性函數(shù),你還可以直接生成matplotlib圖。
>>> g.plot()
通過(guò)matplot的pyplot,可以將圖片保存下來(lái):
import?matplotlib.pyplot?as?plt g.plot() plt.savefig("test.png")
學(xué)會(huì)上面的基本用法, 我們就可以進(jìn)行簡(jiǎn)單的地圖繪制及面積的計(jì)算了。
3.繪制并算出每個(gè)省的面積
此外,它最大的亮點(diǎn)是可以通過(guò) Fiona(底層實(shí)現(xiàn),用戶不需要管),讀取比如ESRI shapefile(一種用于存儲(chǔ)地理要素的幾何位置和屬性信息的非拓?fù)浜?jiǎn)單格式)。
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")
如代碼所示,通過(guò)read_file你可以讀取shx、gpkg、geojson等數(shù)據(jù)。讀取出來(lái)的圖形如下:
同樣,這個(gè)shapefile是省級(jí)行政區(qū)的,每一個(gè)省級(jí)行政區(qū)都被劃分為一個(gè)區(qū)塊,因此可以一行語(yǔ)句算出每個(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
# ... ...
到此這篇關(guān)于Python實(shí)戰(zhàn)之利用Geopandas算出每個(gè)省面積的文章就介紹到這了,更多相關(guān)Python Geopandas內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
跟老齊學(xué)Python之使用Python查詢更新數(shù)據(jù)庫(kù)
前面我們講述了使用python操作數(shù)據(jù)庫(kù),今天我們來(lái)更進(jìn)一步,介紹下python查詢、更新數(shù)據(jù)庫(kù)的相關(guān)操作。有需要的小伙伴自己參考下吧。2014-11-11pandas DataFrame 賦值的注意事項(xiàng)說(shuō)明(index)
這篇文章主要介紹了pandas DataFrame 賦值的注意事項(xiàng)說(shuō)明(index),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04一文教會(huì)你用Python實(shí)現(xiàn)pdf轉(zhuǎn)word
python實(shí)現(xiàn)pdf轉(zhuǎn)word,支持中英文轉(zhuǎn)換,轉(zhuǎn)換精度高,可以達(dá)到使用效果,下面這篇文章主要給大家介紹了關(guān)于用Python實(shí)現(xiàn)pdf轉(zhuǎn)word的相關(guān)資料,需要的朋友可以參考下2023-01-01matplotlib中l(wèi)egend位置調(diào)整解析
這篇文章主要介紹了matplotlib中l(wèi)egend位置調(diào)整解析,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12python網(wǎng)絡(luò)編程 使用UDP、TCP協(xié)議收發(fā)信息詳解
這篇文章主要介紹了python網(wǎng)絡(luò)編程 使用UDP、TCP協(xié)議收發(fā)信息詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08詳解Python執(zhí)行py文件是否需要可執(zhí)行權(quán)限
這篇文章主要通過(guò)幾個(gè)案例為大家詳細(xì)介紹一下在Python中執(zhí)行py文件是否需要可執(zhí)行權(quán)限,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以了解一下2023-03-03對(duì)Python中Iterator和Iterable的區(qū)別詳解
今天小編就為大家分享一篇對(duì)Python中Iterator和Iterable的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10