天天看点

(数据科学学习手札111)geopandas 0.9.0重要新特性一览

本文示例文件已上传至我的<code>Github</code>仓库https://github.com/CNFeffery/DataScienceStudyNotes

  就在几天前,<code>geopandas</code>释放了其最新正式版本<code>0.9.0</code>,作为一次比较大的版本更新,<code>geopandas</code>为我们带来了一系列新特性,今天的文章我们就来一起看看有哪些主要的功能变化吧~

(数据科学学习手札111)geopandas 0.9.0重要新特性一览

图1

  出于对稳定性的考虑,我选择新建虚拟环境来探索新版本<code>geopandas</code>,完整命令如下(顺便一提,<code>0.9.0</code>版本最低支持的<code>Python</code>版本为<code>3.5</code>):

  在以前的版本中,当我们的矢量文件存放在<code>zip</code>压缩包内时,使用<code>gpd.read_file()</code>直接读取时需要传入特殊格式的<code>zip</code>路径表达式(详见我以前撰写的<code>geopandas</code>系列教程文件IO篇),但在<code>0.9.0</code>版本中,当你的<code>zip</code>压缩包内只有单一图层的文件时,直接就可读取:

(数据科学学习手札111)geopandas 0.9.0重要新特性一览

图2

  在以前版本的<code>geopandas</code>中,是没有直接的<code>API</code>来与<code>wkt/wkb</code>格式进行交互的,往往需要配合<code>shapely</code>中的相关功能。

  而在这次的更新中针对<code>GeoSeries</code>对象新增了<code>from_wkt()</code>、<code>from_wkb()</code>、<code>to_wkt()</code>以及<code>to_wkb()</code>四种方法,使得我们直接就可以轻松完成格式转换:

(数据科学学习手札111)geopandas 0.9.0重要新特性一览

图3

  在以前版本中,我们可以对点要素构成的<code>GeoSeries</code>或<code>GeoDataFrame</code>提取<code>x</code>与<code>y</code>坐标属性,而在这次的更新中,额外新增了对高度<code>z</code>属性的支持:

(数据科学学习手札111)geopandas 0.9.0重要新特性一览

图4

  我在<code>geopandas</code>系列教程空间计算篇(上)带大家学习过用于对不同记录行矢量要素,按照某列或多列进行矢量融合的方法<code>dissolve()</code>,而新版本中的<code>dissolve()</code>中的<code>by</code>参数默认值为None,这时会不依赖任何其他字段,直接把所有记录行矢量要素融合为一行,非常的方便:

(数据科学学习手札111)geopandas 0.9.0重要新特性一览

图5

  不管你的<code>GeoDataFrame</code>或<code>GeoSeries</code>坐标参考系是什么,只要是合法可解析的,通过<code>geopandas</code>新版中增加的<code>estimate_utm_crs()</code>方法,都可以自动帮你推断最合适的经度带对应的横轴墨卡托投影坐标系:

(数据科学学习手札111)geopandas 0.9.0重要新特性一览

图6

  我在<code>geopandas</code>系列教程空间计算篇(上)中还介绍过与<code>dissolve()</code>方法相反的<code>explode()</code>方法,它可以将多要素集合类型的<code>GeoDataFrame</code>或<code>GeoSeries</code>自动拆分为每行包含单要素的结果,但熟悉<code>pandas</code>的小伙伴一定知道在<code>pandas</code>中有同名方法,用于将元素为数组类型如列表的单行记录拆成单元素构成的多行记录。

  而以前版本<code>geopandas</code>中的<code>explode()</code>方法是不兼容<code>pandas</code>的,这意味着如果你既需要多部件矢量要素拆分,又需要按照数组型元素拆分,就得在<code>geopandas</code>与<code>pandas</code>的数据结构之间转来转去,但新版本中两者得到了完美兼容~

(数据科学学习手札111)geopandas 0.9.0重要新特性一览

图7

  用过<code>geopandas</code>绘制面要素的朋友都知道,以前版本的<code>geopandas</code>是需要第三方依赖库<code>descartes</code>,但在<code>0.9.0</code>版本中再也不需要啦!

(数据科学学习手札111)geopandas 0.9.0重要新特性一览

图8

  除此之外,<code>geopandas</code>还提供了很多小的新特性,这里就不再一一赘述,感兴趣的读者朋友可以在<code>https://github.com/geopandas/geopandas/releases/tag/v0.9.0</code>详细查看。

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