当前位置: 首页 > 科技观察

Geopandas0.11版重要新特性列表

时间:2023-03-20 00:31:30 科技观察

大家好。我是费老师。就在几天前,geopandas发布了0.11.0正式版。自上一个版本(0.10.2)发布以来已经过去半年多了。本次新版本更新为我们带来了哪些重要的新特性?在今天的文章中,我将带您一探究竟。Geopandas0.11版重要新特性列表您可以升级旧版本的geopandas,也可以创建新的虚拟环境并直接安装0.11.0版。本着谨慎尝鲜的原则,我们可以使用如下命令一次性完成新虚拟环境的创建,安装geopandas及其相关依赖,安装jupyterlab作为IDE进行演示:condacreate-ngeopandas-envpython=3.8-chttps://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main-ycondaactivategeopandas-envcondainstallgeopandas=0.11.0pygeospyogrio-cconda-forge-ypipinstalljupyterlab-ihttps://pypi.douban.com/simple/在终端执行如下命令验证是否安装正确:python-c"importgeopandasasgpd;print(gpd.__version__)"万事俱备,我们来一个查看本次更新的一些比较重要的特性:1.更快的矢量文件读写新版本在read_file()和to_file()中引入了参数engine来指定基于普通矢量文件读写的引擎,默认是原始的'fiona',可选的'pyogrio',which是geopandas开发团队维护的另一个库,可以大大提高shapefiles等常见矢量文件格式的读写速度。以读取广州市百万多边形的全量建筑轮廓数据为例。新的IO引擎带来近5倍的读取性能提升:同样是近5倍的写入性能提升:2.新的高性能矩形裁剪方法clip_by_rect()在0.11中,新方法clip_by_rect(minx,miny,maxx,maxy)对于GeoSeries和GeoDataFrame可以在目标矩形的坐标范围内传入,快速切出矩形范围内的向量。例如,根据我们读入的广州建筑物轮廓数据,使用如下函数随机生成一个边长为10000米的矩形范围作为裁剪素材:importnumpyasnpimportmatplotlib。pyplot作为pltfromshapely.geometryimportbox#计算目标GeoDataFrame范围minx,miny,maxx,maxy=gdf.total_boundsdefgenerate_random_rectangle(minx,miny,maxx,maxy):'''在研究区域内随机获取一个边长为10万米的矩形'''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,]调用clip_by_rect():返回结果与原始向量记录数一致。其中,显示GEOMETRYCOLLECTIONEMPTY的记录表示它与目标矩形没有交集。我们使用is_empty来反滤掉裁剪后的向量记录:另外,也可以直接将格式为[minx,miny,maxx,maxy]的Input传给经典的clip()裁剪方法,会直接调用clip_by_rect()并自动返回一个有效的矢量裁剪结果:3.正确读写GIS文件GIS的日期时间字段从0.11.0版本开始。当geopandas面对日期时间字段时,无论是写入GIS文件还是从GIS文件读取,都可以正确解析为日期时间类型:可以在https://github.com/geopandas找到/geopandas/releases/tag/v0.11.0查看完整的版本更新说明。总的来说,本次新版本更新带来的重要更新不多,但是相当实用。你可以在你自己的数据上使用它