GTFS 实时参考

借助 GTFS 实时 Feed,公交公司可以向消费者提供其车辆服务中断(站点停止运营、线路中断、重要延误等)以及车辆到达时间等实时信息。

本网站介绍了 2.0 版 Feed 规范,并对此进行了记录。

术语定义

必填

在 GTFS-realtime v2.0 及更高版本中,Required 列描述了提供方必须提供哪些字段,才能使公交数据有效且适用于使用方应用。

必填字段中使用了以下值:

  • 必填:此字段必须由 GTFS 实时 Feed 提供方提供。
  • 已有条件地要求:在特定条件下,此字段是必填字段,说明中对此进行了说明。除这些条件外,该字段是可选的。
  • 可选:此字段为可选字段,制作者无需实现此字段。不过,如果底层车辆自动定位系统数据(例如,VehiclePosition timestamp),建议提供方尽可能提供这些可选字段。

请注意,由于语义要求未在 GTFS-realtime 1.0 版中定义,因此 gtfs_realtime_version1 的 Feed 可能不满足这些要求(如需了解详情,请参阅语义要求提案)。

基数

基数表示可以为特定字段提供的元素数量,其值如下:

请务必参考 RequiredDescription 字段,了解某个字段是必填字段、有条件必填字段或选填字段。如需了解协议缓冲区基数,请参阅 gtfs-realtime.proto

协议缓冲区数据类型

以下协议缓冲区数据类型用于描述 Feed 元素:

  • message:复杂类型
  • 枚举:固定值列表

实验性字段

标记为实验性的字段可能会发生变化,并且尚未正式纳入规范中。将来可以正式采用实验性字段。

元素索引

元素

message FeedMessage

Feed 消息的内容。流中的每条消息都是对相应 HTTP GET 请求的响应。实时 Feed 始终相对于现有 GTFS Feed 进行定义。所有实体 ID 都会根据 GTFS Feed 进行解析。

字段

字段名称 类型 必需 基数 说明
header FeedHeader 必填 1 有关此 Feed 和 Feed 消息的元数据。
entity FeedEntity 在特定条件下必需 很多 Feed 的内容。如果公交系统有实时信息,则必须提供此字段。如果此字段为空,使用方应假定没有可用于系统的实时信息。

message FeedHeader

有关 Feed 的元数据(包含在 Feed 消息中)。

字段

字段名称 类型 必需 基数 说明
gtfs_realtime_version string 必填 1 Feed 规范的版本。当前版本为 2.0。
incrementality Incrementality 必填 1
timestamp uint64 必填 1 此时间戳用于标识此 Feed 内容的创建时间(以服务器时间为准)。POSIX 时间(即自世界协调时间 (UTC) 1970 年 1 月 1 日 00:00:00 以来的秒数)。为避免系统产生和消耗实时信息之间的时间偏差,强烈建议从时间服务器派生 timestamp。我们完全可以使用 Stratum 3 甚至更低级别的分层服务器,因为时间差在几秒以内是可以接受的。

枚举增量

确定当前提取是否为增量提取。

  • FULL_DATASET:此 Feed 更新将覆盖该 Feed 之前的所有实时信息。因此,此更新应该提供所有已知实时信息的完整快照。
  • DIFFERENTIAL:目前,此模式不受支持,并且使用此模式的 Feed 的行为未指定GTFS 实时邮寄名单有关于全面指定 DIFFERENTIAL 模式行为的讨论,当这些讨论最终确定后,文档将会更新。

FULL_DATASET
DIFFERENTIAL

消息 FeedEntity

公交 Feed 中实体的定义(或更新)。如果该实体未被删除,则只能填充 trip_updatevehiclealert 字段中的一个字段。

字段

字段名称 类型 必需 基数 说明
id string 必填 1 此实体的 Feed 唯一标识符。这些 ID 仅用于提供增量支持。Feed 引用的实际实体必须由显式选择器指定(如需了解详情,请参阅下文的 EntitySelector)。
is_deleted bool 可选 1 是否删除此实体。只能为 IncrementalityDIFFERENTIAL 的 Feed 提供此字段,不应为 IncrementalityFULL_DATASET 的 Feed 提供此字段。
trip_update TripUpdate 在特定条件下必需 1 有关行程的实时出发延迟的数据。必须提供至少一个字段:trip_updatevehiclealert。这些字段不得为空。
vehicle VehiclePosition 在特定条件下必需 1 车辆的实时位置的相关数据。必须提供至少一个字段:trip_updatevehiclealert。这些字段不得为空。
alert Alert 在特定条件下必需 1 实时提醒的相关数据。必须提供至少一个字段:trip_updatevehiclealert。这些字段不得为空。

