(數據科學學習手札111)geopandas 0.9.0重要新特性一覽

本文示例文件已上傳至我的Github倉庫//github.com/CNFeffery/DataScienceStudyNotes

1 簡介

  就在幾天前,geopandas釋放了其最新正式版本0.9.0,作為一次比較大的版本更新,geopandas為我們帶來了一系列新特性,今天的文章我們就來一起看看有哪些主要的功能變化吧~

圖1

2 geopandas 0.9.0重要新特性一覽

  出於對穩定性的考慮,我選擇新建虛擬環境來探索新版本geopandas,完整命令如下(順便一提,0.9.0版本最低支援的Python版本為3.5):

conda create -n geopandas-env python=3.7 -c //mirrors.sjtug.sjtu.edu.cn/anaconda/cloud/conda-forge -y
conda activate geopandas-env
conda install geopandas=0.9.0 -c //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.2 新增對wkt與wkb格式的直接支援

  在以前版本的geopandas中,是沒有直接的API來與wkt/wkb格式進行交互的,往往需要配合shapely中的相關功能。

  而在這次的更新中針對GeoSeries對象新增了from_wkt()from_wkb()to_wkt()以及to_wkb()四種方法,使得我們直接就可以輕鬆完成格式轉換:

圖3

2.3 新增高度z屬性

  在以前版本中,我們可以對點要素構成的GeoSeriesGeoDataFrame提取xy坐標屬性,而在這次的更新中,額外新增了對高度z屬性的支援:

圖4

2.4 dissolve()方法新增無欄位依賴模式

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

圖5

2.5 新增estimate_utm_crs()方法自動推斷投影坐標系

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

圖6

2.6 解決了explode()方法與pandas的衝突

  我在geopandas系列教程空間計算篇(上)中還介紹過與dissolve()方法相反的explode()方法,它可以將多要素集合類型的GeoDataFrameGeoSeries自動拆分為每行包含單要素的結果,但熟悉pandas的小夥伴一定知道在pandas中有同名方法,用於將元素為數組類型如列表的單行記錄拆成單元素構成的多行記錄。

  而以前版本geopandas中的explode()方法是不兼容pandas的,這意味著如果你既需要多部件矢量要素拆分,又需要按照數組型元素拆分,就得在geopandaspandas的數據結構之間轉來轉去,但新版本中兩者得到了完美兼容~

圖7

2.7 繪圖無需descartes依賴

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

圖8

  除此之外,geopandas還提供了很多小的新特性,這裡就不再一一贅述,感興趣的讀者朋友可以在//github.com/geopandas/geopandas/releases/tag/v0.9.0詳細查看。


  以上就是本文的全部內容,歡迎在評論區與我進行討論~