首页 > 解决方案 > 如何在 GTFS 数据中为每次旅行具有多个形状的路线构建折线

问题描述

我正在尝试解析 GTFS 数据并为单个路线构建折线形状(纬度和经度对的数组)。但在我的示例 GTFS 数据中,我发现一条路线有多个形状 ID。这是来自 GTFS 数据的一段话:

路线.txt

    route_id,agency_id,route_short_name,route_long_name,route_desc,route_type,route_url,route_color,route_text_color
    90,YRT,90,LESLIE,,3,,FDAE35,FFFFFF

行程.txt

    route_id,service_id,trip_id,trip_headsign,trip_short_name,direction_id,block_id,shape_id,wheelchair_accessible,bikes_allowed
    90,1,1286467,Richmond Green Secondary School - NB,,0,131905,59628,1,1
    90,1,1286468,Richmond Green Secondary School - NB,,0,131907 , 59628,1,1
    90,1,1286380,Richmond Green Secondary School - NB,,0,131906, 59629 ,1,1
    90,1,1286469,Richmond Green Secondary School - NB,,0,131908 , 59628,1,1
    90,1,1286381,Richmond Green Secondary School - NB,,0,131904, 59629 ,1,1
    90,1,1286382,Richmond Green Secondary School - NB,,0,131905,59629,1,1
    ...
    90,1,1286399,Richmond Green Secondary School - NB,,0,131960,59629,1,1
    90,1,1286400,Richmond Green 中学 - NB,,0,131961, 59629 ,1,1
    90,1,1286470,Richmond Green Secondary School - NB,,0,131921, 59630 ,1,1
    90,1,1286471,Richmond Green 中学 - NB,,0,131922, 59630 ,1,1
    90,1,1286401,Richmond Green Secondary School - NB,,0,131962, 59629 ,1,1
    90,1,1286402,Richmond Green Secondary School - NB,,0,131960,59629,1,2

形状.txt

    

    shape_id、shape_pt_lat、shape_pt_lon、shape_pt_sequence、shape_dist_traveled
    59628 ,43.902752,-79.398992,72,7.2214
     59628 ,43.902585,-79.399005,73,7.2405
     59629 ,43.775996,-79.346326,1,0.0000
     59629 ,43.775987,-79.346238,2,0.0071
    ...
    59629 ,43.902752,-79.398992,317,15.7832
     59629 ,43.902585,-79.399005,318,15.8022
     59630 ,43.811197,-79.360774,1,0.0000
     59630 ,43.812373,-79.361259,2,0.1364

我期待每次旅行一个形状,或者至少形状是按顺序排列的。但是这个旅行数据让我失望:

    route_id,service_id,trip_id,trip_headsign,trip_short_name,direction_id,block_id,shape_id,wheelchair_accessible,bikes_allowed
    90,1,1286400,Richmond Green 中学 - NB,,0,131961, 59629 ,1,1
    90,1,1286470,Richmond Green Secondary School - NB,,0,131921, 59630 ,1,1
    90,1,1286471,Richmond Green 中学 - NB,,0,131922, 59630 ,1,1
    90,1,1286401,Richmond Green Secondary School - NB,,0,131962, 59629 ,1,1

如果您注意到,在形状#59629 之后,#59630 位于。但在那之后我们再次看到#59629。我怎样才能理解这一点?是数据问题吗?

标签: gtfs

解决方案


形状与路线无关,形状仅与个人旅行相关联。一条路线包含两个或多个形状是很常见的。

事实上,由于形状明确地编码了运动方向,对于被分成“往返”行程对的路线,总会有至少 2 个形状(这是实践中简单公交路线最常见的方法)。更复杂的可能性包括具有多个分支的路线,或具有一些短途旅行的路线。

此外,形状 ID 没有隐含的排序;即59630“之前”或“之后”是没有意义的59629。原则上,这些是任意字符串。

简而言之,您正在使用的数据看起来不错,只是没有明确的方法可以针对一般情况执行您想要执行的操作。但是,根据您的具体情况,可以采取更手动的方法并将多个形状组合成一条连贯的多段线。


推荐阅读