消息 TripUpdate

实时了解车辆沿途进度。另请参阅行程更新实体的一般讨论。

根据 ScheduleRelationship 的值,TripUpdate 可以指定:

  • 按时间表进行的行程。
  • 沿途继续的行程,没有固定的时间表。
  • 已添加或移除的行程。

此类更新针对的是未来的预计到达/出发事件,或者已发生的过往事件。在大多数情况下,过往事件的信息是测量值,因此不确定性值为 0。不过,在某些情况下,即使这一点没有保留,因此对于过往事件,允许其不确定性值不同于 0。如果更新的不确定性不是 0,说明更新是针对尚未完成的行程的近似预测或衡量结果不准确,或者更新是针对过去在活动发生后未验证的过往预测。

请注意,更新可以描述已完成的行程。因此,只需提供行程的最后一个经停点的更新即可。如果到达最后一个经停点的时间是过去的时间,客户会认为整个行程都是过去的时间(但这也可以提供之前经停点的更新)。此选项与提前完成的行程相关度最高,但根据时间表,该行程当前仍在继续。移除此行程的更新可能会导致客户认为此行程仍在进行。请注意,Feed 提供商可以(但并非必须)完全清除过去的更新,但这在实践中非常有用。

字段

字段名称 类型 必需 基数 说明
trip TripDescriptor 必填 1 此消息适用的行程。每个实际行程实例最多只能有一个 TripUpdate 实体。如果没有,则表示没有预测信息。这表示行程正在按计划进行。
vehicle VehicleDescriptor 可选 1 有关此次行程所在车辆的更多信息。
stop_time_update StopTimeUpdate 在特定条件下必需 很多 针对行程的 StopTimes(既包括未来数据,也包括预测数据,在某些情况下是过去数据文件,即已发生的事件)的更新记录。更新必须按 stop_sequence 排序,并应用于此次行程的所有后续站点,直到下一个指定 stop_time_update。除非行程trip.schedule_relationshipCANCELED,否则至少必须为该行程提供一个stop_time_update - 如果行程取消,则无需提供stop_time_updates
timestamp uint64 可选 1 准确测量车辆的实时进度的时刻。POSIX 时间(即自世界协调时间 (UTC) 1970 年 1 月 1 日 00:00:00 以来的秒数)。
delay int32 可选 1 行程的当前时间表偏差。只有当预测结果是针对 GTFS 中的一些现有时间表时,才应指定 delay
delay(以秒为单位)可以是正值(表示车辆晚点)或负数(表示车辆领先进度)。delay0 表示车辆准确准点。
StopTimeUpdates 中的延迟信息先于行程级延迟信息,因此行程级延迟仅在指定 StopTimeUpdate delay 值的行程中传播。
强烈建议 Feed 提供商提供 TripUpdate.timestamp 值,用于指明上次更新 delay 值的时间,以便评估数据的新鲜度。
将来可能会被正式采用。

消息 StopTimeEvent

单个预测事件(到达或出发)的时间信息。时间包括延迟时间和/或预计时间以及不确定性。

  • 根据 GTFS 中的某个现有时间表进行预测时,应使用 delay
  • 应针对是否设置了预测时间表提供time。如果同时指定了 timedelay,则以 time 为准(尽管在预定的行程中,如果给定,则 time 应该等于 GTFS + 延迟的预定时间)。

不确定性对时间和延迟同样重要。不确定性大致反映了实际延迟的预期误差(但请注意,我们尚未定义其确切的统计含义)。不确定性可能为 0,例如受计算机时间控制的列车行驶。

字段

字段名称 类型 必需 基数 说明
delay int32 在特定条件下必需 1 delay 字段(以秒为单位)可以是正值(表示车辆晚点)或负数(表示车辆领先于进度)。delay0 表示车辆正好准时。StopTimeEvent 中必须提供 delaytime,两个字段均不得为空。
time int64 在特定条件下必需 1 事件为绝对时间。POSIX 时间(即自世界协调时间 (UTC) 1970 年 1 月 1 日 00:00:00 以来的秒数)。StopTimeEvent 中必须提供 delaytime,两个字段均不得为空。
uncertainty int32 可选 1 如果省略不确定性,系统会将其视为未知。如需指定完全预测的内容,请将其不确定性设置为 0

