(数据科学学习手札154)geopandas 0.14版本新特性一览
本文示例代码已上传至我的
Github
仓库https://github.com/CNFeffery/DataScienceStudyNotes
1 简介
大家好我是费老师,就在前两天,Python
生态中的GIS
运算神器geopandas
发布了其0.14.0
新版本,在这次新版本更新中,不仅是新增了许多矢量计算API
,还开始为日后正式发布1.0
版本做准备,对一些底层依赖版本进行改动。今天的文章中,我就将为大家一一介绍相关的更新内容:

2 geopandas 0.14版本更新内容
2.1 安装新版本geopandas#
需要注意的是,从0.14
版本开始,geopandas
将最低支持的python
版本提升至3.9
:

因此,推荐大家以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
直接在终端中执行上述命令即可一步到位完成虚拟环境的创建,以及新版geopandas
、jupyterlab
的安装:

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

2.3 新增一系列矢量计算方法#
在这次新版本中,基于shapely
为GeoSeries/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');

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

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

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

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

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

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

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

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

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

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

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

更多有关geopandas
0.14版本的更新内容,请移步https://geopandas.org/en/stable/docs/changelog.html
了解更多。
以上就是本文的全部内容,欢迎在评论区与我进行讨论~
作者:Feffery
出处:https://www.cnblogs.com/feffery/p/17709443.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-09-17 (数据科学学习手札142)dill:Python中增强版的pickle