(数据科学学习手札162)Python GIS神器geopandas 1.0版本发布

python,gis,geopandas · 浏览次数 : 0

小编点评

本文介绍了geopandas 1.0.0版本的新功能特性、优化提升以及相关API的变动情况。geopandas是一个用于地理空间数据分析的Python库,它提供了类似于Pandas的操作方式,使得Python在GIS分析领域的能力得到了极大增强。 1. **新版本介绍**:介绍了geopandas 1.0.0版本相对于老版本的增强菜单,包括新增API和功能改进。 2. **新增API介绍**:详细介绍了新增的API,如count_geometries()、count_interior_rings()等,这些API为GIS分析提供了更多的便利。 3. **功能增强**:描述了新版本中功能上的增强,如空间连接的dwithin型空间关系判断、配合pd.read_csv指定矢量列类型等。 4. **标记为废弃的API**:指出了一些建议废弃的API,提醒用户及时调整代码逻辑。 总的来说,geopandas 1.0.0版本在功能和性能上都有显著提升,为GIS数据分析提供了更强大的工具。

正文

本文完整代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes

1 简介

  大家好我是费老师,就在昨天,Python生态中著名的GIS分析库geopandas发布了其1.0.0正式版本。

  历经10年迭代升级,geopandas充分完善了其在GIS数据分析上的功能,使得我们可以使用类似pandas的操作方式,便捷且高性能的开展各种常用的GIS分析运算,极大增强了PythonGIS分析领域的能力。

  今天的文章,费老师我就将带大家一起快速了解在全新的1.0版本中,新的功能特性、优化提升以及相关API的变动情况🚀~

2 geopandas 1.0版本介绍

  如果你还未曾安装使用过geopandas,我最推荐的方式是新建虚拟环境,并在虚拟环境中通过conda-forge源进行稳定安装,以当下非常流行的开源环境管理工具mamba(可参考我所写的教程)为例,在终端执行下列命令(目前推荐Python版本为3.9),静静等待,即可一步到位完成最新版geopandas的安装:

mamba create -n geopandas-env python=3.9 -y && mamba activate geopandas-env && mamba install geopandas -y

  而如果你已经安装了先前版本的geopandas,那么在你的对应环境下,终端执行下列命令即可进行版本升级:

mamba update geopandas -y

  新安装或升级完成后,检查一下版本变化,成功升级到1.0.0版本🥳:

2.1 新增API介绍

  首先我们来了解一下新版本geopandas中新增的部分主要的API:

2.1.1 新增count_geometries()方法

  新增方法count_geometries(),用于针对多部件要素计算单体要素数量:

2.1.2 新增count_interior_rings()方法

  新增方法count_interior_rings(),用于针对多边形要素计算内环数量:

2.1.3 新增relate_pattern()方法

  新增方法relate_pattern(),用于计算要素之间是否满足特定的DE-9IM(一种分别计算成对要素在内部、边界、外部两两之间相交相离状态的复杂空间模型)空间关系,具体的原理细节较多,我会在之后单独撰文介绍,下面仅演示relate_pattern()的使用示例:

2.1.4 新增intersection_all()方法

  新增方法intersection_all(),用于计算矢量列中全体要素的公共相交部分:

2.1.5 新增line_merge()方法

  新增方法line_merge(),用于快速合并一系列端点相交的线要素:

2.1.6 新增set_precision()、get_precision()方法

  新增方法set_precision()get_precision(),用于设置及获取矢量列的坐标精度大小:

2.1.7 新增count_coordinates()方法

  新增方法count_coordinates(),用于快速计算矢量列各要素坐标点数量:

2.1.8 新增is_ccw属性方法

  新增属性方法is_ccw,用于针对坐标点数量大于等于4个的线要素,判断其坐标串方向是否符合逆时针方向:

2.1.9 新增is_closed属性方法

  新增属性方法is_closed,用于判断线要素是否起点终点相同:

2.1.10 新增force_2d()、force_3d()方法

  新增方法force_2d()force_3d(),用于将矢量列强制去除z轴坐标、强制添加z轴坐标:

2.1.11 新增voronoi_polygons()方法

  新增方法voronoi_polygons(),用于基于整体矢量列的所有顶点,快速生成泰森多边形:

2.1.12 新增contains_properly()方法

  新增方法contains_properly(),用于快捷判断矢量A是否严格包含矢量B,与contains()方法的区别是,contains_properly()不允许作比较的矢量间有任何公共点:

2.1.13 新增build_area()方法

  新增方法build_area(),用于基于一系列可以构成闭合面要素的线要素,整体生成合法的若干多边形:

2.1.14 新增snap()方法

  新增方法snap(),用于将满足距离阈值要求的要素A挂靠到对应的要素B之上:

2.1.15 新增transform()方法

  新增方法transform(),用于基于自定义坐标偏移函数,实现对矢量要素的坐标转换,其中自定义函数的输入为N行2列后N行3列的numpy数组,输出形状与输入一致即可,我们可以配合numpy中的apply_along_axis()实现自由的坐标点级别转换计算,而无需关心输入的要素是点线面中的哪种:

2.1.16 新增get_geometry()方法

  新增方法get_geometry(),用于将矢量列各要素视作多部件要素,进行快捷位序索引:

2.1.17 新增dwithin()方法

  新增方法dwithin(),用于快速判断矢量A是否在矢量B目标的指定距离内:

2.1.18 新增to_geo_dict()方法

  新增方法to_geo_dict(),用于将GeoDataFrame快捷转化为GeoJSON格式字典数据结构:

2.2 功能增强

  接下来我们来了解新版本中获得功能增强的一些主要API:

2.2.1 空间连接新增dwithin型空间关系判断

  针对sjoin()方法,新增了dwithin型空间关系判断,使得我们可以在geopandas中真正意义上直接实现“匹配与目标要素距离在XXX以内的纪录行”:

2.2.2 配合pd.read_csv指定矢量列类型

  在新版本中,我们可以将GeoDataFrame写出为csv格式,并在使用pd.read_csv()读取时,通过dtype参数将对应列指定解析为矢量类型:

2.2.3 to_json()新增参数show_bbox、drop_id、to_wgs84

  针对GeoDataFrame.to_json(),新增参数show_bboxdrop_idto_wgs84,实现更为定制化的GeoJSON转化:

demo_gdf = gpd.GeoDataFrame(
    {
        'name': ['示例要素'],
        'geometry': [Point(106, 29)]
    },
    crs='EPSG:4524'
)
print(demo_gdf.to_json(
    ensure_ascii=False,
    indent=4,
    show_bbox=True,
    drop_id=True,
    to_wgs84=False
))

2.2.4 空间连接新增参数on_attribute

  针对GeoDataFrame.sjoin(),新增参数on_attribute,用于额外施加常规表连接中的指定字段相等条件,相当于设置有效的on_attribute参数后,空间连接的结果将既满足空间关系,又满足字段匹配关系:

2.3 标记为废弃的API

  新版本中也新增了一系列标记为废弃的API,将会在未来某个版本正式移除,请注意及时调整你的相关代码逻辑,其中主要的有:

  • unary_union将废弃,更换为union_all()
  • use_pygeos将废弃并在1.1版本中正式移除

  由于pygeos已经合并入geopandas底层矢量计算所依赖的新版shapely中,因此对应的use_pygeos设置项也将退出历史舞台:

  • crs属性赋值以修改坐标系的方式将在未来版本被禁用,请统一使用set_crs()代替

  篇幅有限,未能详尽介绍全部新版本内容,完整的更新日志请移步:https://github.com/geopandas/geopandas/releases/tag/v1.0.0


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

与(数据科学学习手札162)Python GIS神器geopandas 1.0版本发布相似的内容:

(数据科学学习手札162)Python GIS神器geopandas 1.0版本发布

本文完整代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,就在昨天,Python生态中著名的GIS分析库geopandas发布了其1.0.0正式版本。 历经10年迭代升级,geopa

(数据科学学习手札161)高性能数据分析利器DuckDB在Python中的使用

本文完整代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,就在几天前,经过六年多的持续开发迭代,著名的开源高性能分析型数据库DuckDB发布了其1.0.0正式版本。 DuckDB具有

(数据科学学习手札160)使用miniforge代替miniconda

本文已收录至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,conda作为Python数据科学领域的常用软件,是对Python环境及相关依赖进行管理的经典工具,通常集成在anaconda或minic

金融大模型落地新挑战

文章学习:外滩大会 | 金智塔科技首席科学家郑小林教授出席大会探讨金融大模型落地新挑战 大模型的构建非常依赖算料、算力,对高校而言,从模型合规性、隐私保护的角度去做研究是很好的切入点。依托浙大科研团队,金智塔科技在大模型的研究中发现绝大多数的数据都分布在客户手中,比如金融机构场景建设需要用到政务数据

算法金 | A - Z,115 个数据科学 机器学习 江湖黑话(全面)

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 机器学习本质上和数据科学一样都是依赖概率统计,今天整整那些听起来让人头大的机器学习江湖黑话 A - C A/B Testing (A/B 测试) A/B测试是一种在线实验,通过对比测试两

【pandas基础】--数据整理

pandas进行数据整理的意义在于,它是数据分析、数据科学和机器学习的前置步骤。 通过数据整理可以提前了解数据的概要,缺失值、重复值等情况,为后续的分析和建模提供更为可靠的数据基础。 本篇主要介绍利用pandas进行数据整理的各种方法。 1. 数据概要 获取数据概要信息可以帮助我们了解数据的基本情况

算法金 | 选择最佳机器学习模型的 10 步指南

大侠幸会,在下全网同名[算法金] 0 基础转 AI 上岸,多个算法赛 Top [日更万日,让更多人享受智能乐趣] 机器学习和数据科学领域的工作充满挑战和乐趣,在我踏上人工智能探索之路的初期,我对能够参与项目感到无比兴奋。 我满怀热情,我急切地想投身于这些项目中。但是,我尝试开展项目,却发现在寻求顺利

算法金 | 一文彻底理解机器学习 ROC-AUC 指标

​ 大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 在机器学习和数据科学的江湖中,评估模型的好坏是非常关键的一环。而 ROC(Receiver Operating Characteristic)曲线和 AUC(Area Under C

从零在win10上测试whisper、faster-whisper、whisperx在CPU和GPU的各自表现情况

Anaconda是什么? Anaconda 是一个开源的 Python 发行版本,主要面向数据科学、机器学习和数据分析等领域。它不仅包含了 Python 解释器本身,更重要的是集成了大量的用于科学计算、数据分析和机器学习相关的第三方库,并且提供了一个强大的包管理和环境管理工具——Conda。 通过C

Lakehouse 还是 Warehouse?(1/2)

Onehouse 创始人/首席执行官 Vinoth Chandar 于 2022 年 3 月在奥斯汀数据委员会发表了这一重要演讲。奥斯汀数据委员会是“世界上最大的独立全栈数据会议”,这是一个由社区驱动的活动,包括数据科学、数据工程、分析、机器学习 (ML)、人工智能 (AI) 等。 Vinoth C