一般情况下制作道路流量(饱和度)专题图需要借助行业专业软件,如ArcGIS、TransCAD、visum等,这些软件操作在徐同学历史教程中有所介绍。在本文中98同学将介绍一种基于Python编程的实现方法,如果你对python使用更感兴趣,欢迎阅读本文。
1、基本实现思路
基本思路为使用shapely库的“要素整体平移”方法。Python的shapely中集成了大量用于操作矢量数据的方法,对应于要素平移的是parallel_offset,可以看下文档中的介绍。
图1 用户手册中parallel_offset方法的说明
该方法有五个参数,其中比较重要的为distance和side,distance参数规定了移动的距离,side规定了相对要素的平移方向。目前文档中更推荐使用新的offset_curve方法,但是老方法仍旧可以使用。
2、应用案例
以上海市的轨道网络为例,尝试用python出一张断面流量图。由于原始数据中的线网文件和站点文件是分开的,因此需要做一个预处理:基于站点去打断线路,生成站与站之间的轨道段。
考虑到站点并不完全落在线上,这里需要先做一个project,得到站点投影到线路起点的距离,之后再对投影距离做interpolate,得到对应的在线路上的点,最后点之间用linspace等间隔采样生成轨道段的线要素,过程如下图所示。
图2 用站点打断轨道线生成轨道段的过程
图3 主要函数:按照站点打断线路
图4 上海市轨道网络线路和站点
之后按照断面流量进行分组并设置线宽,并按照线宽去设置平移距离,保证每一个轨道段的双向流量都是“无缝衔接”的。
图5 根据流量对轨道段进行分组
图6 按照线宽调整平移距离
在此基础上整个绘制双向流量图的思路如下图所示:
图7 双向流量图的绘制思路
图8 平移距离设为线宽
再给图中加上指北针、比例尺、不同风格的背景地图以及对应流量的色带后,一个看起来还算美观的双向网络流量图就完成了,整个思路还是比较简单和清晰的。
图9 断面双向流量图最终效果
要注意的是,由于整个过程中有多个方法涉及到站点和线要素的方向匹配(例如parallel_offset,project等),因此脑海里要有一个判断,即生成轨道段和平移的时候,对应的线要素方向是否正确,这样才能保证结果的合理。
以下为本文的视频讲解:
如果你对上述内容有疑惑或想加入徐同学频道社群,请添加微信(id:xutongxue_001),备注“姓名+单位+领域”。
这就是本篇图文的全部内容了,感谢你的阅读。
如果想看更多,请转发、点赞、评论支持!你们的支持是频道更新的动力。