消息 StopTimeUpdate

实时更新行程中给定停靠点的到达和/或出发事件。另请参阅 TripDescriptor行程更新实体文档中有关停止时间更新的一般讨论。

您可以为过去和未来的活动提供更新。提供方可以(但并非必须)丢弃过往事件。 更新会通过 stop_sequencestop_id 与特定停靠站相关联,因此必须设置其中一个字段。如果同一 stop_id 在行程中被多次访问,那么针对该行程该stop_id的所有 StopTimeUpdates 都应提供 stop_sequence

字段

字段名称 类型 必需 基数 说明
stop_sequence uint32 在特定条件下必需 1 必须与相应的 GTFS Feed 中的 stop_times.txt 相同。StopTimeUpdate 中必须提供 stop_sequencestop_id,两个字段均不得为空。对于需要多次访问同一 stop_id(例如循环)的行程,必须使用 stop_sequence 来消除歧义,以便停止预测。
stop_id string 在特定条件下必需 1 必须与相应的 GTFS Feed 中的 stops.txt 相同。StopTimeUpdate 中必须提供 stop_sequencestop_id,两个字段均不得为空。
arrival StopTimeEvent 在特定条件下必需 1 如果 schedule_relationship 为空或 SCHEDULED,必须在 StopTimeUpdate 中提供 arrivaldeparture - 这两个字段都不能为空。当 schedule_relationshipSKIPPED 时,arrivaldeparture 可能都为空。如果 schedule_relationshipNO_DATA,则 arrivaldeparture 必须为空。
departure StopTimeEvent 在特定条件下必需 1 如果 schedule_relationship 为空或 SCHEDULED,必须在 StopTimeUpdate 中提供 arrivaldeparture - 这两个字段都不能为空。当 schedule_relationshipSKIPPED 时,arrivaldeparture 可能都为空。如果 schedule_relationshipNO_DATA,则 arrivaldeparture 必须为空。
schedule_relationship ScheduleRelationship 可选 1 默认关系为 SCHEDULED

枚举 ScheduleRelation

StopTime 与静态时间表之间的关系。

评论
SCHEDULED 这辆车是按照其静态停留站行驶的(尽管不一定是按照时间表的时间计算)。这是默认行为。必须提供至少 arrivaldeparture 中的一个。
SKIPPED 系统会跳过该停车点,也就是说,车辆不会在此经停点停止。arrivaldeparture 字段为可选字段。
NO_DATA 没有此经停点的数据。表示没有可用的实时信息。设置 NO_DATA 后,后续传播将会传播,因此建议您使用此方式来指定自己没有哪个实时信息。设置 NO_DATA 时,不应同时提供 arrivaldeparture

message VehiclePosition

给定车辆的实时位置信息。

字段

字段名称 类型 必需 基数 说明
trip TripDescriptor 可选 1 此车辆正在运营的行程。如果系统无法在给定的行程实例中识别车辆,则可留空或部分匹配。
vehicle VehicleDescriptor 可选 1 有关此次行程所在车辆的更多信息。每个条目都应具有唯一车辆 ID。
position Position 可选 1 这辆车的当前位置。
current_stop_sequence uint32 可选 1 当前车站的停止序列索引。current_stop_sequence 的含义(即它所指的经停点)由 current_status 确定。如果 current_status 缺失,系统会假定 IN_TRANSIT_TO
stop_id string 可选 1 标识当前车站。该值必须与相应 GTFS Feed 中 stops.txt 的值相同。
current_status VehicleStopStatus 可选 1 车辆相对于当前车站的确切状态。如果缺少 current_stop_sequence,系统会忽略此参数。
timestamp uint64 可选 1 测量车辆位置的时刻。POSIX 时间(即自世界协调时间 (UTC) 1970 年 1 月 1 日 00:00:00 以来的秒数)。
congestion_level CongestionLevel 可选 1
occupancy_status OccupancyStatus 可选 1 车辆的载客率。
注意:此字段仍为实验性字段,随时可能会有更改。将来可能会被正式采用。

枚举 VehicleStopStatus

评论
INCOMING_AT 车辆即将到达经停点(在停车显示屏上,车辆标志通常闪烁)。
STOPPED_AT 车辆站在经停点。
IN_TRANSIT_TO 车辆已从上一个经停点出发,正在运输中。

枚举 CongestionLevel

影响这辆车的拥塞程度。

