Geopandas 0.11版本重要新特性一览

开发
Geopandas发布了其0.11.0正式版本,距离其上一个版本(0.10.2)发布已过去大半年,在这一次的新版本更新中又为我们带来了哪些重要的新特性呢,今天的文章中我就来带大家一探究竟。

大家好我是费老师,就在几天前,geopandas发布了其0.11.0正式版本,距离其上一个版本(0.10.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__)"

图片

一切准备就绪,下面我们来一览此次更新中比较重要的几个特性:

1. 更快的矢量文件读写

新版本中为read_file()与to_file()引入了参数engine用于指定读写常见矢量文件基于的引擎,默认为原先的'fiona',可选'pyogrio',这是由geopandas开发团队维护的另一个库,可大幅度提升对常见矢量文件格式如shapefile的读写速度,以读取具有数百万个多边形的广州市全量建筑物轮廓数据为例,新的IO引擎带来近5倍的读取性能提升:

图片

以及同样接近5倍的写出性能提升:

图片图片

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

0.11中新增针对GeoSeries和GeoDataFrame的方法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()并自动返回有效矢量裁切结果:

图片

3. 正确读写GIS文件中的日期时间字段

从0.11.0版本开始,geopandas在面对日期时间型字段时,无论是写出到GIS文件还是从GIS文件读入,都可以保证正确解析为日期时间型:

图片

你可以在https://github.com/geopandas/geopandas/releases/tag/v0.11.0查看完整的版本更新说明,总体而言,这次新版本更新带来的重要更新并不太多,但都颇为实用,你可以在自己的数据上使用一番。

责任编辑:赵宁宁 来源: Python大数据分析
相关推荐

2011-05-26 10:27:37

Fedora 15

2013-10-18 14:23:21

Ubuntu 13.1Kbuntu 13.1

2010-06-01 09:52:27

jQuery Tool

2015-07-17 13:27:16

MySQL 5.7

2021-12-09 22:22:19

Windows 11操作系统微软

2010-07-20 10:19:06

Wine 1.2

2011-12-16 09:24:53

JavaSpring开源框架

2013-11-26 10:00:30

VMware Hori

2013-11-26 10:00:09

VMware Hori虚拟化Wmware

2024-06-28 11:39:21

2012-10-17 09:20:17

Windows 8

2012-10-23 12:22:35

独立版本Windows全新的Metro界面

2015-07-17 13:43:09

MySQL 5.7

2015-07-17 13:45:12

MySQL 5.7

2009-12-18 13:43:07

Ruby 1.9版本

2012-01-12 16:16:20

Fedora 17特性规划

2017-09-22 14:04:33

前端Node.js新特性

2010-01-26 17:44:32

Visual C++开

2023-11-23 10:21:11

ECMAScriptJavaScript

2021-11-19 05:54:46

Windows 11操作系统微软
点赞
收藏

51CTO技术栈公众号