1

Lara Codecaのルクセンブルクのシナリオなど、Veins を使用したシミュレーション用にOpenStreetMapからインポートした現実的な道路ネットワークを使用しています。ここで、(Google Earth を使用して) ビジュアライゼーションを準備するために、シミュレーションで車両の位置を SUMO または OmNET 座標から GPS 座標にエクスポートしたいと考えています。

資料として、そこにあるすべてのノードの GPS 位置を含む、シナリオの生成に使用される OSM ファイルがあります。たとえば、バウンディング ボックスとシミュレーション プレイグラウンドの角の GPS 座標を知ることで、シミュレーション座標から GPS 座標への簡単なマッピングを見つけたいと考えていました。

この変換を行う簡単な方法はありますか? また、プレイグラウンドを生成するときに OSM 変換で使用された実際のコーナーを見つけるにはどうすればよいですか?

4

1 に答える 1

1

変換は次のように機能します。

1. OmNET からの位置情報へのアクセス

// Adapt your path to the mobility module here  
Veins::TraCIMobility* mobility =
  check_and_cast<Veins::TraCIMobility*>(
    getParentModule()->getSubmodule("veinsmobility"));

Veins::TraCICommandInterface* traci = mobility->getCommandInterface();

Coord currPos = mobility->getCurrentPosition();
std::pair<double, double> currLonLat = traci->getLonLat(currPos);

getLonLat()絶対 2D 座標が返されたので、変換手順が必要です。

2. 変換を見つける

SUMO の .net.xml ファイルには、必要な変換が含まれています。<location>タグには、必要な属性が含まれていnetOffsetますprojParameters

ルクセンブルグのシナリオでは、これらは

netOffset="-285448.66,-5492398.13"
projParameter="+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"

3.変換の反転

ライブラリPROJ.4を使用して反転を行うことができます。Python インターフェイスも利用できます ( pyproj )。

import pyproj

projection = pyproj.Proj(
  "+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")

# x, y obtained from OmNET
lon, lat = projection(x, y, inverse=True)

相対的な位置情報しか利用できない場合は、まず x、y の値に netOffset 値を追加して調整する必要があります。

編集

--with-proj-gdalSUMOサポートをビルドするときに必要なのは最初のステップだけです。結果はgetLonLat()すぐに目的の形式になります。

于 2016-02-02T11:05:14.387 に答える