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

相关文章
|
3月前
|
数据挖掘 定位技术 API
Python GIS神器geopandas 1.0版本来了
Python GIS神器geopandas 1.0版本来了
geopandas 0.13版本更新内容一览
geopandas 0.13版本更新内容一览
|
3月前
|
XML SQL 前端开发
pandas 1.3版本主要更新内容一览
pandas 1.3版本主要更新内容一览
|
3月前
|
IDE 定位技术 开发工具
geopandas 0.11版本重要新特性一览
geopandas 0.11版本重要新特性一览
|
3月前
|
API Python
geopandas 0.9.0重要新特性一览
geopandas 0.9.0重要新特性一览
|
3月前
|
API Python
速通pandas 2.0新版本干货内容
速通pandas 2.0新版本干货内容
|
3月前
|
SQL Python
不只是快,详解geopandas新版文件读写
不只是快,详解geopandas新版文件读写
|
6月前
|
索引 Python
如何使用Pandas进行数据合并?
Pandas提供`merge()`, `join()`, `concat()`等方法进行数据合并。基本步骤包括导入pandas库、创建或加载DataFrame,然后调用这些方法合并数据。示例中展示了如何使用`merge()`和`join()`:创建两个DataFrame `df1`和`df2`,通过`merge()`基于索引合并,以及`join()`进行外连接合并。
62 0
|
6月前
|
索引 Python
Pandas 高级教程——多级索引
Pandas 高级教程——多级索引
136 1
|
Python Windows
python 3.8.11 版本下geopandas的安装记录
python 3.8.11 版本下geopandas的安装记录
python 3.8.11 版本下geopandas的安装记录
下一篇
无影云桌面