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/
本文中以省份为例进行展示,其中每个省都有流进本省和流出本省的比例条,这里按照总体顺序排列: