教你4种制作Cartogram变形地图的方法
前几天发了一个Worldmapper网站做的全球疫情地图
有朋友留言问,这种地图效果应该如何制作,当时回复说可以用QGIS中的Cartogram来制作。刚好戴劭勍童鞋发给我了一篇他之前写的文章,介绍了4种制作这种变形地图的方法,今天给大家分享下。
以下是他的文章内容,部分内容有所删减。
ArcGIS Cartogram Toolbox
01
最早看到变形地图其实还是在Esri中国的CSDN博客和ArcGIS中国培训中心的网站上。不过后者改版后,就找不到博客链接了。而且据现在的博客,插件下载地址看着也有点问题。我之前已经下载过了。如果有人需要的话可以通过文末的下载链接进行下载。
软件下载后,就是这么一个安装包。
首先是运行这个exe。其实大部分都是直接Next,除了安装路径可以修改之外,这里就不详细描述了。当然exe上的93是暗示着这个插件其实原本是根据ArcGIS 9.3开发的。想用在10.0以上的版本的话,必须注册dll文件。
即打开CMD命令行,输入如下的命令。
regsvr32“F:\ArcGIS Tools\Cartograms\BnchMrkCartogram.dll”
其实就是regsvr32 + dll存放的路径。
接下来就是将工具箱添加到ArcMap中即可使用。接下来我们用一个样例数据来测试下,样例数据来源于《全球变化科学研究数据出版系统》。
数据集
内蒙古自治区乡村人口迁出对植被影响数据集(2000-2010)
下载地址
http://geodoi.ac.cn/WebCn/doi.aspx?Id=535)
原始数据如上,但是主要的乡村人口迁出的数据有0值,ArcGIS工具箱输入参数需要注意三点。
1.用于Cartogram字段的必须是整型(任何工具实现应该都需要为正值)。
2.输出必须为geodatabase。
3.修改工作空间,存储临时文件。
由于第一点,所以我们去除了0值的几个县市。选择2000年劳动变化为结果。颜色从黄到红,值是越来越大的。
接下来我们在工具面板中做个基本设置,如下图所示。
然后就可以得到变形地图啦。
QGIS Cartogram插件
02
在QGIS中有一个专门的Cartogram插件,可以直接在插件库中进行搜索安装。
接着点击软件界面上的图标(下图箭头所指的功能按钮),就会跳出Cartogram3的界面。
程序默认提供2个示例数据,当然你也可以换成你自己的数据(下图中使用的是内蒙古数据),简单设置下参数就可以制作出变形效果了。
Cartogram in R
03
除了以上的两大桌面软件,R语言中也有Cartogram的包。应该如何使用呢?
首先是安装R包。
install.packages('cartogram')
接下来就是开始撸一波代码了。
#载入所需要的包
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的插件工具很类似。具体的可以再查询帮助文档,结果如图。
代码运行后的信息。
图形运行后的效果。
至于结果保存成文件的话,需要用到其他空间数据的包。
GeoDa
04
GeoDa是一款专门用于空间统计的软件,在软件中也有一个对应的功能按钮可以用来制作类似的效果。点击下图红框按钮即可实现Cartogram。
将这个效果与上面的变形效果进行对比,可以发现它们是有所差距了。这里其实只是利用地理位置和大小重新渲染的气泡图。
相对而言,推荐大家使用第二种方法,QGIS的Cartogram插件。
更多有关Cartogram的应用,可以去Worldmapper官网进行查看。
另外微信公众号现在支持了搜索功能,可以通过下面的关键字搜索下你感兴趣的文章。
链接:
https://pan.baidu.com/s/1V-op4e1Km8OUKBmGx9C0pQ
提取码:9bcu