实时验证错误和警告

本页面列出了实时公交 Feed 的验证错误和警告,以及有关如何排查这些问题的提示。

实时验证错误

为向乘客提供准确的信息,请务必修正实时 Feed 中的所有验证错误。

如需调试实时验证错误,请使用下表中的信息。

  • “枚举值”列提供实时 Feed 中问题的简称,该简称会显示在公交合作伙伴信息中心的验证报告中。
  • “错误消息”列提供公交合作伙伴信息中心验证报告中显示的消息。它会对错误进行总结。
  • “问题排查提示”列提供了解决错误所需执行的主要步骤。
枚举值 错误消息 问题排查提示
PROTO_MISSING_FIELDS_ERROR 二进制协议缓冲区缺少字段 %(field) 在文本编辑器中打开该文件,并验证 Feed 是否包含 FeedMessage 协议缓冲区中标记为必填的所有字段。
PROTO_ASCII_ERROR 无法解析 ASCII 协议缓冲区。错误:%(field) 在文本编辑器中打开该文件,并验证 Feed 是否包含所有必填字段并使用正确的语法。
PROTO_PARSE_ERROR 无法解析二进制协议缓冲区。 在文本编辑器中打开该文件,并验证 Feed 是否可以解析为 FeedMessage。您可以在Feed 示例中找到代码示例。
URL_DNS_ERROR 网址存在 DNS 错误。 检查互联网连接和 DNS 设置。
FETCHER_CONNECTION_ERROR 未能连接到网址。 验证您提供用于提取的网址。请确保网址正确无误。
CUSTOM_PARSE_ERROR 未能解析自定义格式 Feed:%(value_string) 在文本编辑器中验证文件内容。确认文件生成正确且在传输过程中未损坏。如果错误仍然存在,请与您的 Google 公交代表联系以寻求帮助。
FEED_TOO_OLD Feed 时间戳 %(timestamp) (%(timestamp_string)) 已过 %(diff_time) 秒 (%(difftime_string))。当前时间为 %(localtime) (%(localtime_string))。Feed 已被舍弃。 验证系统是否报告了有关提取 Feed 的其他问题。定期生成 Feed 并确保数据保持最新状态。确保 Feed 时间戳正确表示从公元纪年 (UTC 时区) 起算的 Feed 创建时间(以秒为单位)。
FETCHER_HTTP_ERROR HTTP 错误:%(value) 验证返回的 HTTP 错误代码,并相应地调查问题。
FULL_DATASET_REQUIRED 仅支持 FULL_DATASET Feed。 incrementality 的值设置为 FULL_DATASET
FEED_TIMESTAMP_CONSISTENTLY_IN_THE_FUTURE Feed 时间戳始终比当前时间提前 %(diff_time) 秒 (%(difftime_string))。 请务必以世界协调时间 (UTC) 时区提供时间戳,以自公元纪年以来经历的秒数表示。检查服务器的时钟,确保它们都已同步(例如通过 NTP)。
INVALID_TIMESTAMP_RANGE Feed 时间戳值超出范围 (%(timestamp))。 提供 Feed 时间戳,表示自公元纪年起到 Feed 创建时间经过的秒数(采用世界协调时间 [UTC])。
PROTO_ENCODING_UNKNOWN 未知的 Feed 编码。 使用正确的编码来配置 Feed。最终 Feed 需要采用二进制格式,但您可以使用 ASCII 格式进行测试。
VEHICLE_POSITION_INTERNAL_ERROR %(trip_id)VehiclePosition 转换为 TripUpdate 失败,并返回了通用错误“%(value_string)”。 此错误表示 VehiclePosition 未用于估算 TripUpdate。请与您的 Google 公交代表联系以寻求帮助。

实时验证警告

为提高 Feed 数据质量,请务必解决表明您的实时 Feed 可能存在问题的验证警告。

