如何在OSRM配置文件中使用外部数据

时间:2015-11-08 14:00:19

标签: lua openstreetmap osrm

this Mapbox blog postLauren Budorick分享了他们如何使用OSRM运行路由引擎,该OSRM使用高程数据为骑行者提供更好的路线......令人惊讶!

我还想在插入外部(用户生成的)数据时探索OSRM路由的潜力,但我仍然很难掌握OSRM的配置文件的工作方式。我认为我得到了一个主要的想法,即每一种方式(或节点?)都通过管道传输到一些功能中,而这些功能一直都很好地分析了这条路是多么好。

但就是这样,我脑子里有很多缺失的部分,就像Lauren在她的个人资料中使用的每个功能一样。如果有人能够向我指出一些有关所有这些工作原理的更详细信息,那么下周我会更容易,更容易:)

此外,在Lauren的帖子中,在source_function内,她加载了一个./srtm_bayarea.asc文件。那个.asc文件是什么样的?如何生成一个文件,比如说,存储在pgsql数据库中的数据?我们可以使用其他格式,例如GeoJSON吗?

然后,当她在segment_function中使用source.lontarget.lat这样的内容时,那些内容是指存储在asc文件中的原始数据吗?或者该文件是否被处理成一些标准,以映射所有内容以符合它?

正如您所看到的,我是一个完整的路由新手,也许是一般的GIS,但我很想了解更多有关围绕OSRM生态系统的标准和工具的信息。你能和我分享一些小窍门吗?

1 个答案:

答案 0 :(得分:5)

  

我认为我得到了一个主要的想法,即每种方式(或节点?)都通过管道传输到一些功能中,而这些功能一直都很好地分析了这条路径的好坏。

正确,每个节点的每一个方式都得分as they are read from an OSM dump,以确定节点的可通过性和方式的速度(用作评分启发式)。

可以找到数据格式的基本描述here。在读取时,ArcInfo ASCII网格中立即可用的数据包括SRTM data。目前,纯文本ASCII网格是唯一受支持的格式。 GIS开发人员可以使用几种优秀的Python工具来帮助将其他数据类型转换为ASCII网格 - 例如check out rasterio。这是一个将NED IMG转换为ASCII网格的非常简单的python脚本示例:

import sys
import rasterio as rio
import numpy as np

args = sys.argv[1:]

with rio.drivers():
    with rio.open(args[0]) as src:
        elev = src.read()[0]
        profile = src.profile

    def shortify(x):
        if x == profile['nodata']:
            return -9999
        elif x == np.finfo(x).tiny:
            return 0
        else:
            return int(round(x))

    out_elev = [map(shortify, row) for row in elev]

    with open(args[0] + '.asc', 'a') as dst:
        np.savetxt(dst, np.array(out_elev),fmt="%s",delimiter=" ")

source.lontarget.lat例如:sourcetarget是由extraction process作为参数提供的节点。它们的坐标用于在提取期间查找each location处的数据。

请务必仔细阅读相关维基页面(已链接)。

  

随意交替打开Github问题   https://github.com/Project-OSRM/osrm-backend/issues与OSRM   的问题。