将静脉坐标转换为 GPS

Converting Veins Coordinates to GPS

我正在使用从 Lara Codeca OpenStreetMap for simulations with Veins, for example the Luxembourg scenario 导入的真实街道网络。现在,为了准备可视化(使用 Google Earth),我想将模拟中的车辆位置从 SUMO 或 OmNET 坐标导出到 GPS 坐标。

As material 我有用于生成场景的 OSM 文件,包括那里所有节点的 GPS 位置。我希望找到一个从模拟坐标到 GPS 坐标的简单映射,例如,通过知道边界框角和模拟游乐场的 GPS 坐标。

有没有一种简单的方法可以进行这种转换,如何找到生成游乐场时 OSM 转换使用的实际角点?

转换工作如下:

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() 为我返回了绝对二维坐标,因此需要一个转换步骤。

2。寻找转变

SUMO 的 .net.xml 文件包含所需的转换。 <location> 标签包含需要的属性 netOffsetprojParameters

对于卢森堡情景,这些是

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

3。反转转换

图书馆PROJ.4 can be used to do the inversion. A Python interface is also available (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)

如果只有相对位置信息可用,则必须首先通过添加 netOffset 值来调整 x、y 值。

编辑

构建 SUMO --with-proj-gdal 支持时只需要第一步,getLonLat() 的结果将立即成为所需的格式。