# GTFS、GTFS-RT 与 GBFS：有何不同？

> 比较 GTFS、GTFS-RT 和 GBFS，以选择您的移动数据：计划时刻、实时信息、站点及共享车辆。

Source: https://www.roote.ai/zh/guides/gtfs-gtfs-rt-et-gbfs-quelles-differences/
Language: zh
Author: ROOTE

GTFS Schedule 描述了计划的交通服务。GTFS Realtime，通常称为 GTFS-RT，传递有关服务的实时更新信息。GBFS 描述共享出行服务，特别是根据发布的流展示其站点和可用车辆。根据您的应用需求选择相应的数据格式。

这些格式用于组织数据；但并不保证其在所有地方的可用性，亦不保证每个数据流的质量。

## 用 GTFS 表示计划的服务

一个 GTFS Schedule 数据集包含表格文件，描述了运营商、站点、路线、运行以及车次等内容。日历文件指出适用的日期。文件之间通过标识符关联。 [GTFS Schedule 参考资料](https://gtfs.org/documentation/schedule/reference/).

它可用于回答“这个站点在哪里？”或“该服务有哪些预计经过时间？”等问题。使用时需解析日历和文件间的关联。

仅读取站点列表不足以重建车次通行；反之，站点位置有时可单独使用，无需时刻表。

## 用 GTFS-RT 实时更新服务信息

GTFS Realtime 可以提供车次更新、车辆位置和警报。车次更新涉及通行时间和服务变更。数据流使用 Protocol Buffers（一种结构化序列化格式）。 [GTFS Realtime 入门](https://gtfs.org/documentation/realtime/reference/).

发布者可仅发布部分类别，并非全部。存在车辆位置流不保证所有站点都有估计信息。

在界面中，应区分计划通行和实时估计。我们的指南 [理论时刻与实时数据](https://www.roote.ai/zh/guides/%E5%85%AC%E4%BA%A4%E8%BD%A6%E6%97%B6%E5%88%BB%E8%A1%A8-%E7%90%86%E8%AE%BA%E6%97%B6%E5%88%BB%E4%B8%8E%E5%AE%9E%E6%97%B6%E6%97%B6%E5%88%BB%E7%9A%84%E5%8C%BA%E5%88%AB/) 从用户视角解释了这种差别。

## GBFS 用于共享出行

GBFS 通过 JSON 流描述共享出行服务。根据系统和版本，可能包含站点、状态、车辆及其他服务特性。文档区分了站点信息与可用状态。 [GBFS 文档](https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md).

在应用中应区分相对稳定的位置与快速变化的状态。处理时保留格式版本和相关时间戳。

可用性流非预约或解锁 API，仅辅助发现服务，租赁操作由相关服务提供。

## 根据使用场景进行比较

| 需求 | 需考虑的格式 |
| --- | --- |
| 描述计划中的站点与线路 | GTFS Schedule |
| 解析预定通行和服务日期 | GTFS Schedule |
| 更新通行信息或接收服务动态 | GTFS-RT，取决于发布的数据流 |
| 定位共享出行站点或车辆 | GBFS，取决于发布的数据 |

设计示例：地图展示有轨电车站点和共享单车站。用结构数据表示位置，用实时状态展示单车可用性。两层数据缓存和更新需求不同。

## 预估各数据源限制

检查版本、可选字段、覆盖范围及使用权限。标识符仅在其上下文中有效：不同发布者可能用相同字符串代表不同实体。

还需预设缺失或过期的数据。不可用数据流返回空列表不应被误解为空服务。避免未知信息默认为零。

## 直接使用数据流或借助 API

直接集成需您负责收集、验证和解释数据源。API 可提供统一接口，但仍需了解其覆盖范围、警告和条款。

关于 ROOTE 初步用例，请参阅 [如何使用 API 搜索附近站点](https://www.roote.ai/zh/guides/remen-zhao-ji-fu-jin-de-jiao-tong-zhan-dian-yong-api-sou-suo/). 从接口需求出发，核实实际可用字段。

## 阅读片段并选择架构

在GTFS时刻表中，stop_times.txt的一个片段将一次运行、一站和一次预定经过连接起来。以下的简化示例具有教学意义：它并非完整GTFS数据集，且其标识符需与trips.txt、stops.txt及日历关联使用。

对于GTFS实时，请查找有用的实体：TripUpdate可更新一次经过，VehiclePosition描述车辆位置，Alert则传递服务信息。车辆位置并非自动代表预计到达时间。传输格式为Protocol Buffers；用于诊断的JSON表示不是标准二进制流。

在GBFS中，station_information描述站点信息，而station_status描述其发布状态。某些计数器名称及可用文件会随着版本变化。下列JSON片段展示了GBFS 2.3及其num_bikes_available和num_docks_available字段；在复用示例前请核实版本。

地点地图可从结构化数据开始。下一班次显示则需要相应的更新及明确规划的回退机制。可用单车界面必须管理计数器、租赁条件及时间有效性。这三类界面并不自动共享统一缓存策略。

```
# Extrait pédagogique de stop_times.txt
trip_id,arrival_time,departure_time,stop_id,stop_sequence
trip_demo,08:10:00,08:10:00,stop_demo,1

# Extrait pédagogique de station_status en GBFS 2.3
{
  "station_id": "station_demo",
  "num_bikes_available": 3,
  "num_docks_available": 7,
  "is_installed": true,
  "is_renting": true,
  "is_returning": true,
  "last_reported": 1720000000
}
```

[格式化单车可用性及其新鲜度](https://www.roote.ai/zh/guides/%E5%AE%9E%E6%97%B6%E8%87%AA%E8%A1%8C%E8%BD%A6%E5%8F%AF%E7%94%A8%E6%80%A7-%E5%BA%94%E7%94%A8%E4%B8%AD%E5%A6%82%E4%BD%95%E6%98%BE%E7%A4%BA/)

[为您的产品选择API或MCP](https://www.roote.ai/zh/guides/api-ou-mcp-lequel-choisir-pour-integrer-des-donnees-de-mobilite/)

## 常见问题

### GTFS 是否自动包含实时数据？

否。GTFS Schedule 表示计划服务，实时信息由其他流如 GTFS-RT 提供。

### GBFS 可用来解锁单车吗？

它描述服务及公开数据，租赁过程由运营商提供的功能完成。

### 标准格式是否保证完整覆盖？

否。格式定义结构，覆盖范围和发布信息依数据源而定。
