【SUMO利用ガイド5】 オープンストリートマップからのインポート編

OpenStreetMapからSUMO用ネットワークファイルを作る方法

~なぜその作業をするのか?を丁寧に解説~

交通シミュレーションソフト「SUMO」を使うには、まず道路の地図データをSUMO用ネットワークファイルに変換する必要があります。
ここでは、OpenStreetMap(OSM)のデータを使って、そのネットワークファイルを作る手順を紹介します。


そもそも「なぜ地図データが必要なのか?」

SUMOは道路の形や信号の位置をもとにシミュレーションを行います。
つまり、道路の情報がなければシミュレーションできないのです。

「じゃあ、自分で描けばいいのでは?」と思うかもしれません。
確かにSUMOには NETEDIT というツールがあり、自分で道路を一本ずつ描けます。

でも…

  • 自分で作るのはとても大変
  • 実際の道路とズレが出てしまう

こうした理由から、最初はOSMの実データを利用するのが一番楽で正確なんです。


手順の全体像

  1. OpenStreetMapから地図データをダウンロード
  2. netconvertで変換してSUMO形式にする
  3. できたファイルをSUMOで読み込む

1. OpenStreetMapから地図を取得する

まずは実際の道路データを手に入れます。

「なぜOSMを使うのか?」
それは…

  • 世界中の道路データが誰でも無料で入手できる
  • 精度が高く、日々更新されている

からです。

手順は次の通りです:

    1.OpenStreetMap公式サイト を開く

    2.調べたい地域を検索

    「エクスポート」ボタンで範囲を指定して保存

    すると「map.osm」というファイルが手に入ります。
    (ダウンロードフォルダに保存されているはずです。)

    このファイルを例えば D:¥SUMO¥LESSON1 のような場所に移動します。

    【豆知識】日本語環境のコンピュータでは、バックスラッシュ(\) が 円記号(¥) と同じ文字コード(Shift_JISなどでは 0x5C)で扱われています。そのため、プログラムやコマンドで表示されると、フォントや環境によって「\」と表示されたり「¥」と表示されたりします。
    見た目は違っても、機能的には同じ文字ですので、どちらも同じものとして理解してください。


    2. OSMデータをSUMO形式に変換する

    ダウンロードした「map.osm」はこのままではSUMOは読めません。
    → OSMの形式(.osm)は汎用的な地図データなので、SUMOが理解できる形式(.net.xml)に翻訳する必要があるのです。

    変換には「 netconvert」 というツールを使います。これはSUMOをインストールしたときに同時にインストールされています。

    ??
    スタートメニューにない!?
    そうなんです。
    実は、これは前の記事で紹介したコマンドプロンプトを使って起動するのです。

    下の検索窓で「cmd」と打ち込んでコマンドプロンプトを起動してください。

    基本のコマンド

    前述の記事に書いた 「cd /d D:¥SUMO¥LESSON1」でチェンジディレクトリをして、

    netconvert --osm-files map.osm -o network.net.xml

    と打ち込んでください。

    ネットコンバートが起動し、map.osm を network.net.xml に変換します。

    ログを見る限り、変換自体はちゃんと成功(Success)しています。ただし、途中でたくさんの Warning(警告) が出ています。


    変換時に出る「Warning」って何?

    実際に netconvert を動かすと、たくさんのメッセージが出てきます。

    しかし、最後に Success. と出ていれば変換は成功していますのでご安心してください。

    よく出る警告の意味

    • Discarding unusable type 'waterway.stream'
       → 川や鉄道など、道路以外のデータは使わないので無視しますという意味
    • Ambiguity in turnarounds computation at junction
       → 交差点の形が複雑で、Uターンの計算に迷ったという警告
    • The traffic light 'xxxx' does not control any links
       → 信号機の情報がOSMにあるけれど、SUMOでつなぐ道路がなかったので削除したという意味
    • Speed of connection reduced by … due to turning radius
       → 曲がり角が急すぎるので、自動的に減速設定にしたという調整

    つまり、どれも「道路データをきれいに整えるための調整報告」で、エラーではありません


    では、作業フォルダを確認してみて下さい。

    上記のようにファイルが出現していたら成功です!!

    いよいよ、NETEDIT(ネットエディット)で確認してみましょう!

    スタートメニューから

    を立ち上げて、、

    左上の「File」→「Open Network」から出来立ての「network.net.xml」を開いてください。

    無事、鈴鹿サーキットが表示されましたか??


    3. オプションで日本向け設定にする

    「実は、、ごめんなさい。日本の道路は少し日本向けの設定を追加しないといけないので、もう一度やり直してください。。」
    → SUMOは世界中で使われるので、初期設定が“右側通行”なのです。
    日本でシミュレーションするなら、下記のとおり少し設定を足す必要があります

    netconvert --osm-files map.osm -o network.net.xml --lefthand --speed-in-kmh --junctions.join --tls.guess-signals --sidewalks.guess.from-permissions --crossings.guess

    このように、コマンド後に「 –」(スペース、ハイフン、ハイフン)のあとに書きのような注文をつけます。

    1. --junctions.join : 小さな交差点をまとめる
    2. --tls.guess-signals : 信号を自動推定
    3. --sidewalks.guess.from-permissions : 歩道を追加
    4. --crossings.guess : 横断歩道を追加

      これで、先ほどと同様にネットワークファイル(network.net.xml)が出来上がります。


      ここまでで、OpenStreetMapのデータを使ってネットワークファイルを作る基本の流れは完成です。

      そうしたときに便利なのが Overpass Turbo を使って幹線道路だけを抽出する方法です。
      ただし、この手順は少し“上級者編”になります。

      なぜなら、Overpass Turboの出力はそのままではSUMOに変換できず、Python(パイソン)というプログラミング言語を使って私が作成した独自の変換プログラムを使ってデータを整える作業(並び替え)が必要になるからです。
      つまり、まずは Pythonのインストールから始める必要があります。

      次回はこの「上級者編」について、Pythonの導入から順を追ってご説明します。どうぞお楽しみに!

      道路ラボをフォローすることで
      新しい記事が公開されたときに、メールでお知らせします。

      是非フォローしてください。

      お預かりしたメールアドレスに対して、無断で広告メールをお送りすることは一切ございません。
      個人情報の取扱いについては、[プライバシーポリシー]をご参照ください。

      コメントする

      メールアドレスが公開されることはありません。 が付いている欄は必須項目です

      上部へスクロール