(数据科学学习手札140)详解geopandas中基于pyogrio的矢量读写引擎

大家好我是费老师,前不久我在一篇文章中给大家分享过 geopandas在其0.11版本中为我们带来的一些重要新特性,其中提到过新的矢量读写后端,使得我们在 read_file()以及 to_file()中添加参数 engine='pyogrio'即可获得500%的性能提升。

而新引擎带来的不仅是性能上的大幅提升,还带来了诸多实用功能以方便我们读写常见矢量文件,今天我就来给大家详细介绍这些新功能。

geopandas0.11版本之后新增的 pyogrio引擎,基于 geopandas团队开发的同名 Python库,其基于 OGR,而 OGR则是著名的开源栅格空间数据转换框架 GDAL的重要分支库,专注于矢量数据的高性能转换。

2.1 基于pyogrio的矢量文件读取

对于0.11及以后版本的 geopandas,向 read_file()中传入 engine='pyogrio'后,即可切换至底层基于 pyogrio.read_dataframe()的读取引擎,获取大幅度性能提升的同时也拥有了众多的新功能参数,其中比较实用的有:

开启 pyogrio引擎后,我们可以通过设置参数 columns来读入指定的若干字段,当你的矢量文件有很多无关紧要的字段时,可以利用此特性来整洁数据以及减少读入数据的内存消耗:

如果你不需要矢量文件中的矢量信息,只需要将其当作普通表格数据进行读入,开启 pyogrio引擎后,设置 read_geometry=False即可,所形成对象的类型也会变为普通的 DataFrame

有些情况下,矢量数据中的坐标信息带有z轴高度信息,如果分析过程中用不上该维度信息,可以在开启 pyogrio引擎后设置 force_2d=True强制转换为2D矢量,非常方便:

在开启 pyogrio引擎后,通过设置参数 skip_features可以控制从数据第0行开始需要跳过的要素记录数量:

而通过设置参数 max_features则可以控制最多读取多少行要素记录,当我们的矢量文件记录行很多,而我们又只想简单查看几行看看数据长什么样时,这个参数就很实用了:

这个新特性非常实用,我们可以像写 SQL查询语句那样传入我们的过滤条件,从而帮助我们在读取数据时就实现比较丰富自由的条件过滤效果,值得注意的是,针对中文等由unicode字符构成的字段名,需要将其包裹在 ""中进行定义,参考下图中我的做法:

前面我们介绍了多种用于过滤原数据的实用参数,而在在开启 pyogrio引擎后还有个非常实用的参数 sql,可以帮助我们直接书写 SQL语句对原数据进行提取(注意,其执行顺序先于上述其他过滤类参数):

但要注意的是,目前 pyogrio引擎的 sql参数,在读取诸如含有中文等unicode字符信息的 shapefile文件时,不能正常的解析内容,而针对 GeoJSONgpkg等其他格式矢量文件时则一切正常:

  • GeoJSON文件正常

  • gpkg文件正常

  • shapefile文件乱码,亲测即使指定 encoding也无效

所以现阶段建议读取 shapefile文件时,可以使用 columns+ where的组合方式代替 sql以实现同样的效果。

2.2 基于pyogrio的矢量文件写出

相较于文件的读取,新引擎中涉及文件写出的功能参数就寡淡很多,只发现一个比较特别的 promote_to_multi参数,用于强制将单部件要素转换为多部件要素:

2.3 pyogrio引擎支持的所有矢量文件类型

你可以通过 pyogrio.list_drivers()查看新引擎所支持的全部矢量文件格式,基本上只有你想不到没有它覆盖不到😂:

更多相关内容,可以前往 https://pyogrio.readthedocs.io/en/latest/api.html?#geopandas-integration阅读了解更多。

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

Original: https://www.cnblogs.com/feffery/p/16459024.html
Author: 费弗里
Title: (数据科学学习手札140)详解geopandas中基于pyogrio的矢量读写引擎

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/9156/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部