0

我在我的 CentOS 7 中安装并运行了 OSRM,并且我使用了 car.lua 配置文件,几乎没有修改来提取 osm 数据。

此外,通过我拥有的 GPS 轨迹(进一步转换为 gpx 格式),我使用以下程序生成了真实的“旅行时间模型”。

http://wiki.openstreetmap.org/wiki/Routing/Travel_Time_Analysis

结果将如下所示:

    <models-db>
    <model node-from="338720677" node-to="832908078" way="214413814" freeflow="5.4" avg-delay="0.9" />
      <model node-from="832908078" node-to="315264821" way="214413814" freeflow="1.0" avg-delay="0.2" />
      <model node-from="315264821" node-to="315264861" way="28682394" freeflow="7.3" avg-delay="2.1" />
      <model node-from="256019073" node-to="256019073" way="30625842" freeflow="18.0" avg-delay="5.9">
        <traffic-delay from="03:15:00" to="07:15:00" day="Any" delay="0.2" />
        <traffic-delay from="15:00:00" to="19:15:00" day="Any" delay="0.9" />
        <traffic-delay from="19:15:00" to="23:30:00" day="Any" delay="5.4" />
      </model>
      ..........
      ..........

有没有办法使用这种“旅行时间模型”导致 OSRM 数据,因为 node-from 和 node-to 直接连接到 osm 节点 ID。

我知道我们可以使用 lua 配置文件更改速度(前进和后退)并重新填充数据。由于上述结果及时给出了"freeflow""avg-delay",我正在努力使用 osrm 数据中的实时旅行时间模型。

我还从下面的链接中找到了 OSRM wiki 中的“交通”功能

https://github.com/Project-OSRM/osrm-backend/wiki/Traffic

但同样我们需要将输入作为节点连同速度(edge_speed_in_km_h)一起提供。

提前致谢。

4

1 回答 1

3

遗憾的是,您需要在这里投入一些精力才能将上述格式转换为 OSRM 可以理解的格式。我们使用简单的基于 CSV 的模式,正如您已经看到的,我们需要速度而不是持续时间。

要将持续时间值转换为速度值,您需要编写一个转换工具来执行以下操作:

  • 读取 OSM 文件并保存每个节点的坐标(由 OSM 节点 ID 索引)
  • 阅读您的 XML 文件,并为每个model
    • 获取和的node-from坐标node-to
    • 计算这些坐标之间的距离
    • 将计算出的距离除以您要提取的所需字段,例如free_flow / distance = speed [m/s]
    • 将速度m/s除以除以3.6转换为km/h
    • {node_from},{node_to},{speed}将每个连接节点对的结果保存为 CSV

我在这里假设ǹode-from并且node-to总是相邻的。我不确定您发布的格式是如何定义的,我在您提供的链接下找不到真正的规范。

OSRM 本身不处理时间依赖性。CSV您需要自己进行编排,并为您当前的道路网络模型提供最新文件。

于 2016-04-08T12:07:24.237 回答