OpenStreetMapから交通流予測モデルを構築し、異なる道路ネットワーク間転移へ挑戦する
第1回 OpenStreetMapから浅間下交差点周辺の交通流データセットを作成する
はじめに
近年、交通流予測には深層学習が広く利用されています。しかし、交通流予測モデルを学習させるためには十分な量の交通データが必要です。
一方で、実際の交通データは取得が難しかったり、公開されていなかったりするケースも少なくありません。
また、ある地域で学習した交通流予測モデルを別の地域でも利用できれば、新たな地域で一からモデルを学習するコストを削減できます。しかし道路ネットワークは地域ごとに異なるため、単純にモデルを流用できるわけではありません。
そこで本シリーズでは、
OpenStreetMap
↓
道路ネットワーク取得
↓
交通流シミュレーション
↓
交通流データセット作成
↓
交通流予測モデル構築
↓
異なる道路ネットワークへの転移
という流れで、交通流予測モデルの構築を行います。
最終的には、ある道路ネットワークで学習したモデルを、ノード数の異なる別の道路ネットワークへ転移できるかどうかにも挑戦します。
第1回となる今回は、OpenStreetMapとUXsimを利用して交通流データセットを作成します。
UXsimとは
交通流シミュレーションにはUXsimを利用しました。
UXsimは、東京大学の瀬尾享氏によって開発されているオープンソースの交通流シミュレータです。
- Pythonのみで記述可能
- 道路ネットワークの構築が容易
- 可視化機能を備える
- マクロ・メソスコピック交通流シミュレーションが可能
といった特徴を持っています。
今回の記事では、OpenStreetMapから取得した道路ネットワークをUXsimへ変換し、交通流データセットを作成します。
参考:
- UXsim GitHub
https://github.com/toruseo/UXsim - UXsim: An open source macroscopic and mesoscopic traffic simulator in Python -- a technical overview
https://arxiv.org/abs/2309.17114
対象エリア
今回対象としたのは、横浜市西区の浅間下交差点周辺です。
浅間下交差点は国道1号や新横浜通りなどが接続する比較的大きな交差点であり、周辺には幹線道路と生活道路が混在しています。
交通流シミュレーションの題材として扱いやすい規模であるため、今回の実験対象として選定しました。
OpenStreetMapから道路ネットワークを取得
今回はOpenStreetMapのエクスポート機能を利用して道路ネットワークを取得しました。
まずブラウザでOpenStreetMapを開き、浅間下交差点周辺を表示します。

地図データ:© OpenStreetMap contributors
図1 浅間下交差点周辺OSMマップ
続いて対象範囲を選択し、OSM形式のデータをエクスポートします。
取得したOSMデータには、
- ノード(交差点)
- リンク(道路)
- 道路種別
- 緯度経度情報
などが含まれています。
今回の作業では、このOSMデータをもとにUXsim用ネットワークを構築しました。
UXsim用ネットワークへの変換
OSMデータをそのままUXsimへ入力することはできません。
そのため、
OSM Node
↓
UXsim Node
OSM Edge
↓
UXsim Link
という変換処理を行います。
道路情報から
- 始点ノード
- 終点ノード
- 道路長
- 道路種別
などを抽出し、UXsimのネットワークとして利用できる形式へ変換しました。
ネットワークの前処理
OpenStreetMapのエクスポート機能を利用して、浅間下交差点周辺の道路ネットワークを取得しました。
取得直後のネットワークは以下の規模でした。
Nodes: 163
Edges: 384
また、道路種別の内訳は次のようになっていました。
footway : 156
residential : 76
tertiary : 54
primary : 41
unclassified : 36
None : 12
pedestrian : 4
service : 3
steps : 2
歩道(footway)や階段(steps)など、自動車交通シミュレーションには利用しない道路も多数含まれています。
そこで、
- footway
- pedestrian
- steps
などの道路を除外し、自動車交通に利用する道路のみを抽出しました。
その結果、
Filtered
Nodes: 122
Edges: 210
の道路ネットワークとなりました。総延長は約15kmです。
以降の交通流シミュレーションは、この122ノード・210リンクのネットワークを利用しています。
122ノードのネットワークについて到達可能なODペアを探索した結果、10,720組のODペアを得ることができました。交通需要生成に十分な規模です。
図2が生成された道路ネットワークです。
図2道路ネットワーク
図3に元の地図に重ねた道路ネットワークを示します。
なお、図2ではOpenStreetMapが保持する道路形状を利用して描画しているのに対し、図3ではノード間を直線で接続しています。そのため、一部の道路形状は簡略化されて表示されていますが、交差点配置や道路接続関係は維持されています。

