OD流向地图的绘制——利用ArcGIS与Gephi方法

时间:2024-02-29 14:24:52

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/

 本文中以省份为例进行展示,其中每个省都有流进本省和流出本省的比例条,这里按照总体顺序排列: