(数据科学学习手札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资源镜像):

python 复制代码
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的安装:

2.2 geopandas 0.14版本底层依赖变动

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

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

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

2.3.1 新增concave_hull()方法

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

python 复制代码
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),是一种用来度量路径之间相似度的经典数学方法:

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

而通过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()最近邻搜索计算之前手动排除要素自身:

更多有关geopandas0.14版本的更新内容,请移步https://geopandas.org/en/stable/docs/changelog.html了解更多。


以上就是本文的全部内容,欢迎在评论区与我进行讨论~

相关推荐
小宁爱Python几秒前
Django 从环境搭建到第一个项目
后端·python·django
带娃的IT创业者21 分钟前
如何开发一个教育性质的多线程密码猜测演示器
网络·python·算法
luckys.one6 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
大翻哥哥8 小时前
Python 2025:量化金融与智能交易的新纪元
开发语言·python·金融
zhousenshan9 小时前
Python爬虫常用框架
开发语言·爬虫·python
IMER SIMPLE9 小时前
人工智能-python-深度学习-经典神经网络AlexNet
人工智能·python·深度学习
CodeCraft Studio9 小时前
国产化Word处理组件Spire.DOC教程:使用 Python 将 Markdown 转换为 HTML 的详细教程
python·html·word·markdown·国产化·spire.doc·文档格式转换
专注API从业者10 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
java1234_小锋10 小时前
[免费]基于Python的协同过滤电影推荐系统(Django+Vue+sqlite+爬虫)【论文+源码+SQL脚本】
python·django·电影推荐系统·协同过滤
看海天一色听风起雨落11 小时前
Python学习之装饰器
开发语言·python·学习