yuu_nkjm blog
2011-02-10(Thu) [長年日記]
[MABS][CitySim][MATSim][OSM] OpenStreetMap(OSM オープンストリートマップ)のデータを道路ネットワークに変換する
以下,書きかけ
道路ネットワークのデータが欲しいというとき,OpenStreetMapがなかなか便利.緯度経度だけでなく道路の接続状況も分かるし,取り扱いが簡単.基盤地図情報|国土地理院も使ったことがあるけど,道路と道路の結合情報をどのように作るのが良いのかが分からない.
マルチエージェント交通シミュレーションツールボックスMATSim(Multi-Agent Transport Simulation)には,OpenStreetMap形式のデータを変換する機能がある.この変換方法は日本の座標系と合っていないようだが,ネットワークの生成はできた.なお,MATSimはJavaで書かれたプログラムであるため,予めJavaをインストールしておく必要がある.
ダウンロード
- OpenStreetMapにアクセスする.OpenStreetMap Japanからのたどり方はよく分からないので,http://www.openstreetmap.org/からアクセス.
- 適当なエリアに移動する.
- エクスポートタブを選択する.
- エクスポートするファイル形式で,OSM XMLデータを選択する.
- 「別の範囲を指定する」を選択する.地図上でエクスポートしたい範囲を選択する.
- 出力ボタンを押す.map.ocmという名前でダウンロードされる.
道路ネットワークに変換
-
MATSimで使える形に変換するには,以下の様にする.MATSimは,公式サイトからダウンロードする.0.2以外でNetworkFromOSMクラスが用意されているかは分かりません.
java -cp matsim-0.2.0.jar org/matsim/evacuation/tutorial/NetworkFromOSM map.osm network.xml
-
作成した道路ネットワークデータの定義はwww.matsim.org/files/dtd/network_v1.dtdである.
<!ELEMENT network (nodes,links)> <!ATTLIST network name CDATA #IMPLIED type CDATA #IMPLIED capDivider CDATA #IMPLIED xml:lang NMTOKEN "de-CH"> <!ELEMENT nodes (node)*> <!ELEMENT links (link)*> <!ATTLIST links capperiod CDATA #IMPLIED effectivecellsize CDATA "7.5" effectivelanewidth CDATA "3.75" capPeriod CDATA #IMPLIED capDivider CDATA #IMPLIED capdivider CDATA #IMPLIED> <!ELEMENT node EMPTY> <!ATTLIST node id CDATA #REQUIRED x CDATA #REQUIRED y CDATA #REQUIRED type CDATA #IMPLIED origid CDATA #IMPLIED> <!ELEMENT link EMPTY> <!ATTLIST link id CDATA #REQUIRED from CDATA #REQUIRED to CDATA #REQUIRED length CDATA #REQUIRED freespeed CDATA #REQUIRED capacity CDATA #REQUIRED permlanes CDATA #REQUIRED oneway CDATA #FIXED "1" volume CDATA #IMPLIED origid CDATA #IMPLIED nt_category CDATA #IMPLIED nt_type CDATA #IMPLIED type CDATA #IMPLIED modes CDATA "car">
- シミュレーションをする上で,linkとlinkの連結情報(fromノードとtoノード)があるのが便利.
- MATSimの緯度-平面直角座標系変換はドイツ(?つまり日本以外)を基準にした変換を行っている.自分の欲しい地図データに適した変換を行うには,ちょっとプログラムを書く必要がある.CoordinateTransformationというクラスを継承して,自前で変換ルールを書く.一部を付録として末尾に掲載.MATSimのモジュール使わなくても,OSMプロジェクトでJava用のデータ処理ライブラリが用意されてる気がするが,未調査.
緯度・経度と平面直角座標の変換
世界測地系,日本測地系,平面直角座標系,緯度経度のあれこれ
付録:日本測地系用の変換プログラムの一部
// 道路ネットワークを作成するクラス public class NetworkFromOSMKyoto { public static void main(String[] args) throws SAXException, ParserConfigurationException, IOException { (snip) Scenario sc = new ScenarioImpl(); Network net = sc.getNetwork(); // 自分で作成した変換ルールをネットワークリーダーに渡す. CoordinateTransformation ct = new CoordinateTransformationKyoto(); OsmNetworkReader onr = new OsmNetworkReader(net, ct); onr.parse(osm); new NetworkWriter(net).write(networkFileTmp, networkDtd); new NetworkWriter(net).write(dbNetworkFileTmp, dbNetworkDtd); (snip) } }
import jp.jasminesoft.gcat.scalc.DMSconv; import jp.jasminesoft.gcat.scalc.LatLong2XY; import org.matsim.api.core.v01.Coord; import org.matsim.core.utils.geometry.CoordImpl; import org.matsim.core.utils.geometry.CoordinateTransformation; // 日本測地系用の変換ルール public class CoordinateTransformationKyoto implements CoordinateTransformation { @Override public Coord transform(Coord coord) { LatLong2XY latLong2XY = new LatLong2XY(6); double lat = DMSconv.deg2dms((float) coord.getY()); double lon = DMSconv.deg2dms((float) coord.getX()); latLong2XY.setLatitude(lat); latLong2XY.setLongitude(lon); // TODO nkjm X-Y coord on Matsim and X-Y coord in Japan is // different. double convX = latLong2XY.getY(); double convY = latLong2XY.getX(); return new CoordImpl(convX, convY); } }
- https://www.google.co.jp/ ×1547
- https://www.google.com/ ×40
- https://www.bing.com/ ×34
- http://b.hatena.ne.jp/viisikytyksi/道路ネットワーク/ ×17
- http://search.yahoo.co.jp/ ×10
- https://www.google.co.jp/ ×9
- http://t.co/a22eNK3 ×9
- https://www.google.co.uk/ ×4
- https://www.google.com/search ×3
- http://ddl.yasushisakai.com/ ×3
- https://www.facebook.com/ ×3
- http://2srbg-lab.ksg.ssl.fujitsu.co.jp/apps/Semant... ×2
- http://www3.homes.co.jp/cgi-bin/cb4/ag.cgi?page=Sc... ×2
- http://search.genieo.com/results.html?v=smtsem&q= ... ×2
- http://www.facebook.com/l.php?u=http://bit.ly/dGPI... ×2
- http://www.facebook.com/l.php?u=http://bit.ly/dGPI... ×2
- https://www.google.com/ ×2
- https://www.google.com.sg/ ×2
- http://www3.homes.co.jp/cgi-bin/cb4/ag.cgi?page=Sc... ×2
- http://www.facebook.com/l.php?u=http://bit.ly/dGPI... ×2
- http://www.baidu.com/s?wd=www ×2
- http://search.conduit.com/results.aspx?q=オープンストリート... ×1
- https://www.google.co.th/ ×1
- http://search.babylon.com/?q=OSM XMLデータ&affID=1108... ×1
- http://ddl.yasushisakai.com/category/research/tsun... ×1
- http://isearch.babylon.com/?q=オープンストリートマップのダウンロード&... ×1
- https://www.google.nl/ ×1
- http://search.fenrir-inc.com/?q=地図データ 変換 osm&hl=ja... ×1
- http://search.fenrir-inc.com/?q=OSM ダウンロード&hl=ja&s... ×1
- http://b.hatena.ne.jp/viisikytyksi/OSM/ ×1
- http://azby.search.nifty.com/websearch/search?cflg... ×1
- http://search.conduit.com/Results.aspx?q=osm backu... ×1
- https://www.google.fr/ ×1
- http://2srbg-lab.ksg.ssl.fujitsu.co.jp/apps/Semant... ×1
- http://search.fenrir-inc.com/?hl=ja&channel=sleipn... ×1
- http://www.step-two.ru/2010/02/sistema-buypost-—-e... ×1
- https://www.google.com.hk/ ×1
- http://search.fenrir-inc.com/?hl=ja&safe=off&chann... ×1
- http://translate.googleusercontent.com/translate_c... ×1
- https://www.google.de/ ×1
- http://search.fenrir-inc.com/?hl=ja&channel=sleipn... ×1
- https://www.google.co.in/ ×1
- https://www.google.tn/ ×1
- http://dev.classmethod.jp/?p=115146&preview=true ×1
- http://www.weblio.jp/content_find/text/0/MATSim ×1
- http://search.fenrir-inc.com/?hl=ja&safe=off&chann... ×1
- http://realtime.search.yahoo.co.jp/search?fr=top_g... ×1
- http://twipple.jp/ ×1
- http://twipple.jp/?ca ×1
- https://www.google.com.vn/ ×1
- http://search.babylon.com/?q=オープンストリートマップのダウンロード&s... ×1
- http://2srbg-lab.ksg.ssl.fujitsu.co.jp/apps/Semant... ×1
- matsim ×14 / MATSim ×12 / OSM XMLデータ ×8 / java 世界測地系 ×7 / osm 変換 ×7 / open street map エクスポート ×7 / Open Street Map R ×5 / open street map 道路データ ×5 / java 緯度 経度 直角座標 変換 ×5 / openstreetmap ダウンロード ×5 / オープンストリートマップ ダウンロード ×5 / 道路ネットワーク ダウンロード ×5 / •OpenStreetMap エクスポート エラー ×5 / オープンストリートマップ java ×4 / オープンストリートマップ エクスポート ×4 / Network Simulator 地図 OSM ×4 / osm エクスポート ×3 / Android OpenStreetMap プログラム ×3 / ドイツの直角座標系 ×3 / osm.xml ×3 / オープンストリートマップ 緯度経度 ×3 / openstreetmap 道路データ ダウンロード ×3 / 緯度経度 標準直交座標 変換 ×3 / osm xmlデータ ×3 / LatLong2XY ×3 / openstreetmap エクスポート ×3 / openstreetmap 道路 ×3 / 道路データ エクスポート ×2 / 道路 緯度 経度 データ ×2 / openstreetmap 道路NW ×2 / matsim 言語 ×2 / openstreetmap 道路ネットワーク ×2 / ジャバ オープン ストリート マップ ×2 / ドイツの平面直角座標系 ×2 / osm変換 ×2 / オープンストリートマップ ×2 / open street map 緯度経度 ×2 / .fbl OpenStreetMap 変換 ×2 / 道路 ネットワークデータ オープン ×2 / open street map ネットワーク分析 ×2 / 基盤地図情報 道路 ノード ×2 / Open street map osm file output ×2 / OSMネットワーク ×2 / 道路データ osm ×2 / OpenStreetMap 道路ネットワーク ×2 / オープン ストリート マップ データダウンロード ×2 / open STREET MAP 道路データ ×2 / OSM ノード 座標変換 ×2 / OpenStreetMap 使い方 java ×2 / オープンストリートマップ ×2 / オープンストリートマップ 道路線図 ダウンロード ×2 / 道路 緯度経度 ×2 / MATSim インストール ×2 / open street map ×2 / xml osm ×2 / osm ×2 / オープンストリートマップの更新 ×2 / OSM JAVA ×2 / オープンストリートマップから道路データをダウンロード ×2 / OSM 日本測位系 transform ×2 / matsim japan ×2 / osm変換サイト ×2 / オープンストリートマップ ダウンロード 道路データ ×2 / 優木まおみ ×1 / osm xml データ ×1 / OSM 道路 リンク情報 ダウンロード ×1 / osm ネットワーク ×1 / OPENSTREETMAP OSMデータから道路情報 ×1 / 緯度経度 道路 ×1 / ネットワークデータ 変換 ×1 / java 交通 シミュレーション Matsim ×1 / osm データ ×1 / 道路ネットワークデータ 無料 ×1 / osm xml ×1 / transim ×1 / openmaps ダウンロード ×1 / osm japan file ×1 / openstreetmap 緯度経度 座標変換 計算式 ×1 / Osm xml変換 ×1 / 19座標系 変換 JAVA ×1 / ダウンロード OpenStreetMap OSM ×1 / osm duplicate node ×1 / matsim eclipse ×1 / open streetmap シミュレーション ×1 / Openstreetmap 道路データ ダウンロード ×1 / osm ノード 探索 ×1 / オープン・ストリート・マップ 道路 結合 ×1 / osm XML ×1 / OpenStreetMap 緯度 経度 ×1 / openstreetmap tdiary ×1 / osm 変換 プログラム ×1 / osm形式のデータ ×1 / openstreetmap 道路データ 緯度 経度 ×1 / matsim open street map ×1 / osm ダウンロード ×1 / 道路 緯度 経度 情報 ×1 / ブートストリート 地図 ×1 / openstreetmap xmlデータ ×1 / OpenStreetMap形式の地図データ ×1 / osm xml エクスポート ×1