LoginSignup
8
1

More than 3 years have passed since last update.

GTFS+ は標準以外の運賃(fare)をどう表現しているのか

Last updated at Posted at 2019-05-20

GTFS+ について

GTFS+ はアメリカ、ベイエリア(サンフランシスコ湾周辺)の公共交通機関を管轄するMTC(Metropolitain Transportation Commission)が定めたGTFSの拡張フォーマットです。

仕様書はこちら → https://www.transitwiki.org/TransitWiki/images/e/e7/GTFS%2B_Additional_Files_Format_Ver_1.7.pdf

GTFS+はファイルやカラムを追加することで、GTFSと比べて以下のような情報を保持しています。

  • 標準以外の運賃(小人運賃や年金生活者向け運賃、軍人向け運賃など)
  • 駅や路線の追加情報(駅の所属する自治体など)
  • 運行日の追加情報(運行パターンの名称など 例:Sunday/Holiday)

MTC配下にあるベイエリア周辺の交通事業者はGTFS+に基づいたオープンデータとして公開しています。例えば以下のような例があります。ただし全ての交通事業者が、GTFS+に完全に準拠したデータを提供している訳ではない点に留意して下さい。

本記事ではサンフランシスコ都心とサンノゼ/ギルロイを結ぶ鉄道「Caltrain」のオープンデータを例に、GTFS+では標準以外の運賃がどう表現されているのかを解説します。

GTFS+における標準以外の運賃の表現

ここでいう「標準」の運賃とはGTFSにおいてfare_attributes.txtfare_rules.txtにて表現されている運賃、具体的にはfare_attributes.txtpriceの値を指します。GTFSでは運賃を表す値を1つしか保持できないため、ここには日本でいういわゆる「大人運賃」のような標準的な運賃のみが入っています。

しかし皆さんもご存知の通り、多くの公共交通機関には小人運賃や身障者運賃といった割引制度があり、同一区間を乗った場合でも標準的な運賃とは異なる運賃となることがあります。アメリカでは軍に関係する人向けの「military fare」があるほか、日本でもいわゆる「ICカード運賃」といった二重の運賃制度が敷かれていたりします。

GTFS+ではこういった運賃をrider_categories.txtfare_rider_categories.txtを使って表現しています。

rider_categories.txt

rider_categories.txtでは後に紹介するfare_rider_categories.txtで使う、運賃の区分を定義します。カラムは以下の通りです。

フィールド名 必須か 説明
rider_category_id rider_categoryのユニークなid(int)を付与します。
ただし以下の通り、事前に決まったカテゴリーに基づいて付与する必要があります。
2 - Senior(高齢者)
3 - Child(小人)
4 - Student(学生)
5 – Youth(若者)
6 - Disabled(障害者)
7 – Promotional category(セールとしての割引?)
11 – Military(軍関係者)
15 to 25 – Custom categories (独自に設定できる)
rider_category_desc ription このカテゴリーを説明する文章です。
例:Child (ages 5-11)

fare_rider_categories.txt

rider_categories.txtにて定義されたrider_category_idを、fare_attributes.txtにて定義されたfare_idに紐付け、その運賃も保持します。
(fare_attributes.txtfare_idはどの区間の運賃か、という情報を持っています。)

フィールド名 必須か 説明
fare_id fare_attributes.txtにて定義されたfare_id この行がどの区間についての運賃を保持しているかを表します。
rider_category_id rider_categories.txtにて定義されたrider_category_id この行がどの区分の運賃を保持しているかを表します。
price 運賃を表します。GTFS+では単位はUS$です。

Caltrainの例

実例としてCaltrainの配布するデータを見てみましょう。配布サイトからダウンロードしてきます。

IMG_20180304_182744.jpg
サンフランシスコ周辺の通勤需要を担うカルトレイン(筆者撮影)

rider_categories.txt

rider_category_id rider_category_description
2 Senior
5 Youth
6 Disabled
15 Medicare Cardholder

2から6にはGTFS+に従ってそれぞれの運賃の区分が定義されています。その交通事業者に運賃区分が存在しない場合はGTFS+の定める全ての運賃区分を書き込む必要は無いようです。
また独自の設定が認められている15にはMedicare Cardholderという説明のついた運賃区分が定められています。

Medicare cardholder: customers who have a Medicare card.

公式サイトにはこのようにしか書かれていませんが、社会保険で暮らす乗客向けといったところでしょうか?

fare_rider_categories.txt

fare_id rider_category_id price
3527 2 3.75
3527 5 3.75
3527 6 3.75
3527 15 3.75
3528 2 4.75
3528 5 4.75
3528 6 4.75
3528 15 4.75
:

fare_idに対して、それぞれの運賃区分で金額が書き込まれています。

この表だけでは、使い方が分からないので実例をあげます。ここではGoogleやAppleの本社がほど近い、Mountain View駅からサンフランシスコの都心にあるSan Francisco駅までの子供運賃を求めます。

まず当該区間のfare_idを知るためstops.txtfare_rules.txtを参照します。

stops.txt

stop_id stop_name stop_lat stop_lon zone_id
70011 San Francisco Caltrain 37.77639 -122.394992 2275
70211 Mountain View Caltrain 37.394459 -122.075956 2277
: : : : :

ここで定義されている通りMountain View駅のzone_id2277、San Francisco駅のsone_id2275です。

fare_rules.txt

fare_id route_id origin_id destination_id
3527 12869 2277 2275
3527 12871 2272 2274
3527 12871 2272 2276
: : : :

zone_id 2277からzone_id 2275の区間の運賃には3527というfare_idが振られています。

ここで先ほどのfare_rider_categories.txtのうち、fare_id3527rider_category_id5 (Youth)の行を見ると、運賃は3.75ドルであることがわかります。

ちなみにfare_id3527fare_attributes.txtで参照すると当該区間の標準の運賃は8.25ドルと定義されています。子供は半額以下なんですね。実際に公式サイトのゾーン区分および運賃表を見るとこの運賃になっていることがわかります。

まとめ

サンフランシスコ周辺のベイエリアの交通事業者のオープンデータで用いられているGTFS+において、標準以外の運賃がどのように表現されているかを解説しました。GoogleMapsが複数の運賃体系を表示しないということもあってか、本格的な普及までは至ってい無いようです。ただしアメリカは日本以上に運賃の区分が分かれている場合もあり、需要はあるのでは無いかと感じました。また地域の交通事業者がまとまってGTFSの拡張フォーマットを定めたという点も興味深いです。これは日本におけるGTFS-JPの流れにも似ていると感じました。

さらに今回解説した2つの拡張ファイルは、日本のICカード運賃の表現などにも応用できるかもしれません。
ただし記事内記載の通り、fare_rider_categories.txtpriceにはUS$の値が入りますので、ここにもcurrency_typeカラムを増やすなどいくつかの工夫は必要そうです。

国内のサンプル

@aruneko99 さんのGitHubリポジトリにて、rider_categories.txtfare_rider_categories.txtを追加した道南バスのGTFSファイルが公開されています。サンプルとしてぜひご覧ください。
aruneko/DonanbusGTFS

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1