gtfs - 如何在 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。我怎样才能理解这一点?是数据问题吗?
解决方案
形状与路线无关,形状仅与个人旅行相关联。一条路线包含两个或多个形状是很常见的。
事实上,由于形状明确地编码了运动方向,对于被分成“往返”行程对的路线,总会有至少 2 个形状(这是实践中简单公交路线最常见的方法)。更复杂的可能性包括具有多个分支的路线,或具有一些短途旅行的路线。
此外,形状 ID 没有隐含的排序;即59630
“之前”或“之后”是没有意义的59629
。原则上,这些是任意字符串。
简而言之,您正在使用的数据看起来不错,只是没有明确的方法可以针对一般情况执行您想要执行的操作。但是,根据您的具体情况,可以采取更手动的方法并将多个形状组合成一条连贯的多段线。
推荐阅读
- python - 有搜索返回显示一个员工的信息不是全部。然后能够编辑所述员工的信息
- typescript - 如何在 vscode 错误中调试打字稿节点应用程序
- linux - Call SQL Server from a Linux Container without Passwords in the Connection String
- javascript - 有没有办法使用 pg-promise 对从 PostgreSQL 返回的列名进行骆驼案例分析?
- c++ - C++ 中复杂问题的手动矢量化/SSE
- google-bigquery - BigQuery中sql函数的执行顺序是什么
- javascript - How to make a method chain conditional?
- php - for循环如何工作?它有什么问题?
- amazon-web-services - AWS Step Function 中基于数组中的项目数的分支流程
- java - Java Spring Map
> 作为请求参数