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
280
GTFSのデータを Streamlitで可視化してみた
Streamlitを用いてGTFSの可視化を行なった資料になります。今回では、東京都内のバス停を可視化、そしてリアルタイムでのバスの位置情報の可視化を行なっています。
NearMeの技術発表資料です
PRO
April 19, 2024
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
ReactNative のアップグレード作業が (意外に)楽しかった話
nearme_tech
PRO
1
14
強化学習アルゴリズムPPOの改善案を考えてみた
nearme_tech
PRO
0
4
Apple Containerについて調べて触ってみた
nearme_tech
PRO
0
68
Rust 並列強化学習
nearme_tech
PRO
0
23
並列で⽣成AIにコーディングをやらせる
nearme_tech
PRO
1
140
希望休勤務を考慮したシフト作成
nearme_tech
PRO
0
39
Hub Labeling による高速経路探索
nearme_tech
PRO
0
93
Build an AI agent with Mastra
nearme_tech
PRO
0
78
Rustで強化学習アルゴリズムを実装する vol3
nearme_tech
PRO
0
44
Other Decks in Programming
See All in Programming
MCPとデザインシステムに立脚したデザインと実装の融合
yukukotani
0
180
Jakarta EE Core Profile and Helidon - Speed, Simplicity, and AI Integration
ivargrimstad
0
260
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
0
130
Claude Codeで挑むOSSコントリビュート
eycjur
0
190
Rancher と Terraform
fufuhu
2
150
兎に角、コードレビュー
mitohato14
0
160
20250808_AIAgent勉強会_ClaudeCodeデータ分析の実運用〜競馬を題材に回収率100%の先を目指すメソッドとは〜
kkakeru
0
210
サイトを作ったらNFCタグキーホルダーを爆速で作れ!
yuukis
0
720
Kiroで始めるAI-DLC
kaonash
2
440
RDoc meets YARD
okuramasafumi
4
160
Zendeskのチケットを Amazon Bedrockで 解析した
ryokosuge
3
210
testingを眺める
matumoto
1
130
Featured
See All Featured
For a Future-Friendly Web
brad_frost
179
9.9k
Visualization
eitanlees
147
16k
A Modern Web Designer's Workflow
chriscoyier
696
190k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
570
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Building Adaptive Systems
keathley
43
2.7k
The Art of Programming - Codeland 2020
erikaheidi
55
13k
Building Applications with DynamoDB
mza
96
6.6k
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