Skip to content

Repository files navigation

kyoto-street-rank

交差点名をもとに京都で最強の通りを決定したい

勝敗のルール

  • 「交差点で先に名前が来る方が勝ち」のみ
  • 百万遍とか祇園とかは引き分けとしてカウントしない
  • 交差点名は 信号 > Google Mapの表記 > 近くのバス停 で決める

「つよさ」の計算

勝敗のループが存在するが、強い通りに勝ってたら良い評価をしたいので、PageRankでつよさを計算する

ループの例:

  • 七条堀川/堀川五条/五条大宮/大宮七条
  • 三条御前/御前通四条/四条河原町/河原町三条

実装について

  • Pythonで実装する
  • 通り・交差点はsqliteで管理する
    • テーブルはStreetsとIntersectionsの2種
    • StreetはIDと通り名のフィールドを持つ
    • IntersectionsはID、交差点名、強い通り、弱い通りのフィールドを持つ。「強い通り」「弱い通り」はStreetを参照する
  • PageRankの計算はNetworkXライブラリを使う
    • Streetをノード、Intersectionsを「弱い通り」→「強い通り」のエッジとして計算する

UIとしては適当なwebUIを作成する。機能は以下の通り。

  • 計算したPage Rankによる京都の通りランキング
  • 通り・交差点のCRUD画面

起動方法

Dockerで起動する場合:

docker compose up --build

ローカルのPythonで起動する場合:

python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/flask --app src.app run

About

京都で最強の通りを見つけたい

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages