• (数据科学学习手札139)geopandas 0.11版本重要新特性一览


    🚀 优质资源分享 🚀

    学习路线指引(点击解锁)知识定位人群定位
    🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes

    1 简介

    大家好我是费老师,就在几天前,geopandas发布了其0.11.0正式版本,距离其上一个版本(0.10.2)发布已过去大半年,在这一次的新版本更新中又为我们带来了哪些重要的新特性呢,今天的文章中我就来带大家一探究竟😋。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jd22dZLw-1656132767543)(https://img2022.cnblogs.com/blog/1344061/202206/1344061-20220625093327776-1309769198.svg)]

    2 geopandas 0.11版本重要新特性一览

    你可以在旧版本geopandas的基础上进行升级,也可以新建虚拟环境直接安装0.11.0版本,本着谨慎尝鲜的原则,我们可以使用下面的命令一口气完成新虚拟环境的创建、geopandas及其相关依赖的安装,并安装上jupyterlab作为IDE进行演示:

    conda create -n geopandas-env python=3.8 -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main -y
    conda activate geopandas-env
    conda install geopandas=0.11.0 pygeos pyogrio -c conda-forge -y
    pip install jupyterlab -i https://pypi.douban.com/simple/
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    终端里执行下列命令验证一下是否已正确安装:

    python -c "import geopandas as gpd;print(gpd.\_\_version\_\_)"
    
    
    • 1
    • 2


      一切准备就绪,下面我们来一览此次更新中比较重要的几个特性:

    2.1 更快的矢量文件读写

    新版本中为read_file()to_file()引入了参数engine用于指定读写常见矢量文件基于的引擎,默认为原先的'fiona',可选'pyogrio',这是由geopandas开发团队维护的另一个库,可大幅度提升对常见矢量文件格式如shapefile的读写速度,以读取具有数百万个多边形的广州市全量建筑物轮廓数据为例,新的IO引擎带来近5倍的读取性能提升:


      以及同样接近5倍的写出性能提升:

    2.2 新增高性能矩形裁切方法clip_by_rect()

    0.11中新增针对GeoSeriesGeoDataFrame的方法clip_by_rect(minx, miny, maxx, maxy),可传入目标矩形坐标范围,快速裁切出矩形范围内的矢量,譬如我们基于前面已经读入的广州市建筑物轮廓数据,通过下面的函数随机生成边长10000米的矩形范围作为裁切素材:

    import numpy as np
    import matplotlib.pyplot as plt
    from shapely.geometry import box
    
    # 计算得到目标GeoDataFrame范围
    minx, miny, maxx, maxy = gdf.total_bounds
    
    def generate\_random\_rectangle(minx, miny, maxx, maxy):
        '''
     研究范围内随机取得100000米边长矩形
     '''
        
        random_rectangle = [
            np.random.uniform(minx, maxx - 10000),
            np.random.uniform(miny, maxy - 10000)
        ]
    
        return [
            *random_rectangle,
            random_rectangle[0] + 10000,
            random_rectangle[1] + 10000,
        ]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    调用clip_by_rect()


      返回的结果与原始矢量记录数量一致,其中呈现GEOMETRYCOLLECTION EMPTY的记录说明其与目标矩形没有交集,我们利用is_empty来反向筛选出发生裁切的矢量记录:


      除此之外,你还可以直接将[minx, miny, maxx, maxy]格式的输入传入经典的clip()裁切方法中,它会在底层直接调用clip_by_rect()并自动返回有效矢量裁切结果:

    2.3 正确读写GIS文件中的日期时间字段

    0.11.0版本开始,geopandas在面对日期时间型字段时,无论是写出到GIS文件还是从GIS文件读入,都可以保证正确解析为日期时间型:


      你可以在https://github.com/geopandas/geopandas/releases/tag/v0.11.0查看完整的版本更新说明,总体而言,这次新版本更新带来的重要更新并不太多,但都颇为实用,你可以在自己的数据上使用一番。


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

  • 相关阅读:
    自定义线程池+countdownlatch
    10 数组和指针
    C8051F020 SMBus一直处于busy状态解决办法
    Java基础—反射
    睿趣科技:新手无货源怎么开抖音小店
    CentOS8安装MySQL
    教程|你不知道的监控项预处理流程逻辑
    9月第1周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!
    机器学习的第一节基本概念的相关学习
    别处拿来的VUE项目 npm run serve报错
  • 原文地址:https://blog.csdn.net/xuhss_com/article/details/125458068