今天來填一下以前說了好久的坑,關於變形地圖製做方法教程。本篇主要介紹五種方式製做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進行可視化了。