具有时间的总线路由的体系结构设计

时间:2018-09-29 14:50:57

标签: postgresql graph postgis pgrouting

这是为了确认我的设计是否足够好,或者获得更好的想法来解决随时间推移的总线路由问题。这是我的解决方案,其中包含以下主要步骤:

  1. 具有一个代表所有边的边表(源和目标代表顶点(公交车站):

    postgres=# select id, source, target, cost from busedges;
     id | source | target | cost
    ----+--------+--------+------
      1 |      1 |      2 |    1
      2 |      2 |      3 |    1
      3 |      3 |      4 |    1
      4 |      4 |      5 |    1
      5 |      1 |      7 |    1
      6 |      7 |      8 |    1
      7 |      1 |      6 |    1
      8 |      6 |      8 |    1
      9 |      9 |     10 |    1
     10 |     10 |     11 |    1
     11 |     11 |     12 |    1
     12 |     12 |     13 |    1
     13 |      9 |     15 |    1
     14 |     15 |     16 |    1
     15 |      9 |     14 |    1
     16 |     14 |     16 |    1
    
  2. 有一张表,该表代表公交车的详细信息,例如时间,时间,边沿等。

    注意:我使用整数格式用于“从”和“至”列以获得更快的结果,因为我可以进行整数查询,但是可以将其替换为任何更好的格式。

    postgres=# select id, "busedgeId", "busId", "from", "to" from busedgetimes;
     id | busedgeId | busId | from  |  to
    ----+-----------+-------+-------+-------
     18 |         1 |     1 | 33000 | 33300
     19 |         2 |     1 | 33300 | 33600
     20 |         3 |     2 | 33900 | 34200
     21 |         4 |     2 | 34200 | 34800
     22 |         1 |     3 | 36000 | 36300
     23 |         2 |     3 | 36600 | 37200
     24 |         3 |     4 | 38400 | 38700
     25 |         4 |     4 | 38700 | 39540
    
  3. 使用dijkstra算法查找最近的路径。

  4. busedgetimes表中以最早的第一顺序获取即将到来的公交车,以查找dijkstra算法检测到的最近路径。 =>但这会导致查询有点复杂。

我可以对此做任何改进吗,或者有更好的设计吗?

指向文档的链接以及与此相关的文章会很有帮助。

1 个答案:

答案 0 :(得分:2)

这是完全正常的常规操作方式。另请参见