静态验证错误和警告

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

静态验证错误

验证错误是严重的阻塞问题,您必须先解决这些问题,然后 Google 才能正确处理您的 Feed。

如需调试这些错误,请使用下表中的信息。

  • “错误消息”列提供公交合作伙伴信息中心验证报告中显示的消息。它会对错误进行总结。
  • “相关文件”列会显示您需要打开和排查问题的文件。
  • “问题排查提示”列提供了解决错误所需执行的主要步骤。
错误消息 相关文件 问题排查提示
使用不同语言的代理机构 agency.txt 在“agency_lang”列中,确认所有代理机构都使用相同的 agency_lang 值。
时区不同的代理机构 agency.txt 在“agency_timezone”列中,确认所有代理机构都使用相同的 agency_timezone 值。
代理机构语言与 Feed 语言不一致 agency.txtfeed_info.txt

验证这两个文件中以下列中的语言代码是否相同:

  • agency.txt 文件中的 agency_lang
  • feed_info.txt 文件中的 feed_lang
Feed 未指定语言 agency.txtfeed_info.txt

在其中一个文件中,验证以下列是否提供语言代码:

  • agency.txt 文件中的 agency_lang
  • feed_info.txt 文件中的 feed_lang
缺少必需的列 不限 将缺失的列添加到相应的文本 (.txt) 文件中。
attributions.txt 中已废弃的列 attributions.txt 删除已废弃的 attribution_text 列。
已过期的 Feed 服务时间非常短 calendar.txt 验证 Feed 中的 start_dateend_date 列是否是最新的,并且是否包含有意义的开始日期和结束日期。
同时包含路线 ID 参考信息的机票价格规则 fare_rules.txt 检查 route_idcontains_id 列。您可以使用 route_idcontains_id 定义费率规则。因此,无需同时向这两列填充值。
多个 Feed 信息条目 feed_info.txt 确保 feed_info.txt 文件中只有一个条目。
重叠的基于频率的行程 frequencies.txt 检查 trip_idstart_timeend_time 列。确保具有相同 trip_id 值的行没有任何重叠的 start_timeend_time 间隔。
基于频次的行程转接 frequencies.txttransfers.txt 验证 transfers.txt 文件中的 from_stop_idto_stop_id 列是否引用了 frequencies.txt 文件中条目为 exact_times=0 的任何行程。
缺少 Pathways 的必需列 pathways.txt 验证 pathways.txt 文件是否同时包含 pathway_modeis_bidirectional 列。
缺少 Pathways 的必填值 pathways.txt 验证 pathway_modeis_bidirectional 列是否包含有效值。
必须提供路线的短名称或长名称 routes.txt 检查 route_short_nameroute_long_name 列。确保每个路线至少在其中一个列中包含一个值。
条目过多 routes.txtstops.txt 验证 routes.txtstops.txt 中的条目是否包含反映真实公交系统的准确信息。
包含部分形状-行进距离值的形状 shapes.txt 检查 shape_dist_traveled 列。如果定义了任何 shape_dist_traveled 值,则必须为所有形状点定义此值。否则,请将这些值留空。
点位置太靠近原点 (0,0) shapes.txtstops.txt

验证以下列中的纬度和经度值是否准确,而不是 (0,0):

  • shapes.txt 文件中的 shape_pt_latshape_pt_lon
  • stops.txt 文件中的 stop_latstop_lon
点位置过于接近北极/南极 shapes.txtstops.txt

验证以下列中的纬度和经度值是否准确,而不是 (90,0) 或 (-90,0):

  • shapes.txt 文件中的 shape_pt_latshape_pt_lon
  • stops.txt 文件中的 stop_latstop_lon
到达时间早于上一个出发时间的停靠点时间 stop_times.txt 检查 stop_sequencearrival_timedeparture_time 列。确保先前条目的每个 departure_time 值不晚于后续条目的 arrival_time 值。
仅指定了到达时间或出发时间的停靠点时间 stop_times.txt 指定 arrival_timedeparture_time 列的值。
行程出发时间过长 stop_times.txt 按升序对“stop_sequence”列进行排序。如需验证行程,请使用第一个条目中的 trip_id 列。验证其关联的 departure_time 列是否具有合理的值。
行程过长 stop_times.txt 验证 departure_timearrival_time 列是否具有反映实际情况的合理值。
到达时间无序的行程 stop_times.txt 检查 arrival_timestop_sequence 列。一个或多个值的顺序与上一个条目不符。arrival_timestop_sequence 值始终需要大于上一次行程条目的值。
出发时间无序的行程 stop_times.txt 检查 departure_timestop_sequence 列。一个或多个值的顺序可能与上一个条目不符。departure_timestop_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_stationlocation_type 列。验证充电站的 location_type 值是否为 1
具有父级充电站的充电站 stops.txt 检查 location_typeparent_station 列。验证每个充电站 (location_type=1) 是否不具有 parent_station 值。
包含父级充电站和时区的停止 stops.txt 检查 parent_stationstop_timezone 列。如果相应经停点有父级车站,则会继承父级车站的时区。因此,如果 parent_station 有值,请将 stop_timezone 值留空。
找不到任何经停点 stops.txt 验证 stops.txt 文件是否存在,以及是否包含一行或多行有效值。
包含经停时间替换项的地理位置 stops.txtstop_times.txt

