2024年3月2日
東京大学 本郷キャンパス
公共交通オープンデータ最前線 2024

交通情報学特論：

交通データ分析を学ぶ実践的な授業を始めました！
東京大学 大学院情報理工学系研究科
創造情報学専攻 准教授 伊藤昌毅

最近聞くこと
地域交通の実務• 公共交通データ分析• データ活用• EBPM

AI応用研究• 交通ビッグデータとAI• 交通の最適化• 大規模な都市交通データ分
析交通データ触れたことありますか？
• Excelで、GISで、SQLで、自作プログラムで、交通データを操れますか？
– GTFS、GPSのプローブデータ、交通センサスデータなど• 発注者・行政職員が分かっていないことをいいことに、技術の研鑽を怠っていませんか？
• 「そういうのはできる人にやらせて、自分はもっと高度で戦略的な意志決定を･･･」とか言ってませんか？

• 交通を学ぶ学生を、交通ビッグデータにも触れないまま卒業させてしま
うのはまずい2023年 東大大学院「交通情報学特論」開講
1.
2.
3.
4.
5.

交通情報学入門
地理情報システム(GIS)と時空間データベース 1
地理情報システム(GIS)と時空間データベース 2
PostgreSQL + PostGIS + QGIS による公共交通データ分析 1
ゲスト講義1: Mobility as a Service (MaaS) の考え方と交通事業者から見た取り組みの意義（藤垣洋平・小田急電鉄株式会社）
6. PostgreSQL + PostGIS + QGIS による公共交通データ分析 2
7. PostgreSQL + PostGIS + QGIS による公共交通データ分析 3 Join応用、ウィンドウ関数
8. ネットワークの探索と自動車交通
9. 交通流シミュレーション入門
10. ゲスト講義2: 交通×IT×データのこれまでとこれから（太田恒平・株式会社トラフィックブレイン）
11. ミクロ交通流シミュレーションSUMO深掘り
12. 都市交通計画学温故知新
13. 交通情報学の未来（ディスカッション）

講義の特徴• 交通の考え方や理論よりIT・データの技術にフォーカス– 理論的な説明や深い考えを説明する講義は他にもあるので･･･• 実際にデータやツールを配布し、手を動かしながら技術を身に付ける– 学生ひとりひとりがQGIS、PostgreSQL、大都市交通センサスデータなどを自らのPCにインストール– 講師は講義時間の半分くらいは実際にPCを操作し説明• 教室とオンラインのハイブリッド形式、コメントを通した学生とのフリーディスカッション• x

どんなデータを利用している？

GTFSオープンデータ• 世界で広く使われる形式• 乗換案内に必要な情報（バス停・駅＋路線＋時刻表＋運賃）をまとめて格納したファイル形式
バス停/駅+路線

時刻運賃

