Cartopy:替代 Basemap 的地理学家绘图工具

Python与开源GIS

Cartopy:替代 Basemap 的地理学家绘图工具

2020-03-02 作者: bukun 浏览: 1817 次

摘要: 背景说明 虽然地理学研究与GIS的工程人员都要处理地理信息、地图等方面的工作,但是他们所关心的问题不同,所以使用的工具也并不相同。GIS 工作者更关心高精度的数据与高质量绘图,但是地理学家则更希望在较大尺度上对地理现象进行说明与剖析。Basemap 与其后继的...

背景说明

虽然地理学研究与GIS的工程人员都要处理地理信息、地图等方面的工作,但是他们所关心的问题不同,所以使用的工具也并不相同。GIS 工作者更关心高精度的数据与高质量绘图,但是地理学家则更希望在较大尺度上对地理现象进行说明与剖析。Basemap 与其后继的 Cartopy 自带地理数据这一特征,大大简化了地图制图过程中准备数据的过程。

最初编写 Basemap 就是用来帮助和研究气候和天气预报的,当时 CDAT 是 Python 中唯一用于绘制地图投影数据的工具。多年来,Basemap 的功能随着各个学科(如生物学、地质学和地球物理学)的科学家的要求和贡献的新功能而演变。

Matplotlib-Basemap的用户长期以来一直受到一个有点问题的API的困扰,这使得跨平台共享地图绘制软件有时有点困难。为了兼容使用Python2.7,Basemap的维护非常简单。到2017年,Basemap被宣布弃用,CartoPy被指定为Basemap的替代品。CartoPy添加了一些特性来实现 Basemap不具备的特性。Basemap 在 2020 年前随着 Python 2.7 版本一直有更新维护的。2020 年以后 Python 2.7 将停止更新,Basemap 会 按照官方计划也迁移到 Cartopy 模块。

在 《Python与开源GIS》写作之时,Cartopy 还不太成熟(到2020年初版本为 0.17.0 ),而 Basemap 即使不再有更新维护,但依然可以有较长时间的支持,值得用心学习,所以依然对 Basemap 进行了介绍。但是如果是初学使用,可以考虑使用 Cartopy 作为替代,新用户和新项目应该使用基于 CartoPy 而不是 Basemap 。

Cartopy 介绍

Cartopy是一个Python包,用于地理空间数据处理,以便生成地图和其他地理空间数据分析。Cartopy 适合于地球科学家,特别是海洋学家和气象学家的需求。Cartopy对于大尺度/小比例尺数据制图特别有用,CartoPy 自带的数据(Shapefile 以及栅格数据)会在进行时下载并缓存。

Cartopy利用了强大的PROJ.4、NumPy和Shapely库,并在Matplotlib之上构建了一个编程接口,用于创建发布质量的地图。Cartopy的关键特性是其面向对象的投影定义,以及在这些投影之间转换点、线、向量、多边形和图像的能力。

CartoPy的安装使用更加容易,而 Basemap 是比较复杂的。当然开发人员已经打包好了安装程序,普通用户可能感觉不到。但是 Basemap 的复杂安装与部署的确是限制了跨平台以及添加新特征的可能性。

在 Debian / Ubuntu 中可以使用如下命令安装 Cartopy :

sudo apt install python3-cartopy

在 Windows 系统中, 可以在 Anaconda 中使用下面的命令安装:

conda install cartopy

Cartopy 的绘图能力

Carotpy 尽管主要是用于地图制图的,但是其绘图功能非常强大。首先是本文前面出现的 Cartopy 的 Logo , 是由 Cartopy 绘制的。

联合国的旗帜中间是北极为中心的地图形状,并配合有经纬度以及象征和平的橄榄枝,也可以由 Cartopy 绘制。

Cartopy 地图绘制的基本功能

与 Basemap 一样,Cartopy 同样基于 PROJ 地图投影库支持了大量的地图投影。可以绘制不同投影的地图:

在大尺度绘图方面,可以非常方便实现教学示意,如表现不同地图投影下的面积变形:

某一时刻的阳光照射范围示意:

下面这个也比较有意思 ,由 Cartopy 绘制的 UTM 分带的范围。这个对于理解投影分带非常有用。

数据成果的示意

当然地理学家者会更关心研究结果的表达。这个是矢量的流线图:

不同的可视化矢量场功能。

使用倒钩的符号的示例:

轮廓线的填充示例,模拟的温度的效果:

以及看起来更专业的不同结果的对比示意图:

关注“开源集思”公众号
获取免费资源

随机推荐


Copyright © 2014-2019 OSGeo中国中心 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org