验证以下列是否都引用了必须是经停点 (location_type=0) 的位置:

  • stops.txt 文件中的 location_type
  • stop_times.txt 文件中的 stop_id
包含经停时间的地点 stops.txtstop_times.txt

验证以下列是否都引用了必须是经停点 (location_type=0) 的位置:

  • stops.txt 文件中的 location_type
  • stop_times.txt 文件中的 stop_id
转接路线和行程无效 transfers.txt 检查 from_route_idto_route_idfrom_trip_idto_trip_id 列。验证引用路线和行程的每个条目都包含属于指定路线的行程。
转移重复 transfers.txt 验证 transfers.txt 文件中的每个列是否没有重复条目。
转移时间最短,但转移类型无效 transfers.txt 验证 min_transfer_time 列中的值是否与 2transfer_type 值匹配。这是因为只有这种转接类型要求在行程到达和出发之间留出最短的时间。
在经停点和车站之间转乘 transfers.txt 检查 from_stop_idto_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.txtattributions.txt

验证以下列中的值是否符合电话号码命名惯例:

  • agency.txt 中的 agency_phone
  • attributions.txt 中的 attribution_phone
未知列 不限 打开警告中提及的文件,检查列名称是否有拼写错误,或者删除多余的列。
未知文件 不限 打开警告中提及的文件,检查文件名是否有拼写错误,或删除多余的文件。
前导空格或尾随空格 不限 检查受影响的列,并从值中删除所有开头或结尾空格。
列名称为空 不限 检查受影响的文件。确保没有空列名称。
空行 不限 检查受影响的文件,确保每行都包含有效值。
翻译意外值 不限 检查受影响的文件。确保所有必须为空的列实际上都没有值。
网址无效

以下任意文件:

  • agency.txt
  • attributions.txt
  • feed_info.txt
  • routes.txt
  • stops.txt

在以下列中查找任何无效的网址值:

  • stops.txt 中的 stop_url
  • routes.txt 中的 route_url
  • feed_info.txt 中的 feed_publisher_url
  • agency.txt 中的 agency_fare_url
  • agency.txt 中的 agency_url
attributions.txt 中已废弃的列 attributions.txt 找到已废弃的列并将其移除。
Feed 中没有日历日期例外情况 calendar_dates.txt 如果服务在某些日期(例如节假日)处于非活动状态,请务必提供日期信息。
日历没有活跃的星期几 calendar.txt 检查 mondaysunday 列,确保每个日历条目至少包含一周中的某一天。
Feed 到期 calendar.txt 在 Feed 中,验证 end_date 列是否包含当前日期以及近期的日期。
Feed 服务时间非常短 calendar.txt 验证 Feed 的 start_dateend_date 列中是否至少包含 14 天的服务数据。
日历服务 ID 没有活跃天数 calendar.txtcalendar_dates.txt 验证每个服务的 service_id 值是否至少包含一些有效的服务日期。
Feed 中没有服务日期 calendar.txtcalendar_dates.txt

验证以下列是否包含有效的服务日期:

  • calendar.txt 文件中的 start_dateend_date
  • calendar_dates.txt 文件中的 dateexception_type
服务日期差距 calendar.txtcalendar_dates.txt

请验证以下列中的服务日期是否存在较大空档。大时间间隔表示公交服务中断:

  • calendar.txt 文件中的 start_dateend_date
  • calendar_dates.txt 文件中的 dateexception_type
有规则和无规则的机票价格 fare_attributes.txtfare_rules.txt 检查 fare_id 列,确认 fare_attributes.txt 文件中的所有费率都与 fare_rules.txt 文件中的规则相关联。
没有规则的多个票价 fare_attributes.txtfare_rules.txt 检查 fare_id 列,确认 fare_attributes.txt 文件中的所有费率都与 fare_rules.txt 文件中的规则相关联。
Feed 信息提前启动 feed_info.txt 检查 feed_start_date 列,验证此 Feed 中的服务是否在适当的时间开始。
未来服务 feed_info.txt

检查 feed_start_date 列,验证此 Feed 中的服务是否在合理的时间开始。