UNKNOWN_CONGESTION_LEVEL
RUNNING_SMOOTHLY
STOP_AND_GO
CONGESTION
SEVERE_CONGESTION

枚举 OccupancyStatus

车辆的载客率。

注意:此字段仍为实验性字段,可能会发生变化。将来可能会被正式采用。

评论
EMPTY 对于大多数车辆,这辆车被视为空置,只有极少或完全没有乘客,但仍会接受乘客。
MANY_SEATS_AVAILABLE 车辆或车厢很大比例可用。在可被视为这一类别的席位总数中,免费席位的数量应由制作人自行决定。
FEW_SEATS_AVAILABLE 车辆或车厢提供一小部分座椅。在可被视为属于此类别的席位总数中,免费席位的数量应由制作人自行决定。
STANDING_ROOM_ONLY 车辆或车厢目前仅支持站立乘客。
CRUSHED_STANDING_ROOM_ONLY 车辆或车厢目前只能容纳站立的乘客,但它们的空间有限。
FULL 大多数车辆都会视车辆已满,但可能仍允许乘客上车。
NOT_ACCEPTING_PASSENGERS 车辆或车厢不接受乘客。车辆或车厢通常接受乘客上车。
NO_DATA_AVAILABLE 车辆或车厢当时没有任何乘车数据。
NOT_BOARDABLE 车辆或车厢不可入住,且不接受乘客。适用于特殊交通工具或引擎(引擎、保养车厢等)。

消息提醒

一条提醒,指示公交网络中的某种突发事件。

字段

字段名称 类型 必需 基数 说明
active_period TimeRange 可选 很多 应向用户显示提醒的时间。如果缺失,只要 Feed 中显示了提醒,系统就会显示提醒。如果指定了多个范围,则在所有区域中都将显示提醒。
informed_entity EntitySelector 必填 很多 我们应向其用户通知此提醒的实体。必须提供至少一个 informed_entity
cause Cause 可选 1
effect Effect 可选 1
url TranslatedString 可选 1 提供警报相关信息的网址。
header_text TranslatedString 必填 1 提醒的标头。此纯文本字符串将会突出显示(例如以粗体显示)。
description_text TranslatedString 必填 1 提醒的说明。此纯文本字符串会采用提醒正文(或会在用户的明确“展开”请求中显示)。说明中的信息应添加到标头的信息中。

枚举原因

此提醒的原因。

UNKNOWN_CAUSE
OTHER_CAUSE
TECHNICAL_PROBLEM
STRIKE
DEMONSTRATION
ACCIDENT
HOLIDAY
WEATHER
MAINTENANCE
CONSTRUCTION
POLICE_ACTIVITY
MEDICAL_EMERGENCY

枚举效果

此问题对受影响实体的影响。

NO_SERVICE
REDUCED_SERVICE
SIGNIFICANT_DELAYS
DETOUR
ADDITIONAL_SERVICE
MODIFIED_SERVICE
OTHER_EFFECT
UNKNOWN_EFFECT
STOP_MOVED

message TimeRange

时间间隔。如果 t 大于或等于 start 时间且小于 end 时间,则该时间间隔会被视为在 t 时有效。

字段

字段名称 类型 必需 基数 说明
start uint64 在特定条件下必需 1 开始时间,以 POSIX 时间(即,自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数)表示。如果缺失,则间隔时间从负无穷大开始。如果提供了 TimeRange,则必须提供 startend - 这两个字段都不能为空。
end uint64 在特定条件下必需 1 结束时间,以 POSIX 时间(即,自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数)表示。如果缺失,则间隔时间以加无穷大为结尾。如果提供了 TimeRange,则必须提供 startend - 这两个字段都不能为空。

message 位置

车辆的地理位置。

字段

字段名称 类型 必需 基数 说明
latitude float 必填 1 北方(WGS-84 坐标系)度数。
longitude float 必填 1 东经,位于 WGS-84 坐标系中。
bearing float 可选 1 与正北顺时针方向的角(以度为单位),即0为北,90为东。可以是罗盘方向方向,也可以是前往下一个经停点或中间位置的方向。不应根据之前位置的顺序推断出来,而客户端可以根据之前的数据计算以往的位置。
odometer double 可选 1 里程表值(以米为单位)。
speed float 可选 1 车辆的瞬间速度,以每秒米为单位。

message TripDescriptor

用于标识 GTFS 行程单个实例的描述符。

