GTFS への Google 乗換案内拡張機能

はじめに

Google 乗換案内チームは、パートナーのニーズに対応するため、継続的に General Transit Feed Specification(GTFS)の改善を図っています。現在、Google マップの乗換案内に送信するフィードでパートナーが利用できるいくつかの拡張機能について、GTFS 仕様に追加することが提案されています。以下で、追加が提案されている機能をご確認ください。

GTFS 仕様の拡張について独自の提案がある場合は、公式 GTFS の変更プロセスをご覧ください。

特定の料金での最大乗換回数

1 つのフィードで複数の交通機関の料金属性をサポートするため、次の拡張機能が提案されています。

フィールド名 必須かどうか 詳細
transfers 任意 Google 乗換案内では 0~5 の値を受け付けます。GTFS 仕様では 0~2 の値を指定できるようになっています。このフィールドで、該当の料金で乗換可能な最大回数(ブロック乗換を除く)を設定します。

IC カードの運賃(日本)

IC カードは、電車、地下鉄、バス、モノレールの運賃の支払いに使用できる、チャージ可能なプリペイド型スマートカードです(日本国内でのみ利用可能)。PASMO や Suica など、ほとんどの IC カードには運賃の割引があります。次の Google 専用の拡張機能は、IC カードの運賃設定をサポートしています。

fare_attributes.txt

フィールド名 必須かどうか 詳細
ic_price 任意 IC カード利用者に割引が適用される場合、値を割引運賃額とします。IC カード利用者に割引が適用されない場合、値を -1 とします。交通機関がサポートしていない IC カードの場合、値を -1 とします。

その他のルートタイプ

現在、GTFS では、特定のルートの運行タイプ(バス、電車、フェリーなど)を表すルートタイプが複数定義されていますが、より多くのルートタイプをサポートするため、routes.txt の route_type フィールドの拡張機能が提案されています。詳しくは、拡張された GTFS のルートタイプをご覧ください。

駅の車種

特定の駅で運行している車種を指定するための拡張機能が提案されています。

stops.txt

フィールド名 必須かどうか 詳細
vehicle_type 任意

このフィールドでは、停車地で使用する輸送手段のタイプを指定します。Google が提案した拡張された GTFS のルートタイプ値など、routes.txt の有効な route_type 値を使用できます。

旅程の迂回

通常以外のスケジュールで運行する旅程や、特別なイベントや計画的な運行止め(線路工事など)によって通常のルートを迂回する旅程を示すことができると便利です。このような例外的な運行を示すために、trips.txt の拡張機能を提案しています。

trips.txt

フィールド名 必須かどうか 詳細
exceptional 任意

特別なイベントのための増便や、計画的な運行止め(線路工事)により通常ルートを迂回する運行など、例外的なサービス状況を示すには、このフィールドを 1 に設定します。通常運行の場合は、このフィールドを 0 に設定します。

ルート間や旅程間の乗り換え

GTFS 仕様では、交通機関が transfers.txt ファイルを使用して乗り換えの意味規則を定義できるようになっており、推奨乗換、接続乗換、限定乗換などの機能がサポートされています。 現在のところ、これらの乗り換えは停車地のみに適用されていますが、ルートレベルや旅程レベルでより詳細な乗換情報を指定したいとのご意見が、多数の交通機関から Google に寄せられています。そこで、Google ではこれらの交通機関と協力して、ルート間や旅程間の乗換モデルの作成について提案し、GTFS コミュニティからのご意見を受け付けています。

目的

Google では、ある停車地の組み合わせに対して特定のルート間または特定の旅程間の乗り換えを指定できるようにして、その停車地の組み合わせのすべての旅程に対して同じ乗り換えを指定しなくても済むようにしたいと考えています。

以下にその事例を示します。

  • 2 つの旅程が同じホームに到着して、相互の乗り換えが可能な場合は、この 2 つの旅程間で接続乗換が可能であると指定できるようにします。ただし、この駅の他の乗り換えについては、接続乗換が可能であると指定できないようにします。

  • 最大 30 分間遅れることがよくある電車で、この電車の予定される到着時刻から乗り換え電車の出発時刻までの間隔が 35 分以下の場合、この電車からは他の電車への乗り換えを指定できないようにします。

詳細

transfers.txt に 4 つのフィールド(すべて省略可能)を追加します。

  • from_route_id
  • to_route_id
  • from_trip_id
  • to_trip_id

routes.txt で指定した route_id を from_route_idto_route_id フィールドで指定して、乗り換えの適用対象を絞り込むことができます。from_route_id を指定した場合は、ある from_stop_id に到着する旅程のうち、指定された旅程 ID の旅程のみに乗り換えが適用されます。to_route_id を指定した場合は、ある to_stop_id から出発する旅程のうち、指定された旅程 ID の旅程のみに乗り換えが適用されます。

from_trip_idto_trip_id フィールドには、trips.txt で指定した trip_id を指定できます。from_trip_id を指定すると from_route_id は無視され、to_trip_id を指定すると to_route_id は無視されます。from_trip_id を指定した場合は、ある from_stop_id に到着する旅程のうち、指定された旅程 ID の旅程のみに乗り換えが適用されます。to_trip_id を指定した場合は、ある to_stop_id から出発する旅程のうち、指定された旅程 ID の旅程のみに乗り換えが適用されます。

乗り換えの特異性

一部の乗り換えは、他の乗り換えよりも特異性が高い場合があります。Google では、乗り換え適用するタイミングを特定するためのシンプルな順位付けのメカニズムを定義したいと考えています。乗り換えの「特異性」についての定義は、次のとおりです。

乗換元の特異性は、from_stop_id のみが指定されている場合は 0、from_route_id が指定されている場合は 1、from_trip_id が指定されている場合は 2 となります。乗換先も同様に、to_stop_id のみが指定されている場合は 0、to_route_id が指定されている場合は 1、to_trip_id が指定されている場合は 2 となります。これら 2 つの値を合計して、乗り換えの特異性を 0~4 の値で表します。到着する旅程と出発する旅程の順序の組み合わせについては、これら 2 つの旅程に適用される乗り換えのうち、最も特異性の高い乗り換えが選ばれます。そのため、どの旅程の組み合わせについても、最も特異性の高い同等の乗り換えが 2 つ存在することはありません。

曖昧なルールの例:

from_stop_id,to_stop_id,from_route_id,to_route_id,transfer_type
stopFrom,stopTo,routeFrom,,0
stopFrom,stopTo,,routeTo,1

これらの 2 つの乗り換えの特異性は両方とも 1 になります。ただし、駅「stopFrom」に到着するルート ID routeFrom の旅程から駅「stopTo」に到着するルート ID routeTo の旅程への乗り換えには、これら 2 つの規則のいずれかを適用できます。