缺少 Feed 信息日期 feed_info.txt 检查 feed_start_datefeed_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_timeend_time 间隔时间是否不重叠。
过于频繁 frequencies.txt 验证 headway_secs 列中的建议间隔时间是否超过一分钟,也就是说,该值必须高于 60
缺少互惠路径 pathways.txt 验证 is_bidirectional 列是否存在且值是否有效。验证 from_stop_idto_stop_id 列中没有任何条目的值是相反的。
缺少路径的必填值 pathways.txt

验证以下列是否不为空且包含值:

  • pathway_mode
  • is_bidirectional
路径是循环 pathways.txt 检查 from_stopto_stop 列,并验证每个条目中的这些列是否包含不同的值。这为乘客定义了实用的路径。
路线颜色对比度 routes.txt 请验证 route_text_colorroute_color 列是否使用了对比鲜明的颜色,因为它们通常用作显示路线名称的文本和背景颜色。详细了解易辨认的色彩对比度(文本为 4.5:1)。
路线名称包含特殊字符 routes.txt 检查 route_long_nameroute_short_name 列。 移除或替换所有特殊字符,例如 ! $ % \ * = _
重复使用路线名称 routes.txt

检查 route_short_nameroute_long_name 列。我们建议您为其设置具有唯一性的值。

路线短名称与长名称相同 routes.txt

检查 route_short_nameroute_long_name 列。路线短名称需要与路线长名称不同。

路线简称包含在长名称中 routes.txt 验证 route_short_nameroute_long_name 列中没有重叠的值。
路线短名称过长 routes.txt

验证 route_short_name 列中的短路线名称不超过 6 个字符。

路线长名称过短 routes.txt 验证 route_long_name 列是否包含有意义的值,而不是缩写名称。
路线名称等于说明 routes.txt 验证 route_short_nameroute_long_name 列是否不包含与 route_desc 列中任何值重叠的值。
屏蔽路线类型不一致的行程 routes.txttrips.txt trips.txt 文件中具有相同 block_id 值的行程需要在 routes.txt 文件中具有一致的 route_type 值。
沿形状的非递增 shape_dist_traveled shapes.txt 验证 shape_dist_traveled 列中的每对相邻数据点的值是否呈递增趋势。
停止时间与 shape_dist_traveled 值不匹配 shapes.txtstop_times.txt 验证 stop_times.txt 文件中的停止条目是否与 shapes.txt 中的 shape_dist_traveled 值定义的停止位置相距不远。
停止时离形状太远 shapes.txtstop_times.txt 检查 stop_times.txt 文件中的停止条目和 shapes.txt 文件中的形状条目。每个经停点距离行程的路线不得超过约 100 米。
停止以错误的顺序匹配形状 shapes.txtstop_times.txt 验证 stop_times.txt 文件中的经停点条目是否与 shapes.txt 文件中的 Shape 定义的到达-出发顺序一致。
停止图形有太多匹配项 shapes.txtstop_times.txt 检查 stop_times.txt 中的经停点条目,并减少与行程的路线(由 shapes.txt 中的形状条目定义)的可能匹配项。
行程包含 Shape-Distance-Traveled 值,但没有 Shape 值 shapes.txtstop_times.txt 检查 stop_times.txt 文件中的 shape_dist_traveled 列。请务必在 shapes.txt 文件中为与行程关联的形状指定 shape_dist_traveled 值。
包含 Shape-Distance-Traveled 值但没有 Shape 的行程 shapes.txtstop_times.txt 检查 stop_times.txt 中的 shape_dist_traveled 列和 trips.txt 中的 shape_id 列。验证行程是否具有 shape_dist_traveled 值和相应的 shape_id 值。
Unused Shape shapes.txttrips.txt 检查 shapes.txttrips.txt 中的 shape_id 列。验证 trips.txt 文件是否引用了 shapes.txt 中的每个 shape_id 值。
在相距较远的两个经停点之间快速旅行 stop_times.txt 检查 stop_times.txt 文件中的 arrival_timedeparture_time 列。验证公交车的平均速度是否在适当范围内,并据此计算到达最远车站所需的时间。
在经停点之间快速旅行 stop_times.txt 检查 stop_times.txt 文件中的 arrival_timedeparture_time 列。验证公交车的平均速度是否在适当的范围内,并据此计算时间。
经停点标头包含特殊字符 stop_times.txt 检查 stop_headsign 列。移除或替换所有特殊字符,例如 ! $ % \ * = _
到达间隔时间较长的经停点时间 stop_times.txt 检查 arrival_time 列。验证同一行程中任何两个连续经停点的到达时间相差不超过 24 小时。
出发时间与到达时间间隔较长的经停点 stop_times.txt 检查 departure_timearrival_time 列。验证从出发时间到下次可能的到达时间不超过 24 小时。
可疑行程的首次出发时间 stop_times.txt 验证 departure_time 列中行程的第一个出发时间不超过 36 小时。
连续停车时间过多且时间相同 stop_times.txt 检查 departure_timearrival_time 列。验证相距较远的连续经停点的到达和离开时间是否不同。
包含部分形状-行程距离值的行程 stop_times.txt 检查 shape_dist_traveled 列。包含所有经停点或无经停点的距离值。
停止时间时间点(未指定时间) stop_times.txt 验证 arrival_timedeparture_time 列是否包含有效的时间点。
无上车点或下车点的行程 stop_times.txt 验证 pickup_typedrop_off_type 列是否包含有效值,如果不含任何值,请将其移除。
无法使用的行程 stop_times.txttrips.txt 检查 trips.txtstop_times.txt 中的 trip_id 列。验证每个 trip_id 值在 stop_times.txt 中是否至少有两个条目。
未使用的行程 stop_times.txttrips.txt 检查 trips.txtstop_times.txt 中的 trip_id 列。验证 stop_times.txt 文件是否引用了 trips.txt 文件中的每个 trip_id 值。
位置离其父级太远 stops.txt

