一、准备数据
“城市GDP”或者“城市常住人口”的数据。
先要把面转为点:【数据管理工具】—【要素】—【要素转点】,建议勾选“内部”。
给每个点添加经纬度的属性:【数据管理工具】—【要素】—【添加XY坐标】。添加的“POINT_X”是经度,“ POINT_Y”是纬度(当坐标系是WGS84的情况下)
二、构建两两联系矩阵
先要把“城市数据点”导出为可编辑的CSV文件;
然后用excel打开刚刚生成的csv文件,如果出现乱码的话,建议用记事本打开,另存的时候ANSI编码。
现在有369个城市,需要复制369次,当然不是说手动复制,是有技巧的。先选中第2行到第370行,“CTRL+C”复制;使用“CTRL+G”定位,输入“371:136162”;然后“CTRL+V”黏贴,就一次性黏贴完了;最后看一下,一共136162行,除去表头行就是136161行,相当于369个城市,每个出现了369次。之前的“371:136162”意思是从371行开始选中到136162行。
我们现在做好了一半,还剩一半的数据需要“创造”。首先把现有的表头改成“起点XX”的格式,然后照着下面,全复制到右侧,筛选后排序(仅排序新粘贴的数据),然后修改表头,完事。点击保存。
三、创建联系线
在ArcGIS中添加CSV文件,并导出至文件地理库中,成为“文件和个人地理数据库表”,之所以要到文件地理库中,是因为==在库里面字段的名称不受三个字符的限制,比较清楚。导出后检查下数量有没有问题,没问题的话是136161条数据。
添加一个双精度字段“乘积”,使用【字段计算器】为其赋值:起点GDP*终点GDP;
使用【XY转线】工具:依次打开【数据管理工具】—【要素】—【XY转线】,如下设置:
线类型那边,选择“GEODESIC”的话,出来的效果就是有一定弧度,别的也可以自己试一下。结果要等一阵子==毕竟数据不少。
我没猜错的话==生成的结果就是一大陀==就像这下面的样子,不要管他,直接关了它的图层,卡的要命==打开它的属性表进行操作。
我们可以新建一个双精度字段“长度”,使用【计算几何】来计算长度,计算的时候坐标系建议选择投影坐标系,我使用的是数据框的坐标系“Krasovsky 1940 Albers”,单位就选择千米吧。
打开编辑器,选中长度为0的线段,删除后保存编辑。这一步是为了筛选掉“A—A”这样的自己与自己联系的城市,如果之前操作没问题的话,筛选掉的数量为369,筛选后还剩的线段数量为135792。
然后新建一个双精度字段“联系度”,计算值:[乘积] /( [长度] * [长度])。
也就是根据公式(这边暂且选取的k为1):
现在还有最后一步,因为之前的操作中“A—B”与“B—A”其实是一致的,所以,需要通过融合来减少重复的线。
融合前的要素一共135792条,理论上因为每一个城市组合都有两条,所以融合后的数据量理应为67896条。我才疏学浅不知道为什么使用双精度字段融合达不到预期,所以新建了一个长整型字段“长整型厘米”,计算其长度(以厘米为单位),不用毫米是因为超出了字段限制。
使用【融合】工具,以“长整型厘米”为融合字段,统计字段为“联系度”,统计类型可以选择“MEAN”,不过因为是一样的值,选什么也没差别。(这一步也会花比较多的时间,建议点开新番看一集=。=或者看三个鬼畜视频也行,另外要在电脑旁常备可乐和薯片,不想干活了可以肥宅快乐一下==比如我现在这样)融合设置的时候,“创建多部件要素”前的勾建议不要打上。
最后出来的结果为67898条数据,多了两条不知道为啥==先不管了,删除一些“联系度”为0的线段(0是因为这里原本就没数据),最后的结果就像下面这样:
所有城市的联系线都放上会==emmmm,我们试着只放前20%联系度的线条在图上,也就是大概1万3千条左右的数据,或者使用属性选择联系度大于10的线段,差不多也是1万多条。根据联系度的数值可以分区间用颜色表示,分类的时候如果提示采样数达到最大可以像下面这样调整: