两万条数据需要做个数据图_【数据分享教程】20分钟做一个中国城市经济联系图...

大概是在一年前吧==我写了一篇很水的“中国的城市联系网络”=。=就是前几天又发了一次的那个玩意(第一次发是在2019年3月31日,还真是一年==)

【城事数说】中国的城市联系网络 2020-03-24

一年前的文末留了一个flag758b75510ff3cb4e48fed372f6e49c50.png758b75510ff3cb4e48fed372f6e49c50.png758b75510ff3cb4e48fed372f6e49c50.png

099cb56c680819bb385e503356edb04f.png

这个“下一期”就隔了一年==我认错,我去关禁闭=。=

不管怎样--该来的还是来了不是嘛~(真是厚颜无耻之人啊这个小编)

一 准备数据

由于这个简化的联系模型是基于所谓的“城市引力模型”,不管你信不信,反正我今天用的就是它。首先你需要有“城市GDP”或者“城市常住人口”的数据。比如我整理的下面这个(没有怎么办,我分享啊~数据2017年,自己整理的地市尺度的常住人口和GDP,坐标为WGS84,不保证正确,仅作为练习勿挪作他用)

7daa885cfefa7b9f9aa64381f96e14e7.png

2017年常住人口空间分布图

7916b81a83dc9c71308d90eb38cc980e.png

2017年GDP空间分布图 由于我们做个经济联系图,那么我们就选择GDP来做。先要把面转为点(这边有所简化,因为面转点在中心,其实“城市”并不在市域中心,但是先不考虑这个)。 需要用到的工具叫做【要素转点】:依次打开【数据管理工具】—【要素】—【要素转点】,建议勾选“内部”,这样生成的点可以控制在市域范围内。点击确定生成点要素。

40b17fe988eabbce2838aba68986a2a9.png

生成的点要素的字段与原来的面要素应该是一样的。

69f85c74b15dcb0984c3e377867f7c72.png

2017 年GDP空间分布图(点) 现在我们要给每个点添加经纬度的属性,为什么一会再说。 使用【添加XY坐标】工具,依次打开【数据管理工具】—【要素】—【添加XY坐标】。添加的“POINT_X”是经度,“ POINT_Y”是纬度(当坐标系是WGS84的情况下)

841079e0b09d8efd9f390498fb7945a5.png

二 构建两两联系矩阵

所谓的两两联系矩阵,就是“A—B”这样的情况下的城市相关关系,直接看个图就明白了:

c1269b5154e54bd6823bbfdef597e675.png

但是呢==我是不知道ArcGIS中怎么实现这玩意。因此需要把这个换个形式:

1f4077f8d895839b1ae36931effab011.png

那么我们来说操作,怎么能形成上面的表格?我们现在有的是350多个城市各自的数据,要如何形成两两对应的关系呢? 先要把“城市数据点”导出为可编辑的CSV文件:

48494bc1c2c859cac92c3371868d6722.gif

然后用excel打开刚刚生成的csv文件,如果出现乱码的话,建议用记事本打开,另存的时候ANSI编码。现在有369个城市,需要复制369次,当然不是说手动复制,是有技巧的。先选中第2行到第370行,“CTRL+C”复制;使用“CTRL+G”定位,输入“371:136162”;然后“CTRL+V”黏贴,就一次性黏贴完了;最后看一下,一共136162行,除去表头行就是136161行,相当于369个城市,每个出现了369次。之前的“371:136162”意思是从371行开始选中到136162行。‍

a189e6a067c9f801b079df80d82a90e1.gif

我们现在做好了一半,还剩一半的数据需要“创造”。首先把现有的表头改成“起点XX”的格式,然后照着下面,全复制到右侧,筛选后排序(仅排序新粘贴的数据),然后修改表头,完事。点击保存。

7b436a5db8de9db63d2c825bd1c90b3a.png

三 创建联系线

在ArcGIS中添加CSV文件,并导出至文件地理库中,成为“文件和个人地理数据库表”,之所以要到文件地理库中,是因为==在库里面字段的名称不受三个字符的限制,比较清楚。导出后检查下数量有没有问题,没问题的话是136161条数据。 添加一个双精度字段“乘积”,使用【字段计算器】为其赋值:起点GDP*终点GDP; 使用【XY转线】工具:依次打开【数据管理工具】—【要素】—【XY转线】,如下设置:

3edeb14d8ada4c0ff5dbcb7d7fce81e9.png

线类型那边,选择“GEODESIC”的话,出来的效果就是有一定弧度,别的也可以自己试一下。结果要等一阵子==毕竟数据不少。 我没猜错的话==生成的结果就是一大陀==就像这下面的样子,不要管他,直接关了它的图层,卡的要命==打开它的属性表进行操作。

b0cc36ce9873c9d0b2ea7548373d0113.png

我们可以新建一个双精度字段“长度”,使用【计算几何】来计算长度,计算的时候坐标系建议选择投影坐标系,我使用的是数据框的坐标系“Krasovsky 1940 Albers”,单位就选择千米吧。 打开编辑器,选中长度为0的线段,删除后保存编辑。这一步是为了筛选掉“A—A”这样的自己与自己联系的城市,如果之前操作没问题的话,筛选掉的数量为369,筛选后还剩的线段数量为135792。 然后新建一个双精度字段“联系度”,计算值:[乘积] /( [长度] * [长度])。 也就是根据公式(这边暂且选取的k为1):

c93b74c1c6ee16f0e7136af31a1a181f.png

现在还有最后一步,因为之前的操作中“A—B”“B—A”其实是一致的,所以,需要通过融合来减少重复的线。 融合前的要素一共135792条,理论上因为每一个城市组合都有两条,所以融合后的数据量理应为67896条。我才疏学浅不知道为什么使用双精度字段融合达不到预期,所以新建了一个长整型字段“长整型厘米”,计算其长度(以厘米为单位),不用毫米是因为超出了字段限制。 使用【融合】工具,以“长整型厘米”为融合字段,统计字段为“联系度”,统计类型可以选择“MEAN”,不过因为是一样的值,选什么也没差别。 (这一步也会花比较多的时间,建议点开新番看一集=。=或者看三个鬼畜视频也行,另外要在电脑旁常备可乐和薯片,不想干活了可以肥宅快乐一下==比如我现在这样)融合设置的时候,“创建多部件要素”前的勾建议不要打上。 最后出来的结果为67898条数据,多了两条不知道为啥==先不管了,删除一些“联系度”为0的线段(0是因为这里原本就没数据),最后的结果就像下面这样(这是个动的很慢的动图,在你以为他停止的时候,它还会继续动==):

bccd87f8d574334f6511fcf514753827.gif

城市联系(所有城市间) 所有城市的联系线都放上会==emmmm,我们试着只放前20%联系度的线条在图上,也就是大概1万3千条左右的数据,或者使用属性选择联系度大于10的线段,差不多也是1万多条。根据联系度的数值可以分区间用颜色表示,分类的时候如果提示采样数达到最大可以像下面这样调整:

d413e01e00968c9177e4f886e06d3269.gif

继续看一下选择联系度大于10的线段后的效果:

6d9df28a397bd2def6ebbf7981f3ce8d.gif

城市联系(前1W的联系度) 接下来就是一些自己的调整了,不详细说了。比如我最后选择的效果是前50%的线:

f09fcc1a7d4ac6dc13b2d12e2da0864d.png

城市联系(前50%的联系度)
今天会分享一些练习数据。主要还是城市统计数据的要素文件,包括了2017年末的常住人口和GDP,还有一些结果文件。

796e742de854b039355b6bce4a1b8e59.png

后台回复 “城市联系”四个字。数据是我自己整理的,主要是城市统计年鉴和各省市的统计年鉴,城市统计年鉴中的数据也就290个左右,剩下的是省市统计年鉴的补充,整理过的人也知道其中的麻烦,所以 获取数据有 套路,也不保证正确,请自行检查。文件有点大--我也不知道为啥

END>

fc398fcbc677193b9e98d1d95464dc7d.png

使用关键词搜索历史文章请点击【

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值