Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GTFSのデータを Streamlitで可視化してみた
Search
NearMeの技術発表資料です
PRO
April 19, 2024
Programming
0
120
GTFSのデータを Streamlitで可視化してみた
Streamlitを用いてGTFSの可視化を行なった資料になります。今回では、東京都内のバス停を可視化、そしてリアルタイムでのバスの位置情報の可視化を行なっています。
NearMeの技術発表資料です
PRO
April 19, 2024
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
Architecture Decision Record (ADR)
nearme_tech
PRO
1
650
遺伝的アルゴリズムを実装する
nearme_tech
PRO
1
20
Fractional Derivative!
nearme_tech
PRO
1
15
GitHub Projectsにおける チケットの ステータス更新自動化について
nearme_tech
PRO
1
27
2つの曲線を比較する方法ってあるの? 〜フレシェ距離を試してみた〜 with Python
nearme_tech
PRO
1
110
Constrained K-means Clustering (クラスタサイズの制限をしたK-means法) を調べてみた
nearme_tech
PRO
1
47
VRPの近傍操作SWAP*について調べてみた
nearme_tech
PRO
1
77
新人エンジニアが読んでためになった本
nearme_tech
PRO
2
41
Object–relational mapping and query builder battle 1: Intro to Prisma
nearme_tech
PRO
1
46
Other Decks in Programming
See All in Programming
connect-go で面倒くささと戦う / 2024-08-27 #newmo_layerx_go
izumin5210
2
620
Desafios e Lições Aprendidas na Migração de Monólitos para Microsserviços em Java
jessilyneh
2
140
僕が思い描くTypeScriptの未来を勝手に先取りする
yukukotani
9
2.3k
The Shape of a Service Object
inem
0
400
仮想ファイルシステムを導入して開発環境のストレージ課題を解消する
segadevtech
2
490
Web技術を駆使してユーザーの画面を「録画」する
yukukotani
13
6.5k
Go Code Generation at newmo / 2024-08-27 #newmo_layerx_go
genkey6
0
540
dotfiles について話したい #湘なんか
stefafafan
2
290
LR で JSON パーサーを作る / Coding LR JSON Parser
junk0612
2
180
The Sequel to a Dream of Ruby Parser's Grammar
ydah
1
200
2024 컴포즈 정원사
jisungbin
0
150
iOSの隠されたAPIを解明し、開発効率を向上させる方法/iOSDC24
noppefoxwolf
2
130
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
248
20k
The Illustrated Children's Guide to Kubernetes
chrisshort
47
48k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
25
1.3k
Speed Design
sergeychernyshev
21
420
Thoughts on Productivity
jonyablonski
66
4.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
27
8.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
48
2.8k
The Brand Is Dead. Long Live the Brand.
mthomps
53
37k
Visualization
eitanlees
142
15k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
43
2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
58k
Learning to Love Humans: Emotional Interface Design
aarron
270
40k
Transcript
0 GTFSのデータを Streamlitで可視化してみた 2024-04-19 第87回NearMe技術勉強会 Kenji Hosoda
1 GTFSとは • GTFS (General Transit Feed Specification) は、交通システムに関する関連情報を利⽤者に配 信するために使⽤される”オープン標準”
• 路線、時刻表、運賃、地理的な乗り換えを表現する「GTFS Schedule」とトリップの更新、⾞ 両位置、サービスアラートなどのリアルタイム情報を提供する「GTFS Realtime」という⼆つ の主要な仕様がある • それに加えて、様々なニーズに対応するために拡張されたフォーマットが存在
2 GTFS-JPについて • GTFSの国際標準をベースにしつつ、⽇本独特の交通システムや⾔語、運賃体系に対応 するためにカスタマイズされている • 以下のサイトからデータを取得可能 https://tshimada291.sakura.ne.jp/transport/gtfs-list.html
3 今回は都営バスのデータを可視化してみる • GTFS-JP • https://ckan.odpt.org/dataset/b_bus_gtfs_jp-toei • GTFS Realtime •
https://ckan.odpt.org/dataset/b_bus_gtfs_rt-toei
4 セットアップ • こちらのコードをダウンロード • https://gist.github.com/kenji4569/ea42817d05980d2508963e66b297d03b • 以下を実⾏ • pip
install streamlit streamlit-folium folium pydeck pandas requests geopy gtfs-realtime-bindings • streamlit run gtfs-viewer-app.py • (オプション)公共交通オープンデータセンターにて開発者登録してアクセストークンを取得 (2営 業⽇かかる) • https://developer.odpt.org/ • 実⾏時にアクセストークンをセット • ACCESS_TOKEN=<your_access_token> streamlit run gtfs-viewer-app.py
5 実⾏結果 GTFS-JPのダウンロード バス停の表示 リアルタイムバス位置の表示 更新頻度 表示対象の絞り込み マップの種類
6 (表⽰対象の絞り込みとマップの切り替えについて) • データ数が多いのでfoliumだと動きが遅い → pydeckに変更 • (ただし、現状pydeckの⽅がリアルタイムの更新は苦⼿?)
7 コード解説1 GTFS-JPのダウンロード def download_gtfs_jp (): ... url = (
f"https://api.odpt.org/api/v4/files/Toei/data/ToeiBus-GTFS.zip?acl:consumerKey= {ACCESS_TOKEN}" if ACCESS_TOKEN else "https://api-public.odpt.org/api/v4/files/Toei/data/ToeiBus-GTFS.zip" ) with ( requests.get(url) as res, io.BytesIO(res.content) as bytes_io, zipfile.ZipFile(bytes_io) as zip, ): zip.extractall(GTFS_JP_DATA_DIR ) • ToeiBus-GTFS.zipファイルをダウンロード • ファイルを展開して./data以下に保存 ダウンロードしたデータ
8 コード解説2 GTFS Realtime のダウンロード from google.transit import gtfs_realtime_pb2 def
download_gtfs_realtime (time_steps): ... feed = gtfs_realtime_pb2.FeedMessage() records = [] with urllib.request.urlopen(url) as res: feed.ParseFromString( res.read()) for entity in feed.entity: record = [ entity.id, entity.vehicle.trip.trip_id, entity.vehicle.trip.route_id, entity.vehicle.trip.direction_id, entity.vehicle.position.latitude, entity.vehicle.position.longitude, entity.vehicle.current_stop_sequence, entity.vehicle.timestamp, entity.vehicle.stop_id, ] records.append(record) • ToeiBusのリアルタイムフィード (Protocol Buffers形式)をライブラリ を介して取得 参考:https://nttdocomo-developers.jp/entry/20231218_1
9 今後の展望 https://www.linkedin.com/posts/mobilitydata_gtfs-demandrespo nsivetransportation-drt-activity-7175942816848588800-JX9v • 「GTFS-Flex」来るか? • オンデマンド交通などフレキシブルなルートを扱うことが可能になる • NearMeの配⾞もルート検索アプリに表⽰できるようになる?
10 Thank you