geopandas 0.14版本重要更新内容一览

简介: geopandas 0.14版本重要更新内容一览

1 简介

大家好我是费老师,就在前两天,Python生态中的GIS运算神器geopandas发布了其0.14.0新版本,在这次新版本更新中,不仅是新增了许多矢量计算API,还开始为日后正式发布1.0版本做准备,对一些底层依赖版本进行改动。今天的文章中,我就将为大家一一介绍相关的更新内容:

803e2106321768907dea486358351917.png

2 geopandas 0.14版本更新内容

2.1 安装新版本geopandas

需要注意的是,从0.14版本开始,geopandas将最低支持的python版本提升至3.9

1b65705485723e5dc3d3332c1af2669f.png

因此,推荐大家以3.9版本作为建立GIS运算Python环境的基础,这里我们以conda为例,直接建立新的虚拟环境来做演示(下面的命令中为了加速下载过程使用到相关国内conda资源镜像):

conda create -n geopandas-demo python=3.9 -c https://mirrors.sustech.edu.cn/anaconda/pkgs/main/ -y
    
conda activate geopandas-demo
conda install geopandas pyogrio jupyterlab -c https://mirrors.sustech.edu.cn/anaconda/cloud/conda-forge -y

直接在终端中执行上述命令即可一步到位完成虚拟环境的创建,以及新版geopandasjupyterlab的安装:

1f8f84bb23dfdc84e8259fb594e6be3f.png

2.2 geopandas 0.14版本底层依赖变动

0.14版本中,geopandas底层将默认使用shapely(>=2.0版本)进行高性能矢量运算,因此geopandas仅会在shapely缺失但pygeos已安装时,才会调用pygeos。且geopandas将会在未来要发布的1.0正式版本中,直接移除对pygeos,以及旧版shapely(<2.0版本)的支持:

883cfe503af12ed8df203a2c8fcb9248.png

2.3 新增一系列矢量计算方法

在这次新版本中,基于shapelyGeoSeries/GeoDataFrame新引入了一系列矢量计算方法,具体有:

2.3.1 新增concave_hull()方法

有别于先前已有的convex_hull方法,新增的concave_hull()方法用于为矢量列中的每个要素计算「最小凹多边形」,与convex_hull计算结果的对比示例如下:

import random
from shapely.geometry import MultiPoint
# 示例GeoSeries
demo_geometries = gpd.GeoSeries(
    [
        MultiPoint([(random.uniform(0, 1), random.uniform(0, 1)) for i in range(25)])
    ]
)
ax = demo_geometries.plot()
# concave_hull()计算结果
demo_geometries.concave_hull().plot(ax=ax, facecolor='none', edgecolor='red')
# 对比convex_hull()计算结果
demo_geometries.convex_hull.plot(ax=ax, facecolor='none', edgecolor='green');

f59088aebc2cb98b9695f3a08873b943.png

2.3.2 新增delaunay_triangles()方法

新增了用于计算Delaunay三角网的delaunay_triangles()方法,计算示例如下:

4359e25abc3b3489f1857d2d171ae6bb.png

2.3.3 新增extract_unique_points()方法

新增extract_unique_points()方法,用于直接从任意类型目标矢量中提取全部折点要素:

d3fa8373eac3a1c94f0faf63af292d0e.png

2.3.4 新增frechet_distance()方法

新增frechet_distance()方法,用于计算弗雷歇距离(fréchet distance),是一种用来度量路径之间相似度的经典数学方法:

7eb8ea19ff5bbce2b2d5a882df16a026.png

举个例子,我们构造如下的四条路径线要素,肉眼上很容易看出abcd各自相似度最高:

03e4bbb861d0f6849ee179167e3430d0.png

而通过frechet_distance()计算两两之间的弗雷歇距离,也可以从数值计算角度准确计算得到彼此最相似的路径:

1b7491e75afbffd56544906f63743c76.png

2.3.5 新增minimum_rotated_rectangle()方法

新增minimum_rotated_rectangle()方法,用于为矢量列中各个要素计算最小外接矩形,譬如:

7ed1ca11f9ff87be800e6f03173f64ff.png

2.3.6 新增offset_curve()方法

新增offset_curve()方法,用于为目标要素构建偏移曲线,即与原始要素相似但偏移一定的距离:

36a20ea9bc6346626e20eda7b04f9d7f.png

2.3.7 新增remove_repeated_points()方法

新增remove_repeated_points()方法,用于沿要素坐标串定义方向,将距离在阈值以内的坐标点视作重复点要素进行移除,默认阈值为0,你可以在实际应用中灵活调整阈值,从而起到简化要素的目的:

e6490e63516bfb98b02114b1426065ea.png

2.3.8 新增segmentize()方法

新增segmentize()方法,用于对目标矢量列中的各要素,按照设定的等间距进行增密操作,譬如在原有仅起点终点连成线要素基础上,按照1单位距离进行增密的结果如下:

61afdd7bb798fd284882fcf575cd9bc2.png

2.3.9 新增shortest_line()方法

新增shortest_line()方法,用于计算任意两个要素之间最短距离连线:

4321acea2c4f2aca1454eb227d19c733.png

2.4 sjoin_nearest()新增exclusive参数

新版本中为sjoin_nearest()新增参数exclusive,默认为False,当设置为True时,会在计算过程中自动忽略与自身要素相同的最近邻要素,非常的实用,省得我们在做sjoin_nearest()最近邻搜索计算之前手动排除要素自身:

37820853ad0f521b89865e17e0147fe3.png

相关文章
|
4月前
|
Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数变换数据。示例代码:导入pandas,定义一个包含&#39;Name&#39;和&#39;Age&#39;列的DataFrame,使用`melt()`转为长格式,再用`pivot()`恢复为宽格式。
114 1
|
4月前
|
计算机视觉 开发者 Python
如何使用 Python 代码的 PIL 库读取和设置图像的像素内容
如何使用 Python 代码的 PIL 库读取和设置图像的像素内容
|
4月前
|
索引 Python
Python 教程之 Pandas(10)—— 访问 series 的元素
Python 教程之 Pandas(10)—— 访问 series 的元素
80 0
Python 教程之 Pandas(10)—— 访问 series 的元素
|
21天前
|
XML SQL 前端开发
pandas 1.3版本主要更新内容一览
pandas 1.3版本主要更新内容一览
|
1月前
|
Python
pandas库明明安装成功了,为什么总是导入错误?
pandas库明明安装成功了,为什么总是导入错误?
44 4
|
29天前
|
数据可视化 Python
Python的Matplotlib库创建动态图表
【8月更文挑战第19天】Matplotlib是Python中广泛使用的数据可视化库,擅长生成静态图表如折线图、散点图等。本文介绍如何利用其创建动态图表,通过动画展示数据变化,加深对数据的理解。文章涵盖动态折线图、散点图、柱状图、饼图及热力图的制作方法,包括开启交互模式、更新数据和重绘图表等关键步骤,帮助读者掌握Matplotlib动态图表的实用技巧。
36 0
|
3月前
|
存储 SQL 数据挖掘
Python 日期表制作
Python 日期表制作
41 4
|
4月前
|
Python
使用python合并文档
使用python合并文档
60 0
|
4月前
|
数据可视化 Python
如何使用Python的Pandas库进行数据分组和聚合操作?
【2月更文挑战第29天】【2月更文挑战第105篇】如何使用Python的Pandas库进行数据分组和聚合操作?
66 0
|
4月前
|
数据挖掘 数据处理 Python
Pandas 高级教程——自定义函数与映射
Pandas 高级教程——自定义函数与映射
84 0