本文示例文件已上傳至我的
Github
倉庫https://github.com/CNFeffery/DataScienceStudyNotes
1 簡介
就在幾天前,geopandas
釋放了其最新正式版本0.9.0
,作為一次比較大的版本更新,geopandas
為我們帶來了一系列新特性,今天的文章我們就來一起看看有哪些主要的功能變化吧~

2 geopandas 0.9.0重要新特性一覽
出於對穩定性的考慮,我選擇新建虛擬環境來探索新版本geopandas
,完整命令如下(順便一提,0.9.0
版本最低支持的Python
版本為3.5
):
conda create -n geopandas-env python=3.7 -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud/conda-forge -y
conda activate geopandas-env
conda install geopandas=0.9.0 -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud/conda-forge -y
2.1 read_file可直接讀取存放單個矢量文件的zip壓縮包
在以前的版本中,當我們的矢量文件存放在zip
壓縮包內時,使用gpd.read_file()
直接讀取時需要傳入特殊格式的zip
路徑表達式(詳見我以前撰寫的geopandas
系列教程文件IO篇),但在0.9.0
版本中,當你的zip
壓縮包內只有單一圖層的文件時,直接就可讀取:

2.2 新增對wkt與wkb格式的直接支持
在以前版本的geopandas
中,是沒有直接的API
來與wkt/wkb
格式進行交互的,往往需要配合shapely
中的相關功能。
而在這次的更新中針對GeoSeries
對象新增了from_wkt()
、from_wkb()
、to_wkt()
以及to_wkb()
四種方法,使得我們直接就可以輕松完成格式轉換:

2.3 新增高度z屬性
在以前版本中,我們可以對點要素構成的GeoSeries
或GeoDataFrame
提取x
與y
坐標屬性,而在這次的更新中,額外新增了對高度z
屬性的支持:

2.4 dissolve()方法新增無字段依賴模式
我在geopandas
系列教程空間計算篇(上)帶大家學習過用於對不同記錄行矢量要素,按照某列或多列進行矢量融合的方法dissolve()
,而新版本中的dissolve()
中的by
參數默認值為None,這時會不依賴任何其他字段,直接把所有記錄行矢量要素融合為一行,非常的方便:

2.5 新增estimate_utm_crs()方法自動推斷投影坐標系
不管你的GeoDataFrame
或GeoSeries
坐標參考系是什么,只要是合法可解析的,通過geopandas
新版中增加的estimate_utm_crs()
方法,都可以自動幫你推斷最合適的經度帶對應的橫軸墨卡托投影坐標系:

2.6 解決了explode()方法與pandas的沖突
我在geopandas
系列教程空間計算篇(上)中還介紹過與dissolve()
方法相反的explode()
方法,它可以將多要素集合類型的GeoDataFrame
或GeoSeries
自動拆分為每行包含單要素的結果,但熟悉pandas
的小伙伴一定知道在pandas
中有同名方法,用於將元素為數組類型如列表的單行記錄拆成單元素構成的多行記錄。
而以前版本geopandas
中的explode()
方法是不兼容pandas
的,這意味着如果你既需要多部件矢量要素拆分,又需要按照數組型元素拆分,就得在geopandas
與pandas
的數據結構之間轉來轉去,但新版本中兩者得到了完美兼容~

2.7 繪圖無需descartes依賴
用過geopandas
繪制面要素的朋友都知道,以前版本的geopandas
是需要第三方依賴庫descartes
,但在0.9.0
版本中再也不需要啦!

除此之外,geopandas
還提供了很多小的新特性,這里就不再一一贅述,感興趣的讀者朋友可以在https://github.com/geopandas/geopandas/releases/tag/v0.9.0
詳細查看。
以上就是本文的全部內容,歡迎在評論區與我進行討論~