地図データ:© OpenStreetMap contributors
図3 地図に重ねた道路ネットワーク
交通需要の生成
続いて交通需要を設定します。
実際のODデータを利用する代わりに、シミュレーション用の交通需要を生成しました。
イメージとしては、
Origin
↓
Destination
↓
車両発生
を多数設定し、ネットワークへ流入させています。
交通需要は通勤時間帯を模擬するため、朝8時頃と夕方17時頃にピークを持つように生成しました。
また、日ごとに需要総量やピーク強度を変動させることで、多様な交通流シナリオを作成しています。
このように朝と晩とにピークを持つ交通需要を20日分生成しました。
UXsimによる交通流シミュレーション
道路ネットワークと交通需要が準備できたら、UXsimによるシミュレーションを実行します。
W.exec_simulation()
シミュレーションの結果として、
- 各時刻
- 各交差点
- 各リンク
の交通状態を取得できます。
また、可視化機能を用いて混雑状況を確認することも可能です。
図5はUXsimによるシミュレーション結果を可視化したものです。
円の大きさはノードを通過した車両数を表しており、交通量の多い交差点ほど大きく表示されます。
浅間下交差点周辺の主要道路に交通が集中していることが確認できます。

地図データ:© OpenStreetMap contributors
図5 交通需要
学習用データセットの作成
シミュレーション結果を交通流予測モデルで利用しやすい形式へ変換します。
最終的に作成したデータの形状は以下のようになりました。
(20, 288, 122)
それぞれの意味は、
20 : シミュレーション日数
288 : 時間ステップ
122 : ノード数
です。
つまり、
日数
×
時間
×
交差点
まとめ
今回はOpenStreetMapとUXsimを利用して、浅間下交差点周辺の交通流データセットを作成しました。
実施した流れをまとめると、
OpenStreetMap
↓
OSMデータ取得
↓
UXsimネットワーク変換
↓
交通需要生成
↓
交通流シミュレーション
↓
学習用データセット作成
となります。
最終的に122ノードから構成される道路ネットワークの交通流データセットを作成できました。
次回は、このデータセットを用いて交通流予測モデルを構築し、将来の交通流予測に挑戦します。
関連記事
-
OpenStreetMapから交通流予測モデルを構築し、道路ネットワーク間転移へ挑戦する ②交通流予測モデルを構築する
https://qiita.com/ahaya/items/c14e5d68538ac0d04391 -
OpenStreetMapから交通流予測モデルを構築し、道路ネットワーク間転移へ挑戦する ③ノード数の異なる道路ネットワークへの転移学習を試す
https://qiita.com/ahaya/items/eb1ff83f522f2165f5ec -
OpenStreetMapから交通流予測モデルを構築し、道路ネットワーク間転移へ挑戦する ④浅間下交差点周辺と川崎市立幸高校周辺を対象としたマルチネットワーク交通予測モデルの試作
https://qiita.com/ahaya/items/90ef60e375a25a382123 -
OpenStreetMapから交通流予測モデルを構築し、異なる道路ネットワーク間転移へ挑戦する ⑤ 複数道路ネットワークによる共同学習を試す
https://qiita.com/ahaya/items/f9a4af657a7982ca80fd

