静态验证错误和警告

本页面提供了静态公交 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.txt 验证 pathways.txt 文件是否包含 pathway_modeis_bidirectional 列。
缺少路径的必填值 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 值必须始终大于上一行程的条目中的值。
形状失序-距离行程 stop_times.txt 检查 shape_dist_traveled 列。对于特定的 trip_id 值,可能存在一个或多个与前一个条目顺序不对的值。shape_dist_traveled 值必须始终大于上一个行程条目中的值。
无父站的位置信息 stops.txt 检查值为 2(入口)、3(通用节点)或 4(乘车区)的 location_type 列。请确保上述每个值在 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 文件中的形状定义的到达-出发顺序一致。
停止位置形状匹配太多 shapes.txtstop_times.txt 检查 stop_times.txt 中的停靠站条目,并减少与行程路线(由 shapes.txt 中的形状条目定义)的潜在匹配项。
含形状距离-行程值,但没有形状的行程 shapes.txtstop_times.txt 检查 stop_times.txt 文件中的 shape_dist_traveled 列。请务必在 shapes.txt 文件中为与行程关联的形状指定 shape_dist_traveled 值。
含形状-距离-行程值但无形状的行程 shapes.txtstop_times.txt 检查 stop_times.txt 中的 shape_dist_traveled 列和 trips.txt 中的 shape_id 列。验证行程是否具有 shape_dist_traveled 值和相应的 shape_id 值。
未使用的形状 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 列。验证 stop_times.txt 中的每个 trip_id 值是否至少有两个条目。
未使用的行程 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) 将路径链接在一起,因此它必须具有两个或多个突发事件位置(在 from_stop_idpathways.txtto_stop_id 中定义)。
停止未使用的数量 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 文件中,检查处于有效状态的服务日期。