今天来填一下以前说了好久的坑,关于变形地图制做方法教程。本篇主要介绍五种方式制做Cartogram,至于你以为哪种最优雅就follow your heart了。html
按照各区域单元属性值的区际比例,调整每一个区域单元的几何面积,同时保持各个区域单元的空间邻接关系。 以这种方式制做的地图被称之为 Cartogram(变形地图),统计地图,扭曲地图,夸张地图等等。git
摘自百度百科。github
接下来给出一个样例。app
地图慧样例函数
固然若是地图慧后面支持这个服务的话,应该就是第六种制做的方式。我相信很是优雅了。工具
最先看到变形地图其实仍是在Esri中国的CSDN博客和ArcGIS中国培训中心的网站上。不事后者改版后,就找不到博客连接了。并且据如今的博客,插件下载地址看着也有点问题。我以前已经下载过了。若是有人须要的话能够在下面的评论区留言提供邮箱或者从下面的百度网盘连接下载。测试
百度网盘连接网站
接下来说一下安装和使用。ui
首先是运行这个exe。其实大部分都是直接Next,除了安装路径能够修改以外,这里就不详细描述了。固然exe上的93是暗示着这个插件其实本来是根据ArcGIS 9.3开发的,想用在10.0以上的版本的话,必须注册dll文件。.net
即打开CMD命令行,输入以下的命令。其实就是regsvr32 + dll存放的路径。
regsvr32“F:\ArcGIS Tools\Cartograms\BnchMrkCartogram.dll”
接下来就是将工具箱添加到ArcMap中便可使用。咱们用一个样例数据来测试,样例数据来源于《全球变化科学研究数据出版系统》。
内蒙古自治区乡村人口迁出对植被影响数据集(2000-2010)
原始数据如上,可是主要的乡村人口迁出的数据有0值,ArcGIS工具箱输入参数须要注意三点。
- 1.用于Cartogram字段的必须是整型(任何工具实现应该都须要为正值)。
- 2.输出必须为geodatabase。
- 3.修改工做空间,存储临时文件。
因为第一点,因此咱们去除了0值的几个县市。选择2000年劳动变化为结果。颜色从黄到红,值是愈来愈大的。
接下来看工具截图和变形结果。
感谢下两篇相关内容的博客。
事实上在QGIS也能够作变形地图,QGIS是开源桌面GIS软件中的表明。关于QGIS的这个插件,我事实上已经在前面的Coding and Paper Letter的第一篇就提到了。
固然我这里用的是QGIS 3.0.2,好像作了版本迁移。
接着点击桌面界面上的图标(下图红框)。
接下来会跳出Cartogram3的界面。
而后进行运算。
这是QGIS简单可视化。
变形地图结果会自动生成在列表里,若是须要保存,只须要右击保存文件便可。
除了以上的两大桌面软件,R语言中也有Cartogram的包。最先是RCartogram(表示并不知道这个包)。仍是今天随手在谷歌上搜索时,看到谢益辉大大曾经也关注过这个方面的,并介绍了这个包。
我本身依旧在以前的Coding and Paper Letter介绍过相关的R包。
首先是安装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的插件工具很相似。具体的能够再查询帮助文档,结果如图。
代码运行后的信息。
至于结果保存成文件的话,须要用到其余空间数据的包。
接下来的两种可视化方式,虽然也能被称为Cartogram,可是并不是真正意义的Cartogram。
GeoDa是一个专门用于空间统计的软件,后面可能还会作些介绍。这里就单刀直入。在GeoDa打开数据后。
点击红框部分便可实现Cartogram。
对比上面的内容,就能够发现有所差距了。这里其实只是利用地理位置和大小从新渲染的气泡图。所以这也让我想到了相似的geofacet。geofacet是ggplot2的拓展包,专门用于地理分面,依旧在Coding and Paper Letter介绍过,详情见下面的博客。
不过目前为止geofacet只支持美国的州进行可视化,这里就没有选用geofacet进行可视化了。