如何优雅地选择一种地图变形方式

今天来填一下之前说了很久的坑,关于变形地图制作方法教程。本篇主要介绍五种方式制作Cartogram,至于你觉得哪一种最优雅就follow your heart了。

1 Cartogram简介

按照各区域单元属性值的区际比例,调整每个区域单元的几何面积,同时保持各个区域单元的空间邻接关系。 以这种方式制作的地图被称之为 Cartogram(变形地图),统计地图,扭曲地图,夸张地图等等。

摘自百度百科。

接下来给出一个样例。

地图慧样例

当然如果地图慧后面支持这个服务的话,应该就是第六种制作的方式。我相信非常优雅了。

2 ArcGIS Cartogram Toolbox

最早看到变形地图其实还是在Esri中国的CSDN博客和ArcGIS中国培训中心的网站上。不过后者改版后,就找不到博客链接了。而且据现在的博客,插件下载地址看着也有点问题。我之前已经下载过了。如果有人需要的话可以在下面的评论区留言提供邮箱或者从下面的百度网盘链接下载。

百度网盘链接

接下来讲一下安装和使用。

首先是运行这个exe。其实大部分都是直接Next,除了安装路径可以修改之外,这里就不详细描述了。当然exe上的93是暗示着这个插件其实原本是根据ArcGIS 9.3开发的,想用在10.0以上的版本的话,必须注册dll文件。

即打开CMD命令行,输入如下的命令。其实就是regsvr32 + dll存放的路径。

1
regsvr32“F:\ArcGIS Tools\Cartograms\BnchMrkCartogram.dll”

接下来就是将工具箱添加到ArcMap中即可使用。我们用一个样例数据来测试,样例数据来源于《全球变化科学研究数据出版系统》。

内蒙古自治区乡村人口迁出对植被影响数据集(2000-2010)

原始数据如上,但是主要的乡村人口迁出的数据有0值,ArcGIS工具箱输入参数需要注意三点。

  • 1.用于Cartogram字段的必须是整型(任何工具实现应该都需要为正值)。
  • 2.输出必须为geodatabase。
  • 3.修改工作空间,存储临时文件。

由于第一点,所以我们去除了0值的几个县市。选择2000年劳动变化为结果。颜色从黄到红,值是越来越大的。

接下来看工具截图和变形结果。

感谢下两篇相关内容的博客。

ArcGIS之Cartogram地图变形记

ArcGIS夸张地图之Cartogram

3 QGIS Cartogram插件

事实上在QGIS也可以做变形地图,QGIS是开源桌面GIS软件中的代表。关于QGIS的这个插件,我事实上已经在前面的Coding and Paper Letter的第一篇就提到了。

Coding and Paper Letter(一)

当然我这里用的是QGIS 3.0.2,好像做了版本迁移。

接着点击桌面界面上的图标(下图红框)。

接下来会跳出Cartogram3的界面。

然后进行运算。

这是QGIS简单可视化。

变形地图结果会自动生成在列表里,如果需要保存,只需要右击保存文件即可。

4 Cartogram in R

除了以上的两大桌面软件,R语言中也有Cartogram的包。最早是RCartogram(表示并不知道这个包)。还是今天随手在谷歌上搜索时,看到谢益辉大大曾经也关注过这个方面的,并介绍了这个包。

Cartogram:变形的地图

我自己依旧在之前的Coding and Paper Letter介绍过相关的R包。

Coding and Paper Letter(二)

首先是安装R包。这里就不具体写地址了,如果想了解请点击上面的博客链接。

1
install.packages('cartogram')

接下来就是开始撸一波代码了。

1
2
3
4
5
6
7
8
9
10
11
12
13
#载入所需要的包
library(cartogram)
library(rgeos)
library(maptools)
library(sp)

#读取数据同时可视化
nmgau <- readShapePoly("F:/R/demo/cartogram/mongoliaurbanmigration.shp")
spplot(nmgau, zcol = "ALabor2000")

#制作变形地图并可视化
nmgauca <- cartogram_cont(nmgau, weight = "ALabor2000", 10)
spplot(nmgauca, zcol = "ALabor2000")

cartogram_cont函数是核心,其实关键的参数与QGIS的插件工具很类似。具体的可以再查询帮助文档,结果如图。

代码运行后的信息。

至于结果保存成文件的话,需要用到其他空间数据的包。

5 GeoDa和geofacet

接下来的两种可视化方式,虽然也能被称为Cartogram,但是并非真正意义的Cartogram。

GeoDa是一个专门用于空间统计的软件,后面可能还会做些介绍。这里就单刀直入。在GeoDa打开数据后。

点击红框部分即可实现Cartogram。

对比上面的内容,就可以发现有所差距了。这里其实只是利用地理位置和大小重新渲染的气泡图。因此这也让我想到了类似的geofacet。geofacet是ggplot2的拓展包,专门用于地理分面,依旧在Coding and Paper Letter介绍过,详情见下面的博客。

Coding and Paper Letter(二十一)

不过目前为止geofacet只支持美国的州进行可视化,这里就没有选用geofacet进行可视化了。