OD流向地图的绘制——利用ArcGIS与Gephi方法
1 数据准备
一共有347个城市构成的矩阵,行代表从行标签流出到列标签,列代表从列标签流入到行标签,注意,这不是对称矩阵
对于34个省级行政单元也是如此
收集整理城市、省的节点数据,节点必须要有ID 经纬度 标签(也就是名称),可以选择性添加节点的属性列作为权重指标并另存为Nodes.csv:(存成csv就好)
同时需要将矩阵转换为边表的形式
MATLAB代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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/
本文中以省份为例进行展示,其中每个省都有流进本省和流出本省的比例条,这里按照总体顺序排列:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示