p4b*_*och 4 lua openstreetmap osrm
在这个Mapbox博客文章中,Lauren Budorick分享了他们如何使用OSRM开发路由引擎,该OSRM使用高程数据为骑行者提供更好的路线...... 令人惊叹!
我还想在插入外部(用户生成的)数据时探索OSRM路由的潜力,但我仍然很难掌握OSRM配置文件的工作原理.我认为我得到了一个主要的想法,即每一种方式(或节点?)都通过管道传输到一些功能中,而这些功能一直都很好地分析了这条路是多么好.
但就是这样,我脑子里有很多缺失的部分,就像Lauren在她的个人资料中使用的每个功能一样.如果有人能指出一些关于如何运作的更详细的信息,你会让我的下周更加容易:)
另外,在Lauren的帖子中,source_function她在里面加载了一个./srtm_bayarea.asc文件.那个.asc文件是什么样的?如何生成一个文件,例如,存储在pgsql数据库中的数据?我们可以使用其他格式,比如GeoJSON吗?
然后,当segment_function她使用像source.lon和那样的东西时target.lat,那些是指存储在asc文件中的原始数据吗?或者该文件是否被处理成一些标准,以映射所有内容以符合它?
正如你所看到的,我是一个完整的路由新手,也许是一般的GIS,但我想更多地了解围绕OSRM生态系统的这些标准和工具.你能和我分享一些小技巧吗?
小智 5
我认为我得到了一个主要的想法,即每一种方式(或节点?)都通过管道传输到一些功能中,而这些功能一直都很好地分析了这条路是多么好.
对,每个节点和每个节点在从OSM转储中读取时进行评分,以确定节点的可通过性和方式的速度(用作评分启发式).
可以在此处找到数据格式的基本描述.在读取时,ArcInfo ASCII网格中立即可用的数据包括SRTM数据.目前,纯文本ASCII网格是唯一受支持的格式.有一些很棒的Python工具可供GIS开发人员使用,可以帮助将其他数据类型转换为ASCII网格 - 例如,请查看rasterio.这是一个非常简单的python脚本示例,用于将NED IMG转换为ASCII网格:
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=" ")
Run Code Online (Sandbox Code Playgroud)
source.lon和target.lat例如:source和target如由参数提供节点提取处理.它们的坐标用于在提取期间查找每个位置的数据.
请务必仔细阅读相关的Wiki页面(已链接).
请随意在https://github.com/Project-OSRM/osrm-backend/issues中使用OSRM问题打开Github 问题.