程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

(數據科學學習手札139)geopandas 0.11版本重要新特性一覽

編輯:Python

本文示例代碼已上傳至我的Github倉庫https://github.com/CNFeffery/DataScienceStudyNotes

1 簡介

大家好我是費老師,就在幾天前,geopandas發布了其0.11.0正式版本,距離其上一個版本(0.10.2)發布已過去大半年,在這一次的新版本更新中又為我們帶來了哪些重要的新特性呢,今天的文章中我就來帶大家一探究竟。

2 geopandas 0.11版本重要新特性一覽

你可以在舊版本geopandas的基礎上進行升級,也可以新建虛擬環境直接安裝0.11.0版本,本著謹慎嘗鮮的原則,我們可以使用下面的命令一口氣完成新虛擬環境的創建、geopandas及其相關依賴的安裝,並安裝上jupyterlab作為IDE進行演示:

conda create -n geopandas-env python=3.8 -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main -y
conda activate geopandas-env
conda install geopandas=0.11.0 pygeos pyogrio -c conda-forge -y
pip install jupyterlab -i https://pypi.douban.com/simple/

終端裡執行下列命令驗證一下是否已正確安裝:

python -c "import geopandas as gpd;print(gpd.__version__)"

一切准備就緒,下面我們來一覽此次更新中比較重要的幾個特性:

2.1 更快的矢量文件讀寫

新版本中為read_file()to_file()引入了參數engine用於指定讀寫常見矢量文件基於的引擎,默認為原先的'fiona',可選'pyogrio',這是由geopandas開發團隊維護的另一個庫,可大幅度提升對常見矢量文件格式如shapefile的讀寫速度,以讀取具有數百萬個多邊形的廣州市全量建築物輪廓數據為例,新的IO引擎帶來近5倍的讀取性能提升:

以及同樣接近5倍的寫出性能提升:

2.2 新增高性能矩形裁切方法clip_by_rect()

0.11中新增針對GeoSeriesGeoDataFrame的方法clip_by_rect(minx, miny, maxx, maxy),可傳入目標矩形坐標范圍,快速裁切出矩形范圍內的矢量,譬如我們基於前面已經讀入的廣州市建築物輪廓數據,通過下面的函數隨機生成邊長10000米的矩形范圍作為裁切素材:

import numpy as np
import matplotlib.pyplot as plt
from shapely.geometry import box
# 計算得到目標GeoDataFrame范圍
minx, miny, maxx, maxy = gdf.total_bounds
def generate_random_rectangle(minx, miny, maxx, maxy):
'''
研究范圍內隨機取得100000米邊長矩形
'''
random_rectangle = [
np.random.uniform(minx, maxx - 10000),
np.random.uniform(miny, maxy - 10000)
]
return [
*random_rectangle,
random_rectangle[0] + 10000,
random_rectangle[1] + 10000,
]

調用clip_by_rect()

返回的結果與原始矢量記錄數量一致,其中呈現GEOMETRYCOLLECTION EMPTY的記錄說明其與目標矩形沒有交集,我們利用is_empty來反向篩選出發生裁切的矢量記錄:

除此之外,你還可以直接將[minx, miny, maxx, maxy]格式的輸入傳入經典的clip()裁切方法中,它會在底層直接調用clip_by_rect()並自動返回有效矢量裁切結果:

2.3 正確讀寫GIS文件中的日期時間字段

0.11.0版本開始,geopandas在面對日期時間型字段時,無論是寫出到GIS文件還是從GIS文件讀入,都可以保證正確解析為日期時間型:

你可以在https://github.com/geopandas/geopandas/releases/tag/v0.11.0查看完整的版本更新說明,總體而言,這次新版本更新帶來的重要更新並不太多,但都頗為實用,你可以在自己的數據上使用一番。


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


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved