yuu_nkjm blog
2014-06-12(Thu) [長年日記] 編集
[Research][SUMO] 交通シミュレータSUMO(Simulation of Urban MObility)にOSMのネットワークデータを読み込ませる
SUMOのインストール
SUMOをWindows上で実行する方法がInstalling/Binary - SUMO - Simulation of Urban Mobilityに書かれている.
Downloads - SUMO - Simulation of Urban Mobilityより,Download the archive named sumo-winbin-
E:\sumo\ |-bin\ |-data\ |-docs\ |-tools\
bin/以下にsumo-gui.exeがあるので,それを実行するとSUMOのGUIを起動することができる.
環境変数の設定
正しく環境変数の設定が出来ているかは,コマンドプロンプトから確認できる.
$ echo %PATH% C:\Program Files (x86)\foo\;(snip);E:\Desktop\sumo-0.21.0\bin\ $ netconvert.exe SUMO netconvert Version 0.21.0 Copyright (C) 2001-2014 DLR and contributors; http://sumo-sim.org License GPLv3+: GNU GPL Version 3 or later Use --help to get the list of options.
OSM(OpenStreetMap)形式からSUMO形式にネットワークデータを変換
OSMからのデータ取得方法は,OpenStreetMap(OSM オープンストリートマップ)のデータを道路ネットワークに変換する - yuu_nkjm blog(2011-02-10)を参考のこと.
OSMでエクスポートしたデータをmap.osmに保存した場合,以下のコマンドにより,OSM形式のネットワークデータがSUMOのネットワーク形式に変換される.
$ netconvert --osm-files map.osm -o map.from.osm.xml Error: invalid multi-byte sequence In file 'map.osm' At line/column 7966/32. Quitting (on error).
…と思ったのに,エラー.マルチバイト文字列め…と思いながら,エラーが出た行の日本語を削除すると,ネットワークデータの変換に成功した.
$ netconvert --osm-files map.osm -o map.from.osm.xml Success.
SUMO-GUI上での確認
sumo-gui.exeを起動して,メニューからFile→Open Networkより,先ほどのmap.from.osm.xmlを指定すると,以下のように表示された.
備考
Linuxで動かす場合を日本語で書いた物としては,以下のものがある.
2014-06-15(Sun) [長年日記] 編集
[Linux][command][php][tail] phpのerror_logで出力される数値参照文字となった(エスケープされた)マルチバイト文字列を読む
Bash - エスケープされた日本語文字列を読みたい - Qiita [キータ]に書かれていたテクニックがすごく参考になった.
$ alias unesc='while read -r a; do /usr/bin/printf "$a\n" ; done' $ tail -f error_log | unesc | grep 'エラー' [Thu Jan 02 22:43:39 2014] [error] [client 192.168.56.1] PHP Notice: 妄想エラーです in /var/www/html/trigger_error.php on line 3
2014-06-16(Mon) [長年日記] 編集
[Tomcat][Eclipse][XAMPP] EclipseでのWebアプリケーション開発
WindowsへのTomcatのインストール
ダウンロードして展開するだけでOK.Apache Tomcat - Apache Tomcat 7 Downloads今だと7系が良さそう.XAMPPでやるのとどっちがいいのかな.
Eclipse上でTomcatを動かす
ダウンロードして展開したTomcatのディレクトリを指定する.
起動のプロセス
- プロジェクトを選択してサーバで起動を選ぶ.
コンテキストパスの変更
2014-06-24(Tue) [長年日記] 編集
[GDocs][Java][JSON-RPC] JSON-RPCサーバとJavaScriptを使ったGoogle Spreadsheetのデータの読み込み,追加,編集,削除
今さらながら,Spreadsheets Data APIを使うための基礎知識(2):APIでGoogleスプレッドシートの追加/更新/削除 (1/3) - @ITを参考に,Google Spreadsheetにアクセスするコードを書いて,動かして見た.更新がやたら遅い印象.
- 2枚のスプレッドシートから1枚を選び出し,そのスプレッドシートに含まれる1枚のワークシートから1枚のワークシートを取り出す => 1000ms
- 2列100行のデータを読み込む => 500ms
- 2列100行のデータを読み込み,特定の行(20行)を選び出す => 500ms (全行取得してから自分でフィルタリング)
- 2列100行のデータを読み込み,特定の行(20行)の値を更新 => 10s(10000ms)
- 2列100行のデータを読み込み,特定の行(1行)の値を更新 => 10s(10000ms)
- 2列100行を持つ表に対して,1行を挿入 => 500ms
Googleが提供しているサンプルの様にキャッシュしたらどれくらい早くなるのかは試していない.
コードはこの辺においておく.JsonRPCService/src/org/nkjmlab/gdata at master · yuu-nkjm/JsonRPCService
JSON-RPCのサーバと組み合わせて,クライアントからサーバにJSONを投げてGoogle Spreadsheetからの読込/への書込をするのが狙いだった.Javaのサービスクライアント,JavaScriptのサービスクライアントから呼び出せることを確認した.まずはここまで.
トラブルシューティング
6 24, 2014 5:39:47 午後 jp.go.nict.langrid.servicecontainer.handler.jsonrpc.JsonRpcDynamicHandler handle
警告: IOException occurred.
ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error
というエラーが,サーバ側で頻発していた.これはJavaScriptのajaxでクエリを投げるところが3秒でタイムアウトしていて,サーバ側から3秒以内に結果が戻ってこなかった場合,サーバから切断してしまう.サーバ側は3秒たった後に結果を返そうとしても接続が切れてしまっているので,上記のエラーが出る.ということだと思う.