Cartopy 简介与安装(转载)

Cartopy 简介与安装

将空间相关的数据展绘到地图上是常见的需求,实际上也早有一些软件或工具包来完成这样的工作。比较专业的程序如支持 Windows、UNIX/Linux 等多种操作系统的命令行工具 GMT(Generic Mapping Tools),Python 绘图工具 matplotlib 的扩展包 Basemap,地理信息系统使用的专业软件 ArcGIS 等。但在我看来,这些工具也都有些美中不足之处。

本文将介绍 Python 的制图工具包 Cartopy,以及它在各平台的安装过程。

Cartopy 简介

对于制作用于演示说明的地图而言,ArcGIS 毫无疑问是在大材小用,GMT 和 Basemap 相对而言比较合适。但 GMT 大多数时间还是在命令提示符界面(或终端)中使用,要集成到程序中比较困难;而作为 Python 2 的殉葬品,Basemap 将在 2020 年停止维护。因此,如果你在寻找一个在 Python 中使用的制图工具包,作为 Basemap 钦定的继承人,Cartopy 几乎就是最好的选择了。

Cartopy 是一个开源免费的第三方 Python 扩展包,由英国气象办公室的科学家们开发,支持 Python 2.7 和 Python 3,致力于使用最简单直观的方式生成地图,并提供对 matplotlib 友好的协作接口。该工具包使用 LGPLv3 协议,代码托管在 Github 网站上。

安装

使用 Anaconda

如果你正在使用 Python 的科学计算发行版 Anaconda,安装 Cartopy 非常容易。你只需要运行:

1$ conda install -c conda-forge cartopy

等待这个命令运行完毕,就能使用 Cartopy 了!

Linux 操作系统

在 Linux 上,安装 Cartopy 也很容易。Cartopy 依赖于 GEOS 和 PROJ.4 这两个包,所以需要首先安装所需的依赖:

1  $ sudo apt-get install libgeos-dev

2  $ sudo apt-get install libgeos++-dev

3 $ sudo apt-get install proj-bin

4 $ sudo apt-get install libproj-dev

然后使用 PIP 安装 Cartopy:

1$ pip install cartopy

Windows 操作系统

在 Windows 系统的计算机上,你还可以使用 PIP 来安装预编译包的 Wheel 包。安装 Cartopy 所需的包有:

pyproj:处理地图投影变形,Cartopy 基于它定义了丰富的地图投影;

pillow:Python 的图像处理包,读写和操作栅格图像;

pyshp:Python 实现的 ESRI Shapefile 读写包;

shapely:操作和分析空间地理对象;

cartopy:Cartopy 安装包,地图制图工具。

你可以在 UC Irvine 的页面上找到这些工具包针对 Windows 操作系统的预编译版本。下载适合你的安装包,然后按照以上清单的顺序将所需要的程序包安装到计算机中。例如,我使用的是 64 位的 Python 3.5,因此安装过程如下:

1 $ pip install pyproj-1.9.5.1-cp35-cp35m-win_amd64.whl

2 $ pip install Pillow-5.0.0-cp35-cp35m-win_amd64.whl

3 $ pip install pyshp‑1.2.12‑py2.py3‑none‑any.whl

4 $ pip install Shapely-1.6.4.post1-cp35-cp35m-win_amd64.whl

5 $ pip install Cartopy-0.16.0-cp35-cp35m-win_amd64.whl

数据源

Cartopy 可以读取 Shapefile 作为输入的数据源,并且原生支持由 Natural Earth 或 GSHHS 发布的开源地理数据。但为了保持 Cartopy 的精致小巧,该包并未附带任何地理数据。只有当你首次使用某个数据源时,它才会进行下载,并保存在数据目录下以备以后使用。

为了在离线的情况下也能使用 Cartopy,你可以将预下载的地图数据放在其指定的文件夹内。Cartopy 的配置信息保存在 cartopy.config 变量中,要查看数据文件夹位置,你可以在 Python 终端中运行以下命令:

1 >>> importcartopy

2 >>> print(cartopy.config['data_dir'])

你可以手动下载所需的数据并分门别类地放入 Cartopy 数据文件夹中。我已经下载并整理了常用的数据文件并打包为一个压缩文件,你可以解压后直接使用。它们包括:

1:10m、1:50m、1:110m 比例尺的海岸线;

1:10m、1:50m、1:110m 比例尺的海洋、陆地和岛屿;

1:10m、1:50m、1:110m 比例尺的湖泊、河流;

1:10m、1:50m、1:110m 比例尺的地理界线(赤道、回归线和极圈);

1:10m、1:50m、1:110m 比例尺的国家界线;

1:10m、1:50m、1:110m 比例尺的省、州界线;

1:10m、1:50m、1:110m 比例尺的主要城市。

Hello World

Cartopy 的工作流非常简单:设置地图投影,添加地图要素,最后显示地图。Cartopy 与 matplotlib 协作得很好,对于高阶的功能,你可以直接使用 matplotlib。

下面是一个 Cartopy 版本的 “Hello world”:

1 importmatplotlib.pyplotasplt

2 importcartopy.crsasccrs

3 # set projection

4 ax = plt.axes(projection=ccrs.Robinson(central_longitude=150))

5 # plot coastlines & gridlines

6 ax.coastlines()

7 ax.gridlines(linestyle='--')

8 # show figure

9 plt.show()

复制并运行以上命令,你将看到一副熟悉的世界地图。Cartopy 的使用就是这样,简单而直观!

世界地图

原文链接

气象家园

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容