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


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

相关推荐
本地化文档几秒前
xlwings-docs-l10n
python·github·excel·gitcode·sphinx
梅雅达编程笔记40 分钟前
零基础学 Python 第7章 | 字典 dict:键值对存储
开发语言·python·beautifulsoup·numpy·pandas
heroboyluck41 分钟前
AI工程师第四课 - 深度学习入门
人工智能·python·深度学习·llama
alicema11111 小时前
BRAIN 研究顾问(Research Consultant)兼职
python·量化
元Y亨H1 小时前
Python,单引号和双引号有何区别
python
超神熊猫1 小时前
🧀🧀🧀前端仔如何快速上手python
前端·python
qq_380651331 小时前
xu0713#True贪吃蛇经典的游戏
python·游戏·pygame
卷无止境2 小时前
Flet 完全教程:用纯 Python 构建跨平台应用
前端·python
量化吞吐机2 小时前
2026年AI量化工具评估,先分开学习开发和验证
人工智能·python