如需指定单个行程实例,trip_id 本身在许多情况下可以正常运行。但是,在以下情况中,需要额外的信息才能解析为单个行程实例:

  • 如果行程是在 frequencies.txt 中定义的,则除了 trip_id 之外,还必须提供 start_datestart_time
  • 如果行程持续超过 24 小时,或者行程因延迟而与次日安排的行程冲突,请同时提供 start_datetrip_id
  • 如果无法提供 trip_id 字段,您必须提供字段 route_iddirection_idstart_datestart_time

在所有情况下,如果同时提供了 route_idtrip_id,则 route_id 必须与 GTFS trips.txt 文件中分配给指定行程的 route_id 字段匹配。

trip_id 字段本身不能或其他 TripDescriptor 字段结合使用来标识多个行程实例。如果 TripDescriptor 解析为零个或多个行程实例,而不是一个行程实例,则会被视为错误。包含错误 TripDescriptor 的实体可能会被使用方舍弃。

例如,当在 GTFS frequencies.txt 中使用 exact_times=0 定义行程时,TripDescriptor 绝不能单独指定 trip_id。这是因为,当您解析从一天中特定时间开始的单个行程实例时,您还必须提供 start_time

请注意,如果 trip_id 未知,那么 TripUpdate 中的电台序列 ID 是不够的,还必须提供 stop_id 字段。此外,必须提供绝对到达和出发时间。

字段

字段名称 类型 必需 基数 说明
trip_id string 在特定条件下必需 1 此选择器引用的 GTFS Feed 中的 trip_id。是否需要 trip_id 取决于行程类型:
非基于频率的行程:仅凭 trip_id 字段即可唯一标识这些行程。请注意,GTFS frequencies.txt 中未定义基于非频次的行程。
基于频率的行程trip_idstart_timestart_date 字段都是必填字段。基于频率的行程在 GTFS frequencies.txt 中定义。
基于时间表的行程:只有当所提供的 route_iddirection_idstart_timestart_date 字段的组合能够唯一标识相应行程时,才能省略 trip_id 字段。请注意,GTFS frequencies.txt 中未定义预定行程。
route_id string 在特定条件下必需 1 此选择器引用的 GTFS Feed 中的 route_id。如果省略 trip_id,则必须将 route_iddirection_idstart_timeschedule_relationship=SCHEDULED 全部设置为识别某个行程实例。
direction_id uint32 在特定条件下必需 1 GTFS Feed trips.txt 文件中的 direction_id,指示行程方向。如果省略 trip_id,则必须提供 direction_id
注意:此字段仍为实验性字段,随时可能会发生变化。将来可能会被正式采用。
start_time string 在特定条件下必需 1 此行程实例最初安排的开始时间。字段类型 Time 定义此字段的格式,例如 11:15:35 或 25:15:35。start_time 字段是否为必填字段取决于行程类型:
trip_id 对应于非基于频率的行程:需要省略 start_time 字段或等于 GTFS Feed 的 stop_times.txt 文件中的 departure_time 值。
trip_id 对应于基于频率的行程start_time 必须始终为行程更新和车辆位置指定。基于频率的行程在 GTFS frequencies.txt 中定义。
➤ 如果基于频率的行程对应于 exact_times=1 GTFS 记录:在相应时间段内,start_time 字段必须是大于 frequencies.txt start_timeheadway_secs 的倍数(包括零)。
基于频率的行程与 exact_times=0 GTFS 记录对应start_time 可以是任意类型,最初预计为行程的首次出发。这种基于频率的exact_times=0行程的start_time确定后,即使第一个出发时间发生变化,也会被视为不可变。任何后续的时间更改都可以反映在 StopTimeUpdate 消息中。
trip_id 已省略:必须提供 start_time
start_date string 在特定条件下必需 1 此行程实例的开始日期,格式为 YYYYMMDD。是否需要start_date取决于哪种类型的行程:
已安排的行程:必须提供start_date。这是为了明确区分时间太晚,以致于与第二天安排的行程冲突的行程。例如,假设火车在每天 8:00 和 20:00 发车。如果火车晚点 12 小时,将会预约同一时间的不同行程。
注意:对于无法进行此类冲突的已安排行程,此字段为选填字段。例如,如果某服务按小时运行,且车辆晚点一小时后不再被视为与时刻表相关,就可能会发生这种情况。
基于频率的行程:必须提供 start_date。请注意,基于频率的行程在 GTFS frequencies.txt 文件中定义,而预定的行程则不是。
省略了 trip_id:必须提供 start_date
schedule_relationship ScheduleRelationship 可选 1 此行程与静态时刻之间的关系。如果 Alert EntitySelector 中提供了 TripDescriptor,使用方在标识匹配的行程实例时会忽略 schedule_relationship 字段。

枚举 ScheduleRelation

此行程与静态时刻之间的关系。如果行程是根据临时时间表完成的,而不会反映在 GTFS 中,则不应标记为 SCHEDULED,而应标记为 ADDED

评论
SCHEDULED 根据 GTFS 时间表运行的行程,或行程时间接近于已安排的行程时间。
ADDED 在跑步时间表之外添加了额外的行程,例如更换损坏的车辆或响应突然的乘客负载。
UNSCHEDULED 正在运行的行程,但没有关联的时间表 - 此值用于标识包含 exact_times = 0 的 GTFS frequencies.txt 中定义的行程。它不能用于说明未在 GTFS frequencies.txt 中定义的行程,也不能用于描述 GTFS frequencies.txt 中带有 exact_times = 1 的行程。
CANCELED 时间表中存在但已移除的行程。

message VehicleDescriptor

执行行程的车辆的识别信息。

字段

字段名称 类型 必需 基数 说明
id string 可选 1 车辆的内部系统识别。对每辆车而言,应该是唯一的,并用于在车辆通过系统时跟踪车辆。不得向最终用户显示此 ID;为此,请使用 label 字段。
label string 可选 1 可供用户查看的标签,例如必须帮助乘客识别的车辆。
license_plate string 可选 1 车辆的车牌。

消息 EntitySelector

GTFS Feed 中实体的选择器。这些字段的值应与 GTFS Feed 中的相应字段相对应。必须提供至少一个说明符。如果提供了多个参数,则应该被解释为由逻辑 AND 运算符联接。此外,说明符的组合必须与 GTFS Feed 中的相应信息保持一致。换句话说,要让提醒应用于 GTFS 中的实体,该实体必须与提供的所有 EntitySelector 字段相匹配。例如,包含字段 route_id: "5"route_type: "3"EntitySelector 仅适用于 route_id: "5" 总线,而不适用于 route_type: "3" 的任何其他路由。如果生产方希望将提醒应用于 route_id: "5" 以及 route_type: "3",则应提供两个单独的 EntitySelector 字段,一个引用 route_id: "5",另一个引用 route_type: "3"

必须提供至少一个说明符 - EntitySelector 中的所有字段都不能为空。

字段

字段名称 类型 必需 基数 说明
agency_id string 在特定条件下必需 1 此选择器引用的 GTFS Feed 中的 agency_id
route_id string 在特定条件下必需 1 此选择器引用的 GTFS 中的 route_id。如果提供了 direction_id,还必须提供 route_id
route_type int32 在特定条件下必需 1 此选择器引用的 GTFS 中的 route_type
direction_id uint32 在特定条件下必需 1 来自 GTFS Feed trips.txt 文件的 direction_id,用于为路线选择一个方向的所有行程(由 route_id 指定)。如果提供了 direction_id,还必须提供 route_id
trip TripDescriptor 在特定条件下必需 1 此选择器引用的 GTFS 中的行程实例。此 TripDescriptor 必须解析为 GTFS 数据中的单个行程实例(例如,生产方不能只为 exact_times=0 行程提供 trip_id)。如果在此 TripDescriptor 内填充了 ScheduleRelationship 字段,消费者在尝试识别 GTFS 行程时将忽略该字段。
stop_id string 在特定条件下必需 1 此选择器引用的 GTFS Feed 中的 stop_id

message TranslatedString

国际化消息,包含每种语言的文本片段或网址。系统会提取消息中的某个字符串。解决方法如下:如果界面语言与翻译的语言代码匹配,系统会选择第一个匹配的翻译。如果默认界面语言(例如,系统会匹配译文的语言代码,系统会选择第一个匹配的译文。如果某些翻译语言未指定语言代码,系统就会选择该翻译。

字段

字段名称 类型 必需 基数 说明
translation Translation 必填 很多 必须提供至少一种译文。

message 翻译

映射到语言的本地化字符串。

字段

字段名称 类型 必需 基数 说明
text string 必填 1 包含消息的 UTF-8 字符串。
language string 在特定条件下必需 1 BCP-47 语言代码。如果语言未知,或者 Feed 没有任何国际化,则可以省略。最多只能有一种翻译包含未指定的语言标记 - 如果有多个翻译,则必须提供语言。