如需调试实时验证警告,请搜索下表中的条目。

  • “枚举值”列提供实时 Feed 中问题的简称,该简称会显示在公交合作伙伴信息中心的验证报告中。
  • “警告或信息消息”列会显示公交合作伙伴信息中心验证报告中显示的消息。它会总结警告或信息。
  • “问题排查提示”列会提供解决警告所需执行的主要步骤。
枚举值 警告或信息消息 问题排查提示
TRIP_UPDATE_SOME_STU_NOT_MATCHED 有效 StopTimeUpdates 指定的 trip_id%(trip_id)”的 %(value) 无法与 GTFS 行程匹配。例如,位置:%(index) stop_sequence:%(next_seq) stop_id:“%(stop_id)”。 确保以正确的顺序提供 StopTimeUpdates
VEHICLE_POSITION_DUPLICATE_TRIP_BLOCK_TRANSFER 由多辆车辆报告的街区转移行程 $(trip_id)start_time $(timestamp_string) 确保在特定开始时间只有一辆车代表一趟行程。
INVALID_ALERT_ROUTE_NOT_MATCHED 提醒已舍弃:route_id%(route_id)”无法与 GTFS Feed 匹配。 验证静态时间表是否正确,并在缺少路线信息时添加路线信息。新静态时间表生效后,请更正实时 Feed 中的 route_id 参考。
INVALID_ALERT_STOP_NOT_MATCHED 提醒已舍弃:stop_id%(stop_id)”无法与 GTFS Feed 匹配。 验证静态时间表是否正确,并在缺少相应信息时添加相应经停点信息。新静态时间表生效后,请更正实时 Feed 中的 stop_id 参考。
INVALID_ALERT_TRIP_NOT_MATCHED 提醒已舍弃:trip_id%(trip_id)”无法与 GTFS Feed 匹配。 验证静态时间表是否正确,并在缺少行程信息时添加行程信息。新静态时间表生效后,请更正实时 Feed 中的 trip_id 参考。
STOP_TIME_UPDATE_PREMATURE_ARRIVAL stop_id%(stop_id)”和 stop_sequence %(next_seq) 的“%(trip_id)”行程的 StopTimeUpdate 到达时间比之前的 stop_id%(other_id)”和 stop_sequence %(prev_seq)StopTimeUpdate 提前了 %(value) 秒。 查看给定 stop_id 或之前的 stop_id 的到达时间和出发时间。修正不正确的值,以确保时间不会缩短。
INVALID_ALERT_NO_INFORMED_ENTITIES 应提供至少一个已获知实体。 在提醒中添加相关 informed_entity
PROTO_ENCODING_MISMATCH 配置的 proto 编码与收到的编码不同。 以正确的格式提供 Feed。如果问题仍然存在,请与您的 Google 公交代表联系以寻求帮助。
STOP_TIME_UPDATE_PREMATURE_DEPARTURE stop_id 为“%(stop_id)”且 stop_sequence%(next_seq) 的“%(trip_id)”行程的 StopTimeUpdate 出发时间比之前的 stop_id 为“%(other_id)”且 stop_sequence%(prev_seq)StopTimeUpdate 提前了 %(value) 秒。 查看给定 stop_id 或之前的 stop_id 的出发时间。修正了错误的值,以确保出发时间不会减少。
DETOUR_MUST_SPECIFY_TIME 通过经停点“%(stop_id)”绕行的行程“%(trip_id)”必须指定绝对时间。 请提供受影响 stop_id 中指定 trip_id 的确切时间。
ENTITY_MUST_HAVE_ALERTS 实体必须包含警报。 验证 Feed 内容是否完整,以及每条 FeedEntity 消息是否包含服务提醒相关信息。
ENTITY_MUST_HAVE_POSITIONS 实体必须具有位置。 验证 Feed 内容是否完整,以及每条 FeedEntity 消息是否包含车辆位置信息。
ENTITY_MUST_HAVE_UPDATES 实体必须包含行程更新。 验证 Feed 内容是否完整,以及每条 FeedEntity 消息是否包含有关行程更新的信息。
TIMESTAMP_FUTURE Feed 时间戳 %(timestamp) (%(timestamp_string)) 比未来时间提前 %(diff_time) 秒 (%(difftime_string))。使用获取时间戳 %(localtime) (%(localtime_string))。 请务必以世界协调时间 (UTC) 时区提供时间戳,以自公元纪年以来经历的秒数表示。检查服务器的时钟,确保它们都已同步(例如通过 NTP)。
TIMESTAMP_PAST Feed 时间戳 %(timestamp) (%(timestamp_string)) 比当前时间晚了 %(diff_time) 秒 (%(difftime_string))。使用获取时间戳 %(localtime) (%(localtime_string))。 更频繁地重新生成实时 Feed,即使内容保持不变或为空也是如此。
NO_VALID_TEXT %(field)”字段没有有效的翻译。 查看 TranslatedString 消息并修复所有相关问题,例如 HTML_TAGS_FOUNDINVALID_URL_LENGTHINVALID_TEXT_LENGTHINVALID_URL
HTML_TAGS_FOUND 字段 %(field)(%(index)) 包含 HTML 标记。 从字段中移除所有 HTML 标记。
INVALID_LANGUAGE 字段 %(field)(%(index)) 的语言代码“%(language)”无效。 将语言字段设置为有效的 BCP-47 语言代码
INVALID_URL 字段 %(field)(%(index)) 中的网址无效(应为绝对 http 或 https)。 请附上提醒的有效网址。
INVALID_TEXT_LENGTH 字段 %(field)(%(index)) 的长度为 %(length)(上限为 %(max_length))。 缩短提供的文本,这些文本通常会显示在小屏幕上,例如手机。如果您想向用户提供更多详细信息,请改为提供网址引用。
INVALID_URL_LENGTH 字段 %(field)(%(index)) 的网址长度为 %(length)(上限为 %(max_length))。 请提供符合限制的网址。
MULTIPLE_UNSPECIFIED_LANGUAGE %(field)(%(index)) 字段是重复的翻译,未设置语言。 查看 TranslatedString 消息。为提供了多个译文的 language 字段设置正确的值。
INVALID_TRIP_UPDATE_DELAY 行程更新中的延迟时间无效:%(value) 检查给定 entity_iddelay 字段,并修正不正确的值。
INVALID_TRIP_UPDATE_EVENT_TIME 停止事件时间无效:%(timestamp) 仅针对正在进行或即将发生的行程添加 TripUpdates
INVALID_TRIP_UPDATE_DEPARTURE_NO_TIME 未为出发提供 timedelay 在每个 StopTimeEvent 消息中添加 time 字段和/或 delay 字段。如果没有可用的信息,请省略 departure 字段。
INVALID_TRIP_UPDATE_ARRIVAL_NO_TIME 未为到达时间提供 timedelay 在每个 StopTimeEvent 消息中添加 time 字段和/或 delay 字段。如果没有可用的信息,请省略 arrival 字段。
MISSING_CONTENT_AND_EFFECT 无有效内容或特效。 effectheader_textdescription_text 添加到提醒中。如果没有可用信息,请改为移除 alert
CUSTOM_PARSE_WARNING 解析自定义格式 Feed 时部分失败:%(value_string) 此错误表示无法解析实时 Feed 的一部分。打开文本编辑器以验证 Feed 的内容,或重新上传 Feed。如果错误仍然存在,请与您的 Google 公交代表联系以寻求帮助。
VEHICLE_POSITION_BAD_START_TIME 指定的行程 $(trip_id) 开始时间距离车辆实际启动时间相差 %(diff_time) 秒。 指定接近行程实际开始时间的车辆开始时间。
INVALID_TRIP_UPDATE_INCONSISTENT_IDS stop_sequence %(value) 与行程“%(trip_id)”的停靠点“%(stop_id)”不匹配。使用静态索引中的 stop_sequence %(next_seq) 替换它。 确保 stop_sequence 字段的值正确无误,并且与当前静态 Feed 中相同 stop_idtrip_idstop_sequence 相匹配。
INVALID_STOP_STOP_ID StopTimeUpdate 已舍弃:为行程“%(trip_id)”指定的stop_id%(stop_id)”无法与 GTFS Feed 匹配。 stop_sequence [if present] %(value) 验证静态 Feed 的准确性。如果需要,请为行程在 stop_times.txt 中固定 stop_id 的值。等待新版静态 Feed 发布。更新实时 Feed 中的 stop_id 引用。
INVALID_STOP_SEQUENCE_ID StopTimeUpdate 已舍弃:stop_sequence%(value) %(trip_id) 行程中的“%(trip_id)”无法与 GTFS Feed 匹配。 验证静态 Feed 的准确性。根据需要,修正 stop_sequence 的值。等待新版静态 Feed 发布。更新实时 Feed 中的 stop_sequence 引用。
INVALID_TRIP_UPDATE_ORDER StopTimeUpdate 已舍弃:stop_sequence违反了以下顺序:trip_id%(trip_id)stop_id [如果有]“%(stop_id)stop_sequence %(prev_seq) 后跟 %(next_seq) 请务必使用 stop_sequence 设置 StopTimeUpdates 的顺序。
FEED_TIMESTAMP_CONSISTENTLY_IN_THE_PAST Feed 时间戳始终比实际时间晚 %(diff_time) 秒 (%(difftime_string))。 确认时间戳值采用 UTC 时区,以从公元纪年开始计算的秒数表示。确认服务器的时钟是否已同步(例如通过 NTP)。请务必定期更新 Feed。
TIMESTAMP_MISSING Feed 的 FeedHeader 缺少 timestamp 字段。 FeedHeader 中填写 timestamp 字段,以世界协调时间 (UTC) 为时区,以自纪元起的秒数表示。时间戳需要正确表示 Feed 生成时间。
ENTITY_MORE_THAN_ONCE FeedEntity 的 ID 在 Feed 中出现多次。 确保 Feed 中的所有实体 ID 都是唯一的。
PROTO_ASCII_HAS_BOM 提供的 Feed 以字节顺序标记 (BOM) 开头。 移除字节顺序标记。确保采用文本格式的协议缓冲区采用 UTF-8 编码且不带 BOM。我们建议您改为以二进制格式提供协议缓冲区。
TRIP_UPDATE_TIMESTAMP_CONSISTENTLY_IN_THE_FUTURE 某些行程更新的 timestamp 始终提前 %(diff_time) 秒 (%(difftime_string))。 确认 timestamp 值的格式为 UTC 时区,以从公元纪年开始计算的秒数表示。确认服务器的时钟是否已同步(例如通过 NTP)。从 Feed 中移除已完成超过 1 小时的行程的 TripUpdates
VEHICLE_POSITION_TIMESTAMP_CONSISTENTLY_IN_THE_FUTURE 时间戳始终比当前时间提前 %(diff_time) 秒 (%(difftime_string))。 确认 timestamp 值的格式为 UTC 时区,以从公元纪年开始计算的秒数表示。确认服务器的时钟是否已同步(例如通过 NTP)。
VEHICLE_POSITION_TIMESTAMP_CONSISTENTLY_IN_THE_PAST timestamp 始终落后 %(diff_time) 秒 (%(difftime_string))。 确认 timestamp 值的格式为 UTC 时区,以从公元纪年开始计算的秒数表示。确认服务器的时钟是否已同步(例如通过 NTP)。从 Feed 中移除已完成超过 1 小时的行程的 VehiclePositions
UNKNOWN_TRIP_ID 静态 GTFS Feed 中未知行程 ID“%(trip_id)”。 验证静态 Feed,确保其包含正确且最新的信息。 确保使用的是正确的静态 Feed 版本,或根据需要上传正确的版本。在 TripDescriptor 中提供现有且准确的 trip_id
TRIP_OUTSIDE_SERVICE_WINDOW ID 为“%(trip_id)”的行程在指定时间未提供服务。 验证静态 Feed 的准确性。如果缺少行程信息,请添加。等到新版静态 Feed 生效。更正实时 Feed 中的 trip_id 参考。
AMBIGUOUS_TRIP_DESCRIPTOR TripDescriptor 不明确,无法解析特定时间的单次行程。 如果行程基于频次,请务必在 TripDescriptor 中提供有效的 start_time 值和 start_date 值。
INVALID_TRIP_UPDATE_FUTURE_TIMESTAMP 与 Feed 时间戳 %(localtime) (%(localtime_string)) 相比,TripUpdate 时间戳 %(timestamp) (%(timestamp_string)) 提前了 %(diff_time) 秒 (%(difftime_string))。 验证时钟源是否设置了正确的时间。验证是否准确执行了任何时区转换。Vehicle.Position.timestamp 字段需要采用世界协调时间 (UTC) 时区格式,以从公元纪年开始计算的秒数表示。
INVALID_VEHICLE_POSITION_FUTURE_TIMESTAMP 与 Feed 时间戳 %(localtime) (%(localtime_string)) 相比,VehiclePosition 时间戳 %(timestamp) (%(timestamp_string)) 提前了 %(diff_time) 秒 (%(difftime_string))。 验证时钟源是否设置了正确的时间。验证是否准确执行了任何时区转换。Vehicle.Position.timestamp 字段需要采用 UTC 时区格式,以从公元纪年开始计算的秒数表示。
INVALID_VEHICLE_POSITION_STALE_TIMESTAMP 与 Feed 时间戳 %(localtime) (%(localtime_string)) 相比,VehiclePosition 时间戳 %(timestamp) (%(timestamp_string)) 要晚 %(diff_time) 秒 (%(difftime_string))。 从 Feed 中移除已停用的车辆。验证时钟是否已同步,以及时区转换是否正确。
INVALID_ALERT_TIME_RANGE_END_PAST 结束时间超过一个月的时间范围:%(time_end) 移除结束时间已过且不再有效的提醒(或 active_periods)。
INVALID_ALERT_TIME_RANGE_ORDER 时间范围顺序相反:(%(time_start), %(time_end))。 验证 active_period 字段的值。这些字段的顺序可能会相反。
INVALID_ALERT_TIME_RANGE_START_FUTURE 时间范围的开始时间晚于现在一年:%(time_start) 在提醒中添加近期的 active_period 开始时间。
STOP_TIME_AND_DELAY_MISMATCH 在相应经停点“%(stop_id)”处,行程“%(trip_id)”指定了时间戳 %(timestamp) 和延迟时间 %(delay),这两个值相互矛盾。将延迟时间设置为 %(value) 验证实时 Feed 是否与当前有效的静态 Feed 相符。确保 StopTimeEvent 中的 delay 字段和 time 字段正确无误且一致。或者,完全省略 delay 字段,改为仅提供 time 字段。
INVALID_START_DATE 行程“%(trip_id)”的开始日期“%(value_string)”无效(假设为今天)。预期格式为“YYYYMMDD”。 验证指定行程的 start_date 值。确保该值正确无误。
INVALID_START_TIME 行程“%(trip_id)”的开始时间“%(value_string)”无效。预期格式为“HH:MM:SS”。 验证指定行程的 start_time 的值和格式。确保值和格式正确无误。
VEHICLE_POSITION_DUPLICATE_TRIP 行程 $(trip_id)start_time $(timestamp_string) 由多辆车辆报告。 更改行程的 start_time,并将 ScheduleRelationship 更改为 ADDED(对于非基于频次的行程)。
VEHICLE_POSITION_CONVERTED_TO_ADDED 行程 $(trip_id) 时间表关系已更改为 ADDED 行程。 此错误是另一个问题的副作用。请先解决该问题,然后再解决此错误。
INVALID_TRIP_UPDATE_MISSING_IDS 行程更新包含 stop_update,但不含 stop_sequencestop_id StopTimeUpdate 消息中添加 stop_id 和/或 stop_sequence
MULTIPLE_ENTITIES_PER_TRIP 行程更新已舍弃:表示与 ID 为 %(value_string) 的其他实体具有相同开始时间的相同 trip_id%(trip_id)”。 确保每个实际行程最多只有一个 TripUpdate。 确保 TripDescriptor 在 Feed 中是唯一的。
INVALID_TRIP_UPDATE_MISSING_CONTENT 对安排的 trip_id%(trip_id)”的更新应至少指定一条包含数据的停靠点时间更新或指定延迟时间。

