(数据科学学习手札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了解更多。


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

相关推荐
努力的家伙是不讨厌的31 分钟前
解析json导出csv或者直接入库
开发语言·python·json
云空1 小时前
《Python 与 SQLite:强大的数据库组合》
数据库·python·sqlite
凤枭香2 小时前
Python OpenCV 傅里叶变换
开发语言·图像处理·python·opencv
测试杂货铺2 小时前
外包干了2年,快要废了。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
艾派森2 小时前
大数据分析案例-基于随机森林算法的智能手机价格预测模型
人工智能·python·随机森林·机器学习·数据挖掘
小码的头发丝、2 小时前
Django中ListView 和 DetailView类的区别
数据库·python·django
Chef_Chen3 小时前
从0开始机器学习--Day17--神经网络反向传播作业
python·神经网络·机器学习
千澜空3 小时前
celery在django项目中实现并发任务和定时任务
python·django·celery·定时任务·异步任务
斯凯利.瑞恩3 小时前
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户附数据代码
python·决策树·随机森林
yannan201903134 小时前
【算法】(Python)动态规划
python·算法·动态规划