1. 程式人生 > 實用技巧 >OD流向地圖的繪製——利用ArcGIS與Gephi方法

OD流向地圖的繪製——利用ArcGIS與Gephi方法

1 資料準備

一共有347個城市構成的矩陣,行代表從行標籤流出到列標籤,列代表從列標籤流入到行標籤,注意,這不是對稱矩陣

對於34個省級行政單元也是如此

收集整理城市、省的節點資料,節點必須要有ID 經緯度 標籤(也就是名稱),可以選擇性新增節點的屬性列作為權重指標並另存為Nodes.csv:(存成csv就好)

同時需要將矩陣轉換為邊表的形式

MATLAB程式碼如下:

clear all
[data,text]  = xlsread("H:\02Course\00DATA\表格\原始\原始資料\City-level data.xlsx");
[data1,text1]  = xlsread("H:\02Course\00DATA\表格\citylinlat_347個城市.xlsx");%347個
count=length(data);
name=string(text(2:count));
name=name';
out=[];
s=[];
t=[];
num=1;
for i = 1:count
    for j=1:count
        s(num,1)=data1(i,1);%SourceID
        s(num,2)=data1(i,8);%Source lng
        s(num,3)=data1(i,9);%Source lat
        t(num,1)=data1(j,1);%TargetID
        t(num,2)=data1(j,8);%Target lng
        t(num,3)=data1(j,9);%Target lat
        out(num)=data(i,j);%From Source To Target Weight
        num=num+1;
    end
end
xlswrite('cityout.xlsx',s,1,'A2');
xlswrite('cityout.xlsx',t,1,'D2');
xlswrite('cityout.xlsx',out',1,'G2');

一共有120409條記錄,沒想到資料量比較大  

轉為只用id表示邊的起始和終點的形式,首列首行自己填入即可,另存為Edges.csv:(csv格式即可)

省也是:

可以對流(邊)的數值為0的記錄進行剔除,這樣一方面減少資料冗餘,避免在軟體中資料量過大軟體卡死,另外是考慮到節點之間沒有聯絡的話可以不存在這一流

直接在excel中篩選即可

篩選後城市邊的記錄數為6704,比之前的12萬左右減少了很多

篩選後省的邊的記錄數為737,比1156也少了幾百條記錄

2 在Gephi中視覺化表達

安裝Gephi請參照:https://www.cnblogs.com/icydengyw/p/13962285.html

安裝GeoLayout和Map Of Countries 外掛

1 匯入電子表格,先匯入城市節點citynodes.csv,選擇節點表格

需要注意節點表格的列標籤需要為:

2 再匯入城市邊表格 cityedges.csv

注意邊表格最好處理為以下形式,即刪除其他的表述目標和源點的經緯度資料啥的:

注意圖的型別選擇混合型即可,這裡有些玄學,需要多嘗試emmm

調整格式,根據節點的幾個屬性分別設定節點的顏色,節點的大小尺寸,這個不能在ArcGIS中同時實現好像

然後邊的顏色也可以根據權重設定,也可以直接使用流出的節點的顏色

在預覽中:

匯出為pdf或者svg向量格式:

可以明顯看見是缺乏中國南海和臺灣的,因此還需要PS或者AI把地圖地圖加入進去

3 在ArcGIS中視覺化表達

使用ArcGIS中的 XYToLine工具

此工具介紹:https://desktop.arcgis.com/zh-cn/arcmap/10.3/tools/data-management-toolbox/xy-to-line.htm

GEODESIC:測地線,橢球體表面上兩點之間的最短連線

GREAT_CIRCLE: 大圓航線,通過兩航路點間的大圓圈線(該兩航路點與地心在同一平面)

RHUMB_LINE(loxodrome line): 等角航線:是地球表面上與經線相交成相同角度的曲線。在地球表面上除經線和緯線以外的等角航線,都是以極點為漸近點的螺旋曲線,在航海圖(採用墨卡託投影)上又表現為直線

NORMAL_SECTION:法截弧,A點的法線與B點確定的法截面與橢球相交的弧線

之後可以根據流線的權重選擇線的粗細尺寸(綠色)和漸變的顏色(粉紅色),由於線比較多,因此表現城市流線的表示效果都不是很好:

看一下省的流線效果,要稍微好一些:

4 附加

如果對於不同省份之間的流的情況想要視覺化表達,可以考慮直接使用Circos的線上製圖工具進行:

資料準備格式:http://mkweb.bcgsc.ca/tableviewer/samples/

可以自定義順序、顏色,注意節點數需要小於75個,不然就得下載Circos軟體來製圖

上傳資料:http://mkweb.bcgsc.ca/tableviewer/

本文中以省份為例進行展示,其中每個省都有流進本省和流出本省的比例條,這裡按照總體順序排列: