【乗り鉄】元駅員が運賃計算プログラムを作ってみた話
by
MIERUNE
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
【乗り鉄】元駅員が運賃計算 プログラムを作ってみた話 Yuen
Slide 2
Slide 2 text
©OpenStreetMap contributors 01 使った技術 02 JRの運賃制度 03 今回使ったコード 04 今後の予定 目次
Slide 3
Slide 3 text
©OpenStreetMap contributors 01 使った技術
Slide 4
Slide 4 text
© 地理院地図 全国最新写真(シームレス) 位置情報の会社ですが、 今回は位置情報を使いません
Slide 5
Slide 5 text
©Project PLATEAU / MLIT Japan 技術 ●Python ●networkx ●運賃と営業距離についてはデータがないので、昔お下がりでいただい た時刻表を元に手入力しました 使った技術
Slide 6
Slide 6 text
©OpenStreetMap contributors 02 JRの運賃制度について
Slide 7
Slide 7 text
©Project PLATEAU / MLIT Japan 運賃制度 ●当たり前ですが、距離に応じて、長く乗れば長く乗るほど高いです JRの運賃制度について 都会は駅が多いから適当でいいや
Slide 8
Slide 8 text
©Project PLATEAU / MLIT Japan 運賃制度 JRの運賃制度について 田舎の電車は誰も乗ってな いから、運賃を高くしたい 北海道は除雪費用がかかるから、 運賃を高くしたい
Slide 9
Slide 9 text
©Project PLATEAU / MLIT Japan 運賃制度 JRの運賃制度について ●稚内-豊富(43.5km) 1,130円 ●室蘭-白老(43.4km) 970円 ●大阪-山科(48.3km) 860円
Slide 10
Slide 10 text
©OpenStreetMap contributors 03 運賃計算のプログラム化
Slide 11
Slide 11 text
©Project PLATEAU / MLIT Japan 運賃制度 ●経路の計算もかなり複雑です 経路計算は複雑です
Slide 12
Slide 12 text
©Project PLATEAU / MLIT Japan 運賃制度 経路の計算 ●経路計算のロジックとネットワークをシステムに導入する方法 ○ 経路をシステムに導入する際に使ったのはネットワーク解析用ラ イブラリのnetworkx
Slide 13
Slide 13 text
©Project PLATEAU / MLIT Japan 運賃制度 経路の計算 ●networkxというライブラリでは点(Node)を線(Edge)で繋ぐこと で多数の点と線で構成されたネットワークを作成している
Slide 14
Slide 14 text
©Project PLATEAU / MLIT Japan 運賃制度 経路の計算 ●Nodeではメタデータ(例:山手線内、札幌市内など)を持たせており、 Edgeにはメタデータ(例:路線名)と重みつけ(今回では距離)の属性 を付与しました
Slide 15
Slide 15 text
©Project PLATEAU / MLIT Japan 運賃制度 経路の計算 ●路線の読み込みではひたすら紙の時刻表から駅名・路線名と駅間距離 をCSVファイルに移し、その後Networkxで駅の情報をNode、路線 情報をEdge形式で読み込みました
Slide 16
Slide 16 text
©Project PLATEAU / MLIT Japan 運賃制度 経路の計算
Slide 17
Slide 17 text
©Project PLATEAU / MLIT Japan 運賃制度 経路の計算 ●そしてNetworkxでは読み込んだ駅と営業距離でひたすら最短距離 を計算しようとしていた dist = nx.shortest_path_length(G, source=start, target=dest, weight="weight")
Slide 18
Slide 18 text
©Project PLATEAU / MLIT Japan 運賃制度 経路の計算 ●駅と駅の間の最短距離を取得して、それとJRの運賃表と照合すること で、「駅と駅の距離を単純に計算した場合の運賃」を取得できました
Slide 19
Slide 19 text
©Project PLATEAU / MLIT Japan 運賃制度 経路の計算
Slide 20
Slide 20 text
©Project PLATEAU / MLIT Japan 運賃制度 経路の計算 ●ネックになった「品川 - 熱海」
Slide 21
Slide 21 text
©Project PLATEAU / MLIT Japan 運賃制度 経路の計算 ●結果的には条件分岐を改める形になってしまいました ●具体的にはまずは「特定都区市内」の駅に入っているか判断し → 基準 駅で距離を計算 → 距離が200km (100km)を超えていない場合、 再度入力された駅で計算することに
Slide 22
Slide 22 text
©OpenStreetMap contributors 04 今後の予定
Slide 23
Slide 23 text
©Project PLATEAU / MLIT Japan 今後 今後の予定 ●networkxがデフォルトで提供している方法を使えば、経路を指定し ての検索もできます ●しかし、時間が足りないので、大都市近郊区間についての開発ができ ませんでした ●そして、実は今対応しているのは東海道本線と山陽本線だけです、、、
Slide 24
Slide 24 text
©Project PLATEAU / MLIT Japan 今後 今後の予定 ●今後はいつか時間があれば対応している路線数を増やしてAPI化した いと思っています(やるとは言ってない) ●JR北海道・四国・九州の路線の割増運賃制度なども今後は駅(路線)に メタデータを実装させて持たせたいです
Slide 25
Slide 25 text
© 地理院地図 全国最新写真(シームレス) 乞うご期待