检查 parent_station 列:

  • 验证相应经停点是否属于父级车站。
  • 验证相应经停点(平台、入口、通用节点或上车点)距离其父级位置是否过远。
缺少平台代码 stops.txt 检查 stop_nameplatform_code 列。验证包含平台代码的任何 stop_name 列是否在 platform_code 列中具有相应的值。
充电站未使用 stops.txt 检查 parent_station 列。相应相应车站 (location_type=1) 需要有一组子经停点与其相关联。
相邻充电站距离过近 stops.txt

检查相应充电站的 stop_idstop_latstop_lon 列:

  • 确认它们实际上是否是同一充电站。
  • 验证营业地点是否准确无误。
经停点名称包含特殊字符 stops.txt 检查 stop_name 列。移除或替换所有特殊字符,例如 ! $ % \ * = _
经停点名称包含经停点代码或 ID stops.txt 验证 stop_name 列不包含任何 stop_codestop_id 值。
相应经停点距离相应充电站过近 stops.txt 验证相应经停点是否属于相应车站。如果是,请在 parent_station 列中将相应经停点与相应车站相关联。
相邻经停点过近 stops.txt

检查相应经停点的 stop_idstop_latstop_lon 列:

  • 确认它们实际上是否是同一经停点。
  • 验证营业地点是否准确无误。
名称和说明相同的停靠点 stops.txt 验证 stop_namestop_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.txtfrom_stop_idto_stop_id 中定义)。
停止使用 Unused stops.txtstop_times.txt 检查 stops.txtstop_times.txt 中的 stop_id 列。每个经停点都需要通过多个经停时间进行引用,这些时间描述了为该经停点提供服务的公交车辆的运行时间表。
最短转移时间过长 transfers.txt 验证 min_transfer_time 列中的值是否合理;即,不比乘客步行所需的实际换乘时间长得多。
传输距离非常长 transfers.txt 检查 from_stop_idto_stop_id 列。验证两个换乘点之间的距离是否合理;也就是说,不比乘客步行距离大得多
转移步伐速度过快 transfers.txt 验证 min_transfer_time 列中的值是否合理;即,不比乘客步行所需的实际换乘时间短得多。
检测到非官方译文格式 translations.txt 验证 table_name 列是否存在且包含有效值。
行程标头包含路线长名称 trips.txt 检查 trip_headsignroute_long_name 列。由于这两者都会显示在 Google 地图上,因此请确保 trip_headsign 列不包含 route_long_name 值。
行程标头包含路线简称 trips.txt 检查 trip_headsignroute_short_name 列。由于这两者都会显示在 Google 地图上,因此请确保 trip_headsign 列不包含 route_short_name 值。
行程标头包含特殊字符 trips.txt 检查 trip_headsign 列。移除或替换所有特殊字符,例如 ! $ % \ * = _
行程重复 trips.txt,以及可能的 calendar.txtcalendar_dates.txtstop_times.txt

在以下文件中验证,在同一有效服务日期的同一停靠时间没有重复行程:

  • trips.txt 文件中,检查 block_idtrip_idservice_id 列。
  • stop_times.txt 文件中,检查 trip_idarrival_timedeparture_time 列。
  • calendar.txtcalendar_dates.txt 文件中,检查有效服务日期。
屏蔽经停时间重叠的行程 trips.txt,以及可能的 calendar.txtcalendar_dates.txtstop_times.txt

在以下文件中验证行程在同一有效服务日期上的停靠时间是否不重叠:

  • trips.txt 文件中,检查 block_idtrip_idservice_id 列。
  • stop_times.txt 文件中,检查 trip_idarrival_timedeparture_time 列。
  • calendar.txtcalendar_dates.txt 文件中,检查有效服务日期。