张春成

V2

2022/11/01阅读:27主题:默认主题

致最可爱的天津地铁

致最可爱的天津地铁

虽然规模不大,但换乘可是一点都不方便。

与北京和上海相比,它会给你带来物超所值的通勤体验。

本文开源代码可见

Subway stations v2[1]


寻路及地铁模拟

前文已经讲了很多使用 dijkstra 算法进行寻路的方法,在此不再赘述。

我们可以用手头上的地铁站点位置数据构造真实的地铁线路图,再随机生成 1000 名乘客,他们随机地从某个地铁站出发,目的地是另一个随机的地铁站。

首当其冲的是我们可以统计出这些乘客达到目的地所需要经过的“车站数量”,这个数量越少就表示城市的地铁规划越合理,交通也就越方便。

接下来再将他们的线路统计出来,就可以得到每个车站的“自然负载”。将这些负载的数量以圆圈大小的方式画在地图上,就得到负载图,它表示完全随机条件下,城市地铁站的负载地图,如下图所示。圈越大代表越多人经过这个地铁站,它的负载也就越高。

一个具有良好地铁线路规划的城市应该满足两个条件

  • 一次旅行所需要经过的站数要尽量少;
  • 各个车站的负载要尽量小。

您将会看到,我们可爱的天津地铁完美地避开了这两个需求。

地铁负载图

首先我们浏览北京、上海和天津三个城市的地铁负载图。注意,虽然城市体量各异,但三张图的比例尺和圆圈大小的规则是完全相同的,可以用于直接比较。

可以看到,天津虽然地铁站数量少,但它成功地“制造”了几个地铁站巨子,它们的吞吐量是相当大的。

北京地铁负载图
北京地铁负载图

北京地铁负载图

上海地铁负载图
上海地铁负载图

上海地铁负载图

天津地铁负载图
天津地铁负载图

天津地铁负载图

车站负载统计

下图以直方图统计的方式展示了“各个车站的负载量”。可以看到,北京和上海的车站负载大量集中在 50 以下,而天津地铁站的负载分布在远高于这个数值的区域,甚至出现了负载为 500 的超级大站。让我们对“下瓦房”和“直沽”两站致以敬意。

各个车站的负载量直方图
各个车站的负载量直方图

各个车站的负载量直方图

下瓦房和直沽
下瓦房和直沽

下瓦房和直沽

车站数量统计

下图以直方图统计的方式展示了“一次旅行所需要经过的站数”。可以看到,在天津通过地铁旅行的话,假设从一个随机的地点到另一个随机的地点,那么你需要经过的地铁站数量与北京和上海差不多。

要知道,这个城市的地铁站数量是远少于另外两个城市的。因此,可以这样说,如果你在天津通过地铁上班,尽管天津体量不大,但你需要付出的通勤时间几乎与北京和上海无异。

简直是物超所值的通勤体验。

一次旅行所需要经过的站数直方图
一次旅行所需要经过的站数直方图

一次旅行所需要经过的站数直方图

参考资料

[1]

Subway stations v2: https://observablehq.com/@listenzcc/subway-stations-v2

分类:

后端

标签:

后端

作者介绍

张春成
V2