【乗り鉄】元駅員が運賃計算プログラムを作ってみた話
by
MIERUNE
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
© 地理院地図 全国最新写真(シームレス) 乞うご期待