ローカルバスおぺれいしょん

乗合バスの知見があんまりオープンになってないように感じたので晒していきます。知見をシェアできたら幸いです。

ダイヤ改正時のGTFS

半端なく面倒だ。

これこそ他社はどんな風に自動化しているのか教えてもらいたいくらいだ。

 

GTFSフィードというより東京大学の西沢研究室で公開されているマクロ付きエクセルファイルが肝だ。その中に時刻表を入力するシートがあるのだが、路線が膨大だと時刻表を更新する量も膨大だ。それとこのシートの時刻表は、時刻を3桁または4桁の整数で表記しなければならない。

 

6時10分の場合は、6:10ではなく、610だ。

14時15分の場合は、1415だ。

こうする理由はグーグルがユーザー定義をNGとするためだ。6:10という表記はユーザー定義の時刻を指定したものだが、グーグルはそんなことを勝手にするなと言うのだ。

 

だが、こちらで作成し管理している時刻表はユーザー定義がさなれたものなのだ。そりゃそうだ、6:10と書くべきとこを610なんて入力はしない。まぁこの整数データを時刻風に編集することだってできるだろうが、そんな前提は共有していないよ。それは6:10と610にはなんの相関関係もない。つまりGTFSへ反映させるにはユーザー定義された時刻から、整数へと変換しなければならない。

 

作業量が多くなりそうなので、ここでエクセルという機能を十全に活用してスカッと終わらせたい。ところができないのである、たぶん。たぶん、と言うのは、あまり自信はないのだけれど、たぶんできない。語気を弱める理由は、私がそんなエクセルの達人ではないせい。一地方バス会社職員がそんな達者であるわけがない。その水準にまでレベルダウンしてもらわにゃ困る。とりあえず頑張ってやってみたことは以下。

 

  • :を置換で削除したら、6:10が610になるか→ならない。得体の知れない値になる。
  • 6:10は正しくは、6:10:00であるので、:00をまず削除してみよう。→できない。最後の00は直接入力しなくても自動的に00と出るようだ。

 

そもそも6:10がユーザー定義されたデータなら、標準ではどうなるんだ?エクセルには「時間と値」は書式の違いでしかないのだ。それを詳説しているのがここ。

www.forguncy.com

シリアル値と呼ぶらしい。そりゃいいんだけど、肝心の610とか1215とかにはならんわけだ。そりゃそうだ。なんの関係もないのだから。

 

なので力業です。しかし、ひたすら3桁または4桁の時刻を打ちまくるのはあまりに生産性がないので、区間時分を整数入力することにした。これと起点の時刻を入力すれば後は加算式で全ての入力が完了するだろう。

f:id:yanosworkout:20181004230538p:plain

とまぁこんな感じだ。時刻の2行目からは数式が入っている。区間所要時分の列が複数あるのは、運行する時間、便によって所要時分を変えているため。これだとそんなに膨大な入力手間でもないと思う。

 

次回GTFSを取り上げるときはクエリの確認を取り上げたい。