本页面列出了静态公交 Feed 的验证错误和警告,以及有关如何排查这些问题的提示。
静态验证错误
验证错误是严重的阻塞问题,您必须先解决这些问题,然后 Google 才能正确处理您的 Feed。
如需调试这些错误,请使用下表中的信息。
- “错误消息”列提供公交合作伙伴信息中心验证报告中显示的消息。它会对错误进行总结。
- “相关文件”列会显示您需要打开和排查问题的文件。
- “问题排查提示”列提供了解决错误所需执行的主要步骤。
| 错误消息 | 相关文件 | 问题排查提示 | 
|---|---|---|
| 使用不同语言的代理机构 | agency.txt | 在“ agency_lang”列中,确认所有代理机构都使用相同的agency_lang值。 | 
| 时区不同的代理机构 | agency.txt | 在“ agency_timezone”列中,确认所有代理机构都使用相同的agency_timezone值。 | 
| 代理机构语言与 Feed 语言不一致 | agency.txt,feed_info.txt | 验证这两个文件中以下列中的语言代码是否相同: 
 | 
| Feed 未指定语言 | agency.txt,feed_info.txt | 在其中一个文件中,验证以下列是否提供语言代码: 
 | 
| 缺少必需的列 | 不限 | 将缺失的列添加到相应的文本 ( .txt) 文件中。 | 
| attributions.txt中已废弃的列 | attributions.txt | 删除已废弃的 attribution_text列。 | 
| 已过期的 Feed 服务时间非常短 | calendar.txt | 验证 Feed 中的 start_date和end_date列是否是最新的,并且是否包含有意义的开始日期和结束日期。 | 
| 同时包含路线 ID 参考信息的机票价格规则 | fare_rules.txt | 检查 route_id和contains_id列。您可以使用route_id或contains_id定义费率规则。因此,无需同时向这两列填充值。 | 
| 多个 Feed 信息条目 | feed_info.txt | 确保 feed_info.txt文件中只有一个条目。 | 
| 重叠的基于频率的行程 | frequencies.txt | 检查 trip_id、start_time和end_time列。确保具有相同trip_id值的行没有任何重叠的start_time和end_time间隔。 | 
| 基于频次的行程转接 | frequencies.txt,transfers.txt | 验证 transfers.txt文件中的from_stop_id和to_stop_id列是否引用了frequencies.txt文件中条目为exact_times=0的任何行程。 | 
| 缺少 Pathways 的必需列 | pathways.txt | 验证 pathways.txt文件是否同时包含pathway_mode和is_bidirectional列。 | 
| 缺少 Pathways 的必填值 | pathways.txt | 验证 pathway_mode和is_bidirectional列是否包含有效值。 | 
| 必须提供路线的短名称或长名称 | routes.txt | 检查 route_short_name和route_long_name列。确保每个路线至少在其中一个列中包含一个值。 | 
| 条目过多 | routes.txt,stops.txt | 验证 routes.txt和stops.txt中的条目是否包含反映真实公交系统的准确信息。 | 
| 包含部分形状-行进距离值的形状 | shapes.txt | 检查 shape_dist_traveled列。如果定义了任何shape_dist_traveled值,则必须为所有形状点定义此值。否则,请将这些值留空。 | 
| 点位置太靠近原点 (0,0) | shapes.txt,stops.txt | 验证以下列中的纬度和经度值是否准确,而不是 ( 
 | 
| 点位置过于接近北极/南极 | shapes.txt,stops.txt | 验证以下列中的纬度和经度值是否准确,而不是 ( 
 | 
| 到达时间早于上一个出发时间的停靠点时间 | stop_times.txt | 检查 stop_sequence、arrival_time和departure_time列。确保先前条目的每个departure_time值不晚于后续条目的arrival_time值。 | 
| 仅指定了到达时间或出发时间的停靠点时间 | stop_times.txt | 指定 arrival_time和departure_time列的值。 | 
| 行程出发时间过长 | stop_times.txt | 按升序对“ stop_sequence”列进行排序。如需验证行程,请使用第一个条目中的trip_id列。验证其关联的departure_time列是否具有合理的值。 | 
| 行程过长 | stop_times.txt | 验证 departure_time和arrival_time列是否具有反映实际情况的合理值。 | 
| 到达时间无序的行程 | stop_times.txt | 检查 arrival_time和stop_sequence列。一个或多个值的顺序与上一个条目不符。arrival_time和stop_sequence值始终需要大于上一次行程条目的值。 | 
| 出发时间无序的行程 | stop_times.txt | 检查 departure_time和stop_sequence列。一个或多个值的顺序可能与上一个条目不符。departure_time和stop_sequence值始终需要大于上一次行程条目中的值。 | 
| 行程的 Shape-Distance-Traveled 顺序有误 | stop_times.txt | 检查 shape_dist_traveled列。一个或多个值的顺序可能与特定trip_id值的上一个条目不符。shape_dist_traveled值始终需要大于上一次行程条目的值。 | 
| 没有父级充电站的位置 | stops.txt | 检查 location_type列,其中的值为2(入口)、3(通用节点)或4(登机区)。确保这些值中的每个值在parent_station列中都有关联的值。 | 
| 父级充电站的地理位置类型有误 | stops.txt | 检查 parent_station和location_type列。验证充电站的location_type值是否为1。 | 
| 具有父级充电站的充电站 | stops.txt | 检查 location_type和parent_station列。验证每个充电站 (location_type=1) 是否不具有parent_station值。 | 
| 包含父级充电站和时区的停止 | stops.txt | 检查 parent_station和stop_timezone列。如果相应经停点有父级车站,则会继承父级车站的时区。因此,如果parent_station有值,请将stop_timezone值留空。 | 
| 找不到任何经停点 | stops.txt | 验证 stops.txt文件是否存在,以及是否包含一行或多行有效值。 | 
| 包含经停时间替换项的地理位置 | stops.txt,stop_times.txt | 验证以下列是否都引用了必须是经停点 ( 
 | 
| 包含经停时间的地点 | stops.txt,stop_times.txt | 验证以下列是否都引用了必须是经停点 ( 
 | 
| 转接路线和行程无效 | transfers.txt | 检查 from_route_id、to_route_id、from_trip_id和to_trip_id列。验证引用路线和行程的每个条目都包含属于指定路线的行程。 | 
| 转移重复 | transfers.txt | 验证 transfers.txt文件中的每个列是否没有重复条目。 | 
| 转移时间最短,但转移类型无效 | transfers.txt | 验证 min_transfer_time列中的值是否与2的transfer_type值匹配。这是因为只有这种转接类型要求在行程到达和出发之间留出最短的时间。 | 
| 在经停点和车站之间转乘 | transfers.txt | 检查 from_stop_id和to_stop_id列。确保transfers.txt文件中没有任何模糊的车站到车站和车站到车站的换乘。具体而言,如果系统找到从第一个车站到第二个车站中包含的某个经停点的换乘,并且又找到从第一个车站中包含的某个经停点到第二个车站的另一个换乘。 | 
| 翻译意外值 | translations.txt | 在所有列中,验证必须为空的字段是否没有任何值。 | 
| 屏蔽停靠时间重叠的行程 | trips.txt | 检查 block_id列,看看是否有任何停止时间重叠。
        如果同一服务日期内有两次行程处于有效状态,则这两次行程的停止时间不能重叠。具体而言,某个区块中某次行程的最后出发时间需要小于或等于该区块中下一次行程的第一个到达时间。 | 
| 重复的 GTFS 文件 | 包含所有文本 ( .txt) 文件的 ZIP 文件 | 避免向公交合作信息中心上传重复的 ZIP 文件。仅在上传的 ZIP 文件中包含新数据时上传该文件。 | 
| 无法打开 GTFS | 包含所有文本 ( .txt) 文件的 ZIP 文件 | 将所有文本文件直接压缩为 ZIP 文件,然后再次将其上传到公交合作伙伴信息中心。 | 
静态验证警告
验证警告是指显示 Feed 可能存在问题的消息。请务必排查这些警告。如果您不解决这些问题,Feed 中的数据可能会在 Google 地图上显示不正确。
如需调试警告,请使用下表中的信息。
- “警告消息”列提供在公交合作伙伴信息中心的验证报告中显示的消息。它会总结警告。
- “相关文件”列会提供您需要打开和排查问题的文件。
- “问题排查提示”列会提供解决警告所需执行的主要步骤。
| 警告消息 | 相关文件 | 问题排查提示 | 
|---|---|---|
| Feed 未指定语言 | agency.txt | 在 agency.txt文件中添加agency_lang列。或者,添加feed_info.txt文件。 | 
| 电话号码无效 | agency.txt和attributions.txt | 验证以下列中的值是否符合电话号码命名惯例: 
 | 
| 未知列 | 不限 | 打开警告中提及的文件,检查列名称是否有拼写错误,或者删除多余的列。 | 
| 未知文件 | 不限 | 打开警告中提及的文件,检查文件名是否有拼写错误,或删除多余的文件。 | 
| 前导空格或尾随空格 | 不限 | 检查受影响的列,并从值中删除所有开头或结尾空格。 | 
| 列名称为空 | 不限 | 检查受影响的文件。确保没有空列名称。 | 
| 空行 | 不限 | 检查受影响的文件,确保每行都包含有效值。 | 
| 翻译意外值 | 不限 | 检查受影响的文件。确保所有必须为空的列实际上都没有值。 | 
| 网址无效 | 以下任意文件: 
 | 在以下列中查找任何无效的网址值: 
 | 
| attributions.txt中已废弃的列 | attributions.txt | 找到已废弃的列并将其移除。 | 
| Feed 中没有日历日期例外情况 | calendar_dates.txt | 如果服务在某些日期(例如节假日)处于非活动状态,请务必提供日期信息。 | 
| 日历没有活跃的星期几 | calendar.txt | 检查 monday到sunday列,确保每个日历条目至少包含一周中的某一天。 | 
| Feed 到期 | calendar.txt | 在 Feed 中,验证 end_date列是否包含当前日期以及近期的日期。 | 
| Feed 服务时间非常短 | calendar.txt | 验证 Feed 的 start_date和end_date列中是否至少包含 14 天的服务数据。 | 
| 日历服务 ID 没有活跃天数 | calendar.txt和calendar_dates.txt | 验证每个服务的 service_id值是否至少包含一些有效的服务日期。 | 
| Feed 中没有服务日期 | calendar.txt和calendar_dates.txt | 验证以下列是否包含有效的服务日期: 
 | 
| 服务日期差距 | calendar.txt和calendar_dates.txt | 请验证以下列中的服务日期是否存在较大空档。大时间间隔表示公交服务中断: 
 | 
| 有规则和无规则的机票价格 | fare_attributes.txt和fare_rules.txt | 检查 fare_id列,确认fare_attributes.txt文件中的所有费率都与fare_rules.txt文件中的规则相关联。 | 
| 没有规则的多个票价 | fare_attributes.txt和fare_rules.txt | 检查 fare_id列,确认fare_attributes.txt文件中的所有费率都与fare_rules.txt文件中的规则相关联。 | 
| Feed 信息提前启动 | feed_info.txt | 检查 feed_start_date列,验证此 Feed 中的服务是否在适当的时间开始。 | 
| 未来服务 | feed_info.txt | 检查  | 
| 缺少 Feed 信息日期 | feed_info.txt | 检查 feed_start_date和feed_start_end列。如果一个列包含值,请务必在另一个列中输入值。 | 
| 频次间隔时间长于间隔时间 | frequencies.txt | 检查 frequencies.txt文件中的每个条目,验证headway_secs值是否不大于end_time值与start_time值之间的差值。 | 
| 精确时间频次不一致 | frequencies.txt | 验证具有相同 trip_id的所有行的exact_times列值是否相同。 | 
| 低频 | frequencies.txt | 检查 headway_secs列,确保其值不超过 1800 秒。如需提高频率,请根据实际情况缩短此时间间隔。您可以使用确切时间(在frequencies.txt中使用exact_times=1)对行程进行建模,也可以在trips.txt中对各个行程进行建模。 | 
| 重叠的基于频率的行程 | frequencies.txt | 检查具有相同 trip_id值的所有行,以验证start_time和end_time间隔时间是否不重叠。 | 
| 过于频繁 | frequencies.txt | 验证 headway_secs列中的建议间隔时间是否超过一分钟,也就是说,该值必须高于60。 | 
| 缺少互惠路径 | pathways.txt | 验证 is_bidirectional列是否存在且值是否有效。验证from_stop_id和to_stop_id列中没有任何条目的值是相反的。 | 
| 缺少路径的必填值 | pathways.txt | 验证以下列是否不为空且包含值: 
 | 
| 路径是循环 | pathways.txt | 检查 from_stop和to_stop列,并验证每个条目中的这些列是否包含不同的值。这为乘客定义了实用的路径。 | 
| 路线颜色对比度 | routes.txt | 请验证 route_text_color和route_color列是否使用了对比鲜明的颜色,因为它们通常用作显示路线名称的文本和背景颜色。详细了解易辨认的色彩对比度(文本为 4.5:1)。 | 
| 路线名称包含特殊字符 | routes.txt | 检查 route_long_name和route_short_name列。
        移除或替换所有特殊字符,例如! $ % \ * = _。 | 
| 重复使用路线名称 | routes.txt | 检查  | 
| 路线短名称与长名称相同 | routes.txt | 检查  | 
| 路线简称包含在长名称中 | routes.txt | 验证 route_short_name或route_long_name列中没有重叠的值。 | 
| 路线短名称过长 | routes.txt | 验证  | 
| 路线长名称过短 | routes.txt | 验证 route_long_name列是否包含有意义的值,而不是缩写名称。 | 
| 路线名称等于说明 | routes.txt | 验证 route_short_name和route_long_name列是否不包含与route_desc列中任何值重叠的值。 | 
| 屏蔽路线类型不一致的行程 | routes.txt和trips.txt | trips.txt文件中具有相同block_id值的行程需要在routes.txt文件中具有一致的route_type值。 | 
| 沿形状的非递增 shape_dist_traveled | shapes.txt | 验证 shape_dist_traveled列中的每对相邻数据点的值是否呈递增趋势。 | 
| 停止时间与 shape_dist_traveled值不匹配 | shapes.txt和stop_times.txt | 验证 stop_times.txt文件中的停止条目是否与shapes.txt中的shape_dist_traveled值定义的停止位置相距不远。 | 
| 停止时离形状太远 | shapes.txt和stop_times.txt | 检查 stop_times.txt文件中的停止条目和shapes.txt文件中的形状条目。每个经停点距离行程的路线不得超过约 100 米。 | 
| 停止以错误的顺序匹配形状 | shapes.txt和stop_times.txt | 验证 stop_times.txt文件中的经停点条目是否与shapes.txt文件中的 Shape 定义的到达-出发顺序一致。 | 
| 停止图形有太多匹配项 | shapes.txt和stop_times.txt | 检查 stop_times.txt中的经停点条目,并减少与行程的路线(由shapes.txt中的形状条目定义)的可能匹配项。 | 
| 行程包含 Shape-Distance-Traveled 值,但没有 Shape 值 | shapes.txt和stop_times.txt | 检查 stop_times.txt文件中的shape_dist_traveled列。请务必在shapes.txt文件中为与行程关联的形状指定shape_dist_traveled值。 | 
| 包含 Shape-Distance-Traveled 值但没有 Shape 的行程 | shapes.txt和stop_times.txt | 检查 stop_times.txt中的shape_dist_traveled列和trips.txt中的shape_id列。验证行程是否具有shape_dist_traveled值和相应的shape_id值。 | 
| Unused Shape | shapes.txt和trips.txt | 检查 shapes.txt和trips.txt中的shape_id列。验证trips.txt文件是否引用了shapes.txt中的每个shape_id值。 | 
| 在相距较远的两个经停点之间快速旅行 | stop_times.txt | 检查 stop_times.txt文件中的arrival_time和departure_time列。验证公交车的平均速度是否在适当范围内,并据此计算到达最远车站所需的时间。 | 
| 在经停点之间快速旅行 | stop_times.txt | 检查 stop_times.txt文件中的arrival_time和departure_time列。验证公交车的平均速度是否在适当的范围内,并据此计算时间。 | 
| 经停点标头包含特殊字符 | stop_times.txt | 检查 stop_headsign列。移除或替换所有特殊字符,例如! $ % \ * = _。 | 
| 到达间隔时间较长的经停点时间 | stop_times.txt | 检查 arrival_time列。验证同一行程中任何两个连续经停点的到达时间相差不超过 24 小时。 | 
| 出发时间与到达时间间隔较长的经停点 | stop_times.txt | 检查 departure_time和arrival_time列。验证从出发时间到下次可能的到达时间不超过 24 小时。 | 
| 可疑行程的首次出发时间 | stop_times.txt | 验证 departure_time列中行程的第一个出发时间不超过 36 小时。 | 
| 连续停车时间过多且时间相同 | stop_times.txt | 检查 departure_time和arrival_time列。验证相距较远的连续经停点的到达和离开时间是否不同。 | 
| 包含部分形状-行程距离值的行程 | stop_times.txt | 检查 shape_dist_traveled列。包含所有经停点或无经停点的距离值。 | 
| 停止时间时间点(未指定时间) | stop_times.txt | 验证 arrival_time和departure_time列是否包含有效的时间点。 | 
| 无上车点或下车点的行程 | stop_times.txt | 验证 pickup_type和drop_off_type列是否包含有效值,如果不含任何值,请将其移除。 | 
| 无法使用的行程 | stop_times.txt和trips.txt | 检查 trips.txt和stop_times.txt中的trip_id列。验证每个trip_id值在stop_times.txt中是否至少有两个条目。 | 
| 未使用的行程 | stop_times.txt和trips.txt | 检查 trips.txt和stop_times.txt中的trip_id列。验证stop_times.txt文件是否引用了trips.txt文件中的每个trip_id值。 | 
| 位置离其父级太远 | stops.txt | 检查  
 | 
| 缺少平台代码 | stops.txt | 检查 stop_name和platform_code列。验证包含平台代码的任何stop_name列是否在platform_code列中具有相应的值。 | 
| 充电站未使用 | stops.txt | 检查 parent_station列。相应相应车站 (location_type=1) 需要有一组子经停点与其相关联。 | 
| 相邻充电站距离过近 | stops.txt | 检查相应充电站的  
 | 
| 经停点名称包含特殊字符 | stops.txt | 检查 stop_name列。移除或替换所有特殊字符,例如! $ % \ * = _。 | 
| 经停点名称包含经停点代码或 ID | stops.txt | 验证 stop_name列不包含任何stop_code或stop_id值。 | 
| 相应经停点距离相应充电站过近 | stops.txt | 验证相应经停点是否属于相应车站。如果是,请在 parent_station列中将相应经停点与相应车站相关联。 | 
| 相邻经停点过近 | stops.txt | 检查相应经停点的  
 | 
| 名称和说明相同的停靠点 | stops.txt | 验证 stop_name和stop_desc列中每个经停点的值是否不同。 | 
| 没有父级充电站的平台 | stops.txt | 验证 parent_station字段是否包含包含platform_code列的平台的有效值。 | 
| 相应充电站中无法到达的位置 | stops.txt | 检查 location_type列。验证所有平台 (location_type=1) 和通用节点 (location_type=3) 是否至少在一个方向(从入口或到出口)可达。 | 
| 悬空的通用节点 | stops.txt | 检查 location_type列。通用节点 (location_type=3) 用于将路径关联在一起,因此必须有两个或更多事故地点(在pathways.txt的from_stop_id和to_stop_id中定义)。 | 
| 停止使用 Unused | stops.txt和stop_times.txt | 检查 stops.txt和stop_times.txt中的stop_id列。每个经停点都需要通过多个经停时间进行引用,这些时间描述了为该经停点提供服务的公交车辆的运行时间表。 | 
| 最短转移时间过长 | transfers.txt | 验证 min_transfer_time列中的值是否合理;即,不比乘客步行所需的实际换乘时间长得多。 | 
| 传输距离非常长 | transfers.txt | 检查 from_stop_id和to_stop_id列。验证两个换乘点之间的距离是否合理;也就是说,不比乘客步行距离大得多 | 
| 转移步伐速度过快 | transfers.txt | 验证 min_transfer_time列中的值是否合理;即,不比乘客步行所需的实际换乘时间短得多。 | 
| 检测到非官方译文格式 | translations.txt | 验证 table_name列是否存在且包含有效值。 | 
| 行程标头包含路线长名称 | trips.txt | 检查 trip_headsign和route_long_name列。由于这两者都会显示在 Google 地图上,因此请确保trip_headsign列不包含route_long_name值。 | 
| 行程标头包含路线简称 | trips.txt | 检查 trip_headsign和route_short_name列。由于这两者都会显示在 Google 地图上,因此请确保trip_headsign列不包含route_short_name值。 | 
| 行程标头包含特殊字符 | trips.txt | 检查 trip_headsign列。移除或替换所有特殊字符,例如! $ % \ * = _。 | 
| 行程重复 | trips.txt,以及可能的calendar.txt、calendar_dates.txt、stop_times.txt | 在以下文件中验证,在同一有效服务日期的同一停靠时间没有重复行程: 
 | 
| 屏蔽经停时间重叠的行程 | trips.txt,以及可能的calendar.txt、calendar_dates.txt、stop_times.txt | 在以下文件中验证行程在同一有效服务日期上的停靠时间是否不重叠: 
 |