今天來填一下之前說了很久的坑酬核,關(guān)于變形地圖制作方法教程蜜另。本篇主要介紹五種方式制作Cartogram,至于你覺得哪一種最優(yōu)雅就follow your heart了嫡意。
1 Cartogram簡介
按照各區(qū)域單元屬性值的區(qū)際比例举瑰,調(diào)整每個區(qū)域單元的幾何面積,同時保持各個區(qū)域單元的空間鄰接關(guān)系蔬螟。 以這種方式制作的地圖被稱之為 Cartogram(變形地圖)此迅,統(tǒng)計地圖,扭曲地圖,夸張地圖等等耸序。
摘自百度百科忍些。
接下來給出一個樣例。
當(dāng)然如果地圖慧后面支持這個服務(wù)的話坎怪,應(yīng)該就是第六種制作的方式罢坝。我相信非常優(yōu)雅了。
2 ArcGIS Cartogram Toolbox
最早看到變形地圖其實還是在Esri中國的CSDN博客和ArcGIS中國培訓(xùn)中心的網(wǎng)站上搅窿。不過后者改版后嘁酿,就找不到博客鏈接了。而且據(jù)現(xiàn)在的博客男应,插件下載地址看著也有點問題闹司。我之前已經(jīng)下載過了。如果有人需要的話可以在下面的評論區(qū)留言提供郵箱或者從下面的百度網(wǎng)盤鏈接下載沐飘。
接下來講一下安裝和使用开仰。
首先是運(yùn)行這個exe。其實大部分都是直接Next薪铜,除了安裝路徑可以修改之外众弓,這里就不詳細(xì)描述了。當(dāng)然exe上的93是暗示著這個插件其實原本是根據(jù)ArcGIS 9.3開發(fā)的隔箍,想用在10.0以上的版本的話谓娃,必須注冊dll文件。
即打開CMD命令行蜒滩,輸入如下的命令滨达。其實就是regsvr32 + dll存放的路徑。
regsvr32“F:\ArcGIS Tools\Cartograms\BnchMrkCartogram.dll”
接下來就是將工具箱添加到ArcMap中即可使用俯艰。我們用一個樣例數(shù)據(jù)來測試捡遍,樣例數(shù)據(jù)來源于《全球變化科學(xué)研究數(shù)據(jù)出版系統(tǒng)》。
內(nèi)蒙古自治區(qū)鄉(xiāng)村人口遷出對植被影響數(shù)據(jù)集(2000-2010)
原始數(shù)據(jù)如上竹握,但是主要的鄉(xiāng)村人口遷出的數(shù)據(jù)有0值画株,ArcGIS工具箱輸入?yún)?shù)需要注意三點。
- 1.用于Cartogram字段的必須是整型(任何工具實現(xiàn)應(yīng)該都需要為正值)啦辐。
- 2.輸出必須為geodatabase谓传。
- 3.修改工作空間,存儲臨時文件芹关。
由于第一點续挟,所以我們?nèi)コ?值的幾個縣市。選擇2000年勞動變化為結(jié)果侥衬。顏色從黃到紅诗祸,值是越來越大的跑芳。
接下來看工具截圖和變形結(jié)果。
感謝下兩篇相關(guān)內(nèi)容的博客直颅。
3 QGIS Cartogram插件
事實上在QGIS也可以做變形地圖博个,QGIS是開源桌面GIS軟件中的代表。關(guān)于QGIS的這個插件际乘,我事實上已經(jīng)在前面的Coding and Paper Letter的第一篇就提到了坡倔。
當(dāng)然我這里用的是QGIS 3.0.2,好像做了版本遷移脖含。
接著點擊桌面界面上的圖標(biāo)(下圖紅框)罪塔。
接下來會跳出Cartogram3的界面。
然后進(jìn)行運(yùn)算养葵。
這是QGIS簡單可視化征堪。
變形地圖結(jié)果會自動生成在列表里,如果需要保存关拒,只需要右擊保存文件即可佃蚜。
4 Cartogram in R
除了以上的兩大桌面軟件,R語言中也有Cartogram的包着绊。最早是RCartogram(表示并不知道這個包)谐算。還是今天隨手在谷歌上搜索時,看到謝益輝大大曾經(jīng)也關(guān)注過這個方面的归露,并介紹了這個包洲脂。
我自己依舊在之前的Coding and Paper Letter介紹過相關(guān)的R包。
首先是安裝R包剧包。這里就不具體寫地址了恐锦,如果想了解請點擊上面的博客鏈接。
install.packages('cartogram')
接下來就是開始擼一波代碼了疆液。
#載入所需要的包
library(cartogram)
library(rgeos)
library(maptools)
library(sp)
#讀取數(shù)據(jù)同時可視化
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函數(shù)是核心一铅,其實關(guān)鍵的參數(shù)與QGIS的插件工具很類似。具體的可以再查詢幫助文檔堕油,結(jié)果如圖潘飘。
代碼運(yùn)行后的信息。
至于結(jié)果保存成文件的話馍迄,需要用到其他空間數(shù)據(jù)的包福也。
5 GeoDa和geofacet
接下來的兩種可視化方式,雖然也能被稱為Cartogram攀圈,但是并非真正意義的Cartogram。
GeoDa是一個專門用于空間統(tǒng)計的軟件峦甩,后面可能還會做些介紹赘来。這里就單刀直入现喳。在GeoDa打開數(shù)據(jù)后。
點擊紅框部分即可實現(xiàn)Cartogram犬辰。
對比上面的內(nèi)容嗦篱,就可以發(fā)現(xiàn)有所差距了。這里其實只是利用地理位置和大小重新渲染的氣泡圖幌缝。因此這也讓我想到了類似的geofacet灸促。geofacet是ggplot2的拓展包,專門用于地理分面涵卵,依舊在Coding and Paper Letter介紹過浴栽,詳情見下面的博客。
不過目前為止geofacet只支持美國的州進(jìn)行可視化轿偎,這里就沒有選用geofacet進(jìn)行可視化了典鸡。