8大都市交通センサス• 国土交通省が5年毎に首都圏、中京圏、近畿圏の三大都市圏において、鉄道・バス等の大量公共交通機関の利用実態を調査• 最新データは令和3年度に実施• 調査方法– 第12回まで：駅において鉄道利用者に紙の調査票を配布し、郵送等にて回収したうえで拡大する手法にて調査を実施(サンプル調査(32万件)– 第13回： 鉄道ICカードの利用実績をもとに集計する手法(非接触かつ全数調査(1915万件)等に変更

https://www.mlit.go.jp/sogoseisaku/transport/sosei_transport_tk_000007.html

GBFS（シェアモビリティデータ）• シェアモビリティの国際標準フォーマット
– シェアサイクル、シェアキックボードなどのポートデータが公開されている• 日本では2022年よりドコモ
バイクシェア、ハローサイクリングのデータが公開
https://www.odpt.org

基礎データ： 地理院地図• 国土地理院が提供する– × Web地図サービス– ○ タイル地図配信サービス

国勢調査の人口データ• Qiitaに公表した記事の前半部分までを参照– ただし記事は2015年データに基づく。現在は2020年データも公開

https://qiita.com/niyalist/items/d70f471c259211aa1554

国土数値情報• 国土交通省が整備している基礎的なGISデータ集

国土数値情報 行政区域データ• 市区町村の境界を入手可能• https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03-v3_1.html

国土数値情報 鉄道データ

国土数値情報 駅別乗降客数データ• 鉄道事業者からの情報提供に基づき、駅ごとの乗降客数を提供• https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-S12v3_0.html

2〜7回： QGISとPostGIS でSQLによる公共交通データ分析を身に付ける

今週・来週の目標• 交通ビッグデータ
をSQLとGISで可視化・分析– 今週：データ整形・分析– 来週：複数データの統合・GISとの統合

https://twitter.com/kasobus/status/1650806981043814401

https://twitter.com/ShinagawaJP/sta
tus/1649382482947739648

分析SQL: 表から表に変換する穴埋め型言語

select
出力する列（コラム）に関する記述
どの列をどのような表現で表示するか ＊は全部出力

from
入力する表（テーブル）の指定

where
出力する行に関する記述
どのような条件で絞り込むか

駅間で検索（三鷹→根津）• 何時台に何人いる？
• 東大前駅、本郷三丁目前駅利用者とどれが多い？
• 今日の自分と同じ経路・時間帯の利用者は何人いた？
select*fromcensus13.od_level2
whereorigin_station ='三鷹' anddestination_station = '本郷三丁目'

Join: 複数のテーブルをある条件で横に結合
Line

開業年 一日利用者数 駅数

総延長(km)

丸ノ内線

1954

約130万

28

27.4

千代田線

1969

約60万

20

18.8

1978

約30万

1742.6

Line

山手線

1909

約400万

29

34.5

丸ノ内線

1954

約130万

28

27.4 東京メトロ

2004

常磐線

1895

約100万

69

209.4

千代田線

1969

約60万

20

18.8 東京メトロ

2004

東横線

1926

約70万

2124.2

京葉線

1978

約30万

1742.6 JR東日本

1987

井の頭線

1933

約30万

1812.7山手線

1909約400万

2934.5 JR東日本

1987

京王線

1913

約50万

29

37.9

常磐線

1895

約100万

69

209.4 JR東日本

1987

東横線

1926

約70万

21

24.2 東急電鉄

1922

井の頭線

1933

約30万

18

12.7 京王電鉄

1948

京王線

1913

約50万

29

37.9 京王電鉄

1948

Operator

設立年 従業員数

総売上

東京メトロ

2004

約9,000

約4,000億

JR東日本

1987

約70,000

約3兆

東急電鉄

1922

約5,000約1,000億

京王電鉄

1948

約3,500

約500億

開業年

一日利用者
駅数
数

京葉線

路線Tableの右に事業者Tableを結合

総延長(km) Operator

設立年

そもそもなぜテーブルを分割する？
Line• 1つのデータは一箇所で管理することで不整合を防 丸ノ内線
千代田線
ぐ
京葉線
山手線
• データベースの正規化– 通常、リレーショナルデータベースはjoinを前提に複数のテーブルに分割してデータを保存する– 複数のテーブルに分割することを「データベースの正規化」と呼ぶ• 良くある分割– マスターテーブル： 人・モノなどの一覧（大きく変化しない）– トランザクションテーブル： 何かの処理の度に追加

Operator

東京メトロ
東京メトロ
JR東日本
JR東日本

常磐線

JR東日本

東横線

東急電鉄

井の頭線

京王電鉄

京王線

京王電鉄

Joinの条件: IDで指定するのが基本
Line

開業年 一日利用者数 駅数

総延長(km) Operator

丸ノ内線

1954

約130万

28

27.4

10

千代田線

1969

約60万

20

18.8

10

京葉線

1978

約30万

17

42.6

20

山手線

1909

約400万

29

34.5

20

常磐線

1895

約100万

69

209.4

20

東横線

1926

約70万

21

24.2

30

井の頭線

1933

約30万

18

12.7

40

京王線

1913

約50万

29

37.9

40

ID

Operator

設立年 従業員数

総売上

10 東京メトロ

2004

約9,000

約4,000億

20 JR東日本

1987

約70,000約3兆30 東急電鉄

1922

約5,000

約1,000億

40 京王電鉄

1948

約3,500約500億• データ各行を区別するIDを付与– 1行を区別できるIDをプライマリーキー（primary key）と呼ぶ– この例では、OperatorテーブルのIDが相当– 実際には、Lineを区別するIDもあった方がいい• 外部キー（foreign key）

– 他のテーブルを参照するためのキー• 考察: Operator Table に foreign
key としてLine IDを持てないか？

– 1行に複数のkeyを設定できない– 一対多の関係では、多の側に外部キーを設定する

Primary Key について
• DBを構築する際は、1行を区別できるID（primary key）を持たせることが一般的– Primary key は1つのコラムに限らない。複数のコラムの複合で区別できる場合も多い• 現実のデータ分析ではIDの存在しないデータも多い– 例： 国土数値情報の駅データ。同名の駅を区別する方法がない– 第4回では、駅名＋都道府県名を組み合わせて primary keyとした（それで区別が出来ていたかは未検証）PostGISによるBuffering処理• ST_Transformで一度 EPSG:32654に変換し、ST_Bufferで800mの円を作成、更にそれをST_TransformでWGS84に戻す
Select*,
ST_Transform(ST_Buffer(ST_Transform(center, 32654), 800), 4326) as buffer
fromanalysis.station_master
wherecity is not null;

SQL-7-1• city is not null を指定することで、市町村境界データとのjoinが成功した駅のみを抽出

人口を面積で按分• 5次メッシュ（250mメッシュ）の人口を面積で按分

駅勢圏の形状重複部分を持つ5次メッシュ

重複部分を切り出したメッシュ• xselectname,prefecture,city,sum(partial_population) as populationfrom(selectname,prefecture,city,
population * ST_Area(ST_Intersection(buffer, wkb_geometry)::geography)/ ST_Area(wkb_geometry::geography) as partial_populationfrom(select*,
ST_Transform(ST_Buffer(ST_Transform(center, 32654), 800), 4326) as buffer
fromanalysis.station_master
wherecity is not null)as data1
inner join base.population as popon ST_Intersects(data1.buffer, pop.wkb_geometry)

SQL-7-1
SQL-7-2改-2)as data2
group byname,prefecture,city;

SQL-7-3

ChatGPTを使って自動ダウンロードプログラム作成方法を検討• とりあえず聞くと大枠を教えてくれる– URLを直せばとりあえず使える• 更に修正するとしたら…

– ダウンロードしたJSON形式をCSVに変換してから保存• Pandasを利用– ファイル名にタイムスタンプを入れて、重複がなくなるように– ダウンロードの度にデータを追記ハローサイクリング・ドコモバイクシェアのポート位置

貸出可能な自転車数の変化
181614• x121086

42

0
5/25/23 0:00

5/25/23 4:48

5/25/23 9:36

5/25/23 14:24

5/25/23 19:12

5/26/23 0:00

5/26/23 4:48

5/26/23 9:36

5/26/23 14:24

5/26/23 19:12

5/27/23 0:00

8回： 道路データと最短経路探索

1.
2.
3.

4.

始点に最短距離0を設定する
まだ辿ってない点の中から最短距離が分かっていて最も距離が短い頂点に移動
その頂点から繋がっている頂点の最短距離を設定する。この時にその頂点の最短距離を更新できるなら更新
2-3を全ての頂点の最短距離をわかるまで行う

14410 B

E21

10035G1816A1215C193

12 D

F1516

https://qiita.com/knhr__/items/cb3ce311508337128714

pgRouting距離を cost としたときの経路探索• x

道路種別で cost を調整したときの経路探索• 主要道路を通行するようになった• 距離ではなく、時間をコストとして計算したとも見なせる9〜11回： 交通シミュレータsumoを学ぶ

ネットワークを作成してみよう信号交差点の作成• Traffic Light mode
• 交差点を指定した状態
で”Create”• 交差点内の進路と階梯図が自動作成される

交通流の可視化• 位置（X座標）とtimestampを用いてグラフ作成可能

ゲスト講師（2023年版）• x

レポート課題

中間レポート： 大都市交通センサスの分析• 大都市交通センサスから興味深いと思える交通現象を見つけ出し、地図やグラフを使って説明せよ。
• 分量： 1000字以上 ＋図表を2点以上– English: more than 500 words• SQLを利用した場合は、どのようなSQLを利用したかレポートに含めること（末尾に付録 appendix として載せてもいい） 。SQLの利用は加点要素である。
• ※ ChatGPTなど生成AIをレポート作成に利用した場合は、何をどのように利用したかをレポートに含めること（末尾に付録 appendix として載せてもいい）。どのような使い方をしても減点はしない。
• 課題に対する要望は本日のコメントとしてください最終レポート課題• 分量：– 1500字以上＋図表を3点以上 (English: more than 750 words)– Appendixとしてレポートに利用したSQLやPythonプログラムなどを添付してください• 課題：「交通情報学特論」の講義内容を踏まえてこれからの交通の発展に寄与するテーマを設定し、論じてください。
• テーマの例（これ以外でも自由に考えてください。テーマ自体の独創性は求めません）– 交通データに基づいた政策提言– 交通データとシミュレーションを用いた交通現象の解明– GISによる交通の地域間比較と課題の発見– 交通データ分析に使えるツールの調査と利用可能性• 加点要素（ITとデータの観点から「手を動かす」ことを重視します）– SQLや交通ビッグデータの利用、GISの利用、交通シミュレーションの利用– 複数のデータを結び付けた分析– 授業で扱っていないデータやITツールの活用– プログラミング

講義はハイブリッド形式で実施• 講義室＋オンライン• 講義内容を録画しYouTube掲載– 欠席の場合は動画でキャッチアップも可能– →レポート提出前に操作方法などを復習• 撮影やビデオ編集はまあまあ大変です。。。

受講する方法• 東京大学大学院へ入学– 情報理工学系研究科だけでなく、ほとんどの学科から履修・単位取得が可能なようです• 大学院科目等履修生に出願– 修士の学位を有する者、修士の学位を有する者と同等以上の学力があると本研究科が認めた者– https://www.i.u-tokyo.ac.jp/edu/exam/guide.shtml• 単位互換制度に基づいた履修– 都内国立大学の大学院などと単位互換制度があるようです講義の一部を一般公開• 学生とのディスカッションなどを除いた、主に講師が話す部分を一般公開– 講義資料や演習データなども一般公開

https://itolab.t.u-tokyo.ac.jp/education/• ぜひ動画をご覧下さい• ぜひ講義を受けて下さい• 是非大学院を受験してください！