提供以下任一信息:

  • 包含数据的 StopTimeUpdate
  • TripUpdate.delay
TRIP_UPDATE_SUSPICIOUS_DELAY trip_id%(trip_id)”的行程包含令人怀疑的不合理延迟时间 %(difftime_string) 验证 TripDescription 是否已明确定义,它需要包含 trip_idstart_datestart_time。验证 StopTimeUpdates 的时间值是否与指定的行程相符。检查是否存在任何时区不匹配问题,例如 start_datestart_time 是否采用本地时区,但 FeedMessage 中的所有整数时间字段均采用从公元纪年开始计算的秒数。
TRIP_UPDATE_OBSOLETE trip_id%(trip_id)”行程已于 %(difftime_string) 前结束。 在行程到达终点几分钟后,从 Feed 中移除行程。
UNSUPPORTED_ADDED_WITH_BLOCK_TRANSFER 不支持为包含分块传输的行程 %(trip_id) 创建 TripDescriptor,且 schedule_relationshipADDED 仅使用 ScheduleRelationshipADDED 值来指示孤岛式行程。
UNSUPPORTED_ADDED_WITHOUT_TIMES TripDescriptorschedule_relationshipADDED,表示行程 %(trip_id) 未指定时间。 提供 start_datestart_time,以指明添加的行程的开始时间。
TRIP_UPDATE_TOO_OLD TripUpdate 时间戳 %(timestamp) (%(timestamp_string)) 比当前时间晚了 %(diff_time) 秒 (%(difftime_string))。当前时间为 %(localtime) (%(localtime_string))。TripUpdate 已舍弃。 定期生成 Feed 并确保数据保持最新状态。确保 TripUpdate 时间戳正确无误(以从公元纪年起算的秒数表示),并采用 UTC 时区格式。在行程到达终点几分钟后,从 Feed 中移除行程。
INVALID_TRIP_UPDATE_DELAY_USAGE StopTimeUpdates 中与时间一起指定的 TripUpdatedelay 字段。

请仅使用以下任一项(而非两者)提供时间信息:

  • StopTimeUpdates
  • TripUpdate.delay
INVALID_VEHICLE_POSITION_VEHICLE_ID_MISSING VehiclePosition 缺少车辆标识符。 提供车辆标识符。确保此值在车辆处于服务状态的所有 Feed 版本中保持稳定。
INVALID_VEHICLE_POSITION_INVALID_POSITION VehiclePosition 缺少有效的位置信息。 latitudelongitude 字段提供有效值。
INVALID_VEHICLE_POSITION_TIMESTAMP_MISSING 缺少 VehiclePosition 时间戳。 提供 VehiclePosition 信息收集时间的时间戳值(以世界协调时间 [UTC] 格式表示,单位为秒,从公元纪年开始计算)。