山手線について
駅情報API、列車時刻表API、在線情報APIを使う上で気になる点があったので取り上げてみます。
何が気になったのか!?
1.駅情報APIと列車時刻表APIの基準駅の違い
駅情報APIは駅のナンバリング(JY01〜JY29)の順に配信しているのですが、列車時刻表は山手線の起点である大崎(JY24)を基準に配信しているのです。
列車時刻表は基本的に終点以外の各駅を出発駅 DepartureStation として取り扱っている中で内回り、外回りの各列車には終着駅 ArrivalStation が存在し、始発駅が大崎、終着駅が大崎となっています。
※田町、品川、池袋駅始発、品川、池袋行きを除く。
個人的には東京駅(JY01)基準ではなく、大崎駅(JY24)を基準駅として処理するようにしています。
参考:首都圏エリアへ 「駅ナンバリング」を導入します - JR東日本 [PDF]
https://www.jreast.co.jp/press/2016/20160402.pdf
2.大崎行きの判別
内回り、外回り、大崎行きの全ての列車が在線情報APIで大崎行きとなっています。
※池袋行きや品川行きは大崎で行先が変更となります。
そのため、環状運転なのか?大崎行きなのか?を判別したり、通常の駅での案内に合わせるためにはデータの加工が必要となります。
現在のAPIの仕様では大崎で行先が変わるので、内回りの品川行きという情報は大崎〜品川の2駅だけしか配信されていません。
新宿や渋谷の発車案内では「大崎」や「品川」という文字を目にすることがありますが、APIをそのまま叩いたデータでは得られません。
行先を正確に取り扱うには?
外回りは問題ないのですが、内回りに関してはちょっとだけデータの加工が必要となります。
運用毎に終電を調べて終電となる列車の列車番号、行先を算出します。
大崎行きと判別する事が出来た列車番号の列車は大崎行き、それ以外で同じ運用番号の列車は環状運転として取り扱います。
品川行きと判別する事が出来た列車番号の列車と同じ運用番号の直前に運用していた列車番号を品川行き、それ以外で同じ運用番号の列車を環状運転として取り扱います。
このようにデータを取り扱う事で駅のホームの発車案内に近づける事が出来ます。