検索
連載

MATSim実践編――「あなた」というエージェントを作って散歩させてみようリタイア直前エンジニアの社会人大学漂流記(3-2)(2/4 ページ)

今回からMATSim実践編に入りたいと思います。MATSimを理解するには「3つのファイル」を知っておけばOKです。3つのファイルを使い、まずは1人目のエージェントとなる「あなた」を作って、自宅周辺を散歩させてみましょう。

Share
Tweet
LINE
Hatena

「緯度・経度の座標」を扱わない!?

 さて……実は、ここからちょっとばかり面倒な話になってきます。

 ちょっと驚いたのですが、MATSimは緯度・経度の座標を取り扱わないのです。

 正直、私、この事実を知るまで数日かかりましたし、知った時には、心底ビックリしたものです。だって、位置情報を扱う都市・交通用のマルチエージェントシミュレータが緯度・経度を取り扱わないなんて信じられます?

 以下の図は、私が、サンプル用に用意されたnetwork.xmlを読んで、私(江端)が大混乱している様子を示したものです。


[クリックで拡大]

 まず、「負数の座標」という、とんでもないものが出てきています。これは、地球という球面を無理やり平面の地図に引き伸ばす「投影座標系」という“トラップ”です。基準点の取り方次第で負の値も普通に現れます。さらには、座標が決定しているのに、座標間の距離を別途記載するという、訳の分からん設定があります(普通は座標が決まれば、距離は自動的に決まるはずです)。

 そのくせ、network.xmlでは、道路のキャパシティやら、レーン数やら、「道路の設定が恐ろしく細かい」という傾向が見られます。MATSimは『道路なんて、しょせんは“線”だろう』と考えていた私の考え方とは全く異なる思想で設計されていることが分かります(実は、これにはMATSimならではの理由があったのですが、後で説明しますね)。

 ともあれ、『緯度・経度で表現されているOSMデータは、そのままではMATSimには使えない』ということは事実なので、これは覚えておいてください(そして、MATSimで、緯度・経度を使うことは、諦めてください。私は2日間タップリかけてこれに挑戦しましたが、ことごとく失敗しました(興味のある方は、私のブログから探してみてください))。

 さて、ダウンロードしたOSMは、そのままでは使えないので、MATSimが読める形式(投影座標系)に変換しなければなりません。変換ツールは、その辺に落ちていると思うのですが、探すのが面倒くさかったのと、引数の指定が面倒くさかったので、サクっとプログラムを自作してしまいました。こちらのURLから ”osm_to_matsim_network.py”をダウンロードしてください。

 ダウンロードしたら、以下の環境を作っていただき、osmファイルをnetwork.xml(今回はnetwork-test1.xmlとしています)に変換してください。


[クリックで拡大]

 上記のインストールも面倒な人のために、変換サイトを作りました。こちらでも同じ処理ができると思いますので、ご利用ください。


[クリックで拡大]

 出来上がった、network.xml(network-test1.xml)の例(江端の家の周辺地図)です。


[クリックで拡大]

 このnetwork-test1.xmlをアップしておきましたので、ダウンロード(https://kobore.net/network-test1.xml)して使ってください(ただ、これ江端家の近所だけで有効なものですが)。

 座標数値を見ても、さっぱり場所が分からんとは思いますが、これで「正解」です。

 ただ、緯度・経度座標が分からないと、地図との対応をつけることができませんので、座標変換用のサイトを作っておきました(こちらです)。必要に応じてご利用ください。


[クリックで拡大]

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る