如何算地铁时间?
假设起点和终点在同一个地图上,并且起点和终点之间只存在一条道路,那么我们把出发时间和到达时间分别记录下来,计算的时间就是行驶时间; 如果途中需要换乘其他交通工具,那么我们需要记录每个阶段所花费的时间,先乘什么的时长,再转什么的时刻,最后到达目的地的总时长。 当然实际的情况要比这复杂得多。比如中途有可能需要步行穿过某个景区或者厂区,这时候我们还需要将途经的所有路段都用数字标记出来,方便计算每段路的具体耗时。 另外,如果我们的起点不是位于地图的左上角,而是在其他位置处,则需要将起始点移动到地图的正中,然后按照上述方法进行操作。 为了便于演示,我们绘制了如下示意图: 图中分别标明了A、B两点的地理位置以及它们之间的所有道路。 在这个简单的模型里,当我们输入数据以后,计算器就可以直接得到结果。
然而现实情况要复杂得多。首先,地铁线路并不是像画出来的这样直来直去,而是有一定弧度的,这会间接影响计算结果;其次,不同城市中的同一地点,其地理位置本身就有可能在一定范围内发生变化(比如长江大桥修好了,桥下的地下通道竣工了等等)。这些问题都会增加计算的复杂度并进而影响到准确度。
为了尽可能接近实际情况,我们可以对地图的路网做如下处理:把每条道路看作是由一系列节点组成的线段,在每个节点的位置上设置一个坐标,这样原地图上的每个点都转换到了由多条线组成的平面网格上。如下图左边所示。
当遇到交叉路口的时候,我们选择其中的每一条路径进行计算,这样就可以得到较为精确的结果。