目录
HTTPAPI.....................................................................................................................2
1.一般选项.....................................................................................................................2
1.1请求:....................................................................................................................2
1.2响应........................................................................................................................3
2.服务.............................................................................................................................4
2.1Nearestrvice.......................................................................................................4
2.2Routervice..........................................................................................................6
2.3Tablervice..........................................................................................................8
2.4Matchrvice.........................................................................................................9
2.5Triprvice...........................................................................................................10
2.6Tilervice...........................................................................................................12
3.结果对象...............................................................................................................13
3.1路径对象..............................................................................................................13
3.2RouteLeg对象.....................................................................................................15
3.3注释对象..............................................................................................................16
3.4路径步骤对象......................................................................................................17
3.5路径调动对象......................................................................................................18
3.6车道对象..............................................................................................................20
3.7交点对象..............................................................................................................21
3.8航点对象..............................................................................................................22
libosrmC++API........................................................................................................23
1.介绍.........................................................................................................................23
2.重要的接口对象.....................................................................................................23
3.例子.........................................................................................................................24
4.工作流程.................................................................................................................24
HTTPAPI
1.一般选项
所有OSRMHTTP请求使用通用结构。
以下语法适用于所有服务,但注意事项除外。
1.1请求:
参数描述
服务以下之一:route,nearest,table,match,trip,tile
版本协议实现通过rvicev1适用于所有OSRM5.x版本
配置文件运输方式,由用osrm-extract准备数据的Lua配置文件静态确定。如果使用一
个提供的配置文件,通常是汽车,自行车或步行。
坐标格式如下
{longitude},{latitude};{longitude},{latitude}[;{longitude},{latitude}...]
或者polyline({polyline}).
格式目前只支持json。此参数是可选的,默认为json。
传递任何选项为一个值是可选的。折线在默认情况下遵循Google的折线格式,精度为5,
可以使用此包生成。
要将参数传递给每个位置,一些选项支持数组比如编码:
请求选项:
选项值描述
bearings
{bearing};{bearing}[;{bearing}...]将搜索限制为与正北方向顺时
针度数
radius
{radius};{radius}[;{radius}...]将搜索限制为给定半径(以米
为单位)。
generate_hints
true(default),fal为可以在后续请求中使用的响
应添加提示,请参阅hints参数。
hints
{hint};{hint}[;{hint}...]提示从先前请求的
元素遵循以下格式:
元素值
bearing
{value},{range}integer0..360,integer0..180
radius
double>=0orunlimited(default)
hint
Ba64string
{option}={element};{element}[;{element}...]
元素数量必须完全匹配位置数。如果你不想传递一个值,而是使用默认值,你可以传递一
个空的元素。
示例:第二个位置使用选项的默认值:
{option}={element};;{element}
1.2响应
每个响应对象都有一个包含以下字符串的代码属性或服务相关代码:
类型描述
Ok
请求可以按预期处理。
InvalidUrl网址字串无效。
InvalidService服务名称无效
InvalidVersion找不到版本
InvalidOptions选项无效。
InvalidQuery查询字符串语法错误
InvalidValue成功解析查询参数无效。
NoSegment所提供的输入坐标之一不能捕捉到街道段。
TooBig请求大小违反服务特定请求大小限制。
消息是可选的可读出的错误消息。所有其他状态类型都取决于服务。
如果出现错误,HTTP状态代码将为400.否则,HTTP状态代码将为200,代码将为“Ok”。
2.服务
2.1Nearestrvice
将坐标点击到街道网络并返回最近的n个匹配项。
其中坐标仅支持单个{longitude},{latitude}条目。
除了常规选项,此服务支持以下选项:
选项值描述
numberinteger>=1(default1)应该返回的最近段数。
响应:
如果请求成功则代码OK否则查看服务依赖和一般状态代码。
航点对象的航点数组按照输入坐标的距离排序。每个对象至少具有以下附加属性:
距离:与提供的输入坐标的距离(以米为单位)。
2.2Routervice
以提供的顺序找到坐标之间最快的路线。
除了常规选项,此服务支持以下选项:
OptionValuesDescription
alternatives
true,fal(default)
搜索替代路线并返回。
steps
true,fal(default)
为每个路线返回路线步骤
annotations
true,fal(default),nodes,distance,
duration,datasources,weight,speed
返回沿路线几何的每个坐标的附加元
数据。
geometries
polyline(default),polyline6,geojson
返回的路线几何格式(影响概述和每
步)
overview
simplified(default),full,fal
添加概述几何完整,根据可能显示的最
高缩放级别进行简化,或根本不显示。
continue_straight
default(default),true,fal
迫使路线在路标上保持直线约束,即使
速度更快,你会转动。默认值取决于
配置文件。
*请注意,即使要求替代路线,也不能保证结果。
响应:
如果请求成功则代码OK否则查看服务依赖和一般状态代码。
航点:航点对象的数组,按顺序表示所有航路点:
路径:一系列路径对象,按降序推荐排名排序。
万一出现错误,除了一般的以外,还支持以下代码:
类型描述
NoRoute
未找到路径
所有其他属性可能未定义。
2.3Tablervice
计算所有提供的坐标对之间最快路线的持续时间。
坐标(Coordinates)
除了常规选项,此服务支持以下选项:
OptionValuesDescription
sources
{index};{index}[;{index}...]orall(default)
使用给定索引的位置作为源。
destinations
{index};{index}[;{index}...]orall(default)
使用给定索引的位置作为目的地。
与其他阵列编码选项不同,源和目的地的长度可以小于或等于输入位置的数量;
例如:
sources=0;5;7&destinations=5;1;4;2;3;6
元素值
index
0<=integer<#locations
响应:
1.如果请求成功则代码OK否则查看服务依赖和一般状态代码。
2.持续数组阵列,以行主顺序存储矩阵。持续时间[i][j]给出从第i个航点到第j个航点的行
程时间。值以秒为单位给出。
3.源阵列的航点对象按顺序描述所有源。
4.目的地阵列的Waypoint对象按顺序描述所有目的。
万一出现错误,除了一般的以外,还支持以下代码:
类型描述
NoTable
未找到路径
2.4Matchrvice
地图匹配“匹配/捕捉”给定GPS以最合理的方式指向道路网络。请注意,请求可能会导
致多个子跟踪。如果找不到完整的匹配,时间戳(>60s)或不可能的转换中的大跳跃导致
跟踪分割。该算法可能无法匹配所有点。如果不能匹配成功,则会将异常值删除。
除了常规选项,此服务支持以下选项:
选项值描述
steps
true,fal(default)
返回每个路线的路线步骤
geometries
polyline(default),polyline6,geojson
返回的路线几何格式(影响概述和每步)
annotations
true,fal(default),nodes,distance,du
ration,datasources,weight,speed
返回沿路线几何的每个坐标的附加元数据。
overview
simplified(default),full,fal
添加概述几何完整,根据可能显示的最高缩
放级别进行简化,或根本不显示。
timestamps
{timestamp};{timestamp}[;{timestamp
}...]
自UNIX时代以来,输入位置的时间戳(秒)。
时间戳需要单调增加。
radius
{radius};{radius}[;{radius}...]
用于地图匹配的GPS精度的标准偏差。如
果适用,使用GPS精度。
参数值
timestamp
integercondssinceUNIXepoch
参数值
radius
double>=0(default5m)
每个点的半径应该是以真实位置为单位测量的位置的标准误差。在Android上使用
uracy()或在iOS上使用ntalAccuracy。该值用于确定哪
些点应被视为候选(较大的半径表示更多的候选)以及每个候选的可能性(较大的半径意味
着远程候选的惩罚较少)。选择搜索区域,以便正确的候选应该被视为99.9%的时间(有关
更多详细信息,请参阅此提示)。
响应:
1.如果请求成功则代码OK否则查看服务依赖和一般状态代码。
2.跟踪点:按顺序表示轨迹的所有点的航点对象数组。如果跟踪点被地图匹配所排除,因
为它是一个异常值,该条目将为空。每个航点对象都具有以下附加属性:
2.1matchings_index:与匹配的子跟踪匹配的路径对象的索引。
2.2waypoint_index:匹配路线内的航路点的索引。
3.匹配:类似于跟踪的路径对象数组。每个路径对象都具有以下附加属性:可信度。匹配
的可信度,浮点值在0和1之间。1表示可信度非常高。
4.万一出现错误,除了一般的以外,还支持以下代码:
类型描述
NoMatch
找不到匹配。
所有其他属性可能未定义。
2.5Triprvice
旅行插件使用贪婪启发式(最远插入算法)为10个或更多个航点解决旅行推销员问题,并
对少于10个航点使用BF算法,返回的路径不一定是最快的路径。由于TSP是NP-hard,
它只返回一个近似值。请注意,必须连接所有输入坐标才能使行程服务工作。
除了常规选项,此服务支持以下选项:
OptionValuesDescription
OptionValuesDescription
roundtrip
true(default),fal
返回路径是往返路径
source
any(default),first
返回路线从任何一个或第一个坐标开始
destination
any(default),last
返回路线以任何一个或最后一个坐标结束
steps
true,fal(default)
返回每次行程路线说明
annotations
true,fal(default),nodes,distance,
duration,datasources,weight,speed
返回沿路线几何的每个坐标的附加元数据
geometries
polyline(default),polyline6,geojson
返回的路线几何格式(影响概述和每步)
overview
simplified(default),full,fal
添加概述几何完整,根据可能显示的最高缩放
级别进行简化,或根本不显示
确定开始和结束点
可以明确地设定行程的开始或结束坐标。当source设置为first时,第一个坐标用作输出中
行程的起始坐标。当目的地设置为持续时,最后一个坐标将用作返回输出中旅程的目的地。
如果您指定任何一个,任何一个坐标都可以用作输出中的第一个或最后一个坐标。
但是,如果source=any&destination=任何返回的往返行程仍将默认从第一个输入坐标开始。
目前,并不支持往返,始发地和目的地的所有组合。现在,可以进行以下组合:
往返始发地目的地支持
truefirstlastyes
truefirstanyyes
trueanylastyes
往返始发地目的地支持
trueanyanyyes
falfirstlastyes
falfirstanyno
falanylastno
falanyanyno
1.代码:如果请求成功则确定否则看到服务依赖和一般状态代码。
2.航点:以输入顺序表示所有航点的Waypoint对象数组。每个Waypoint对象都具有以下附
加属性:
2.1trips_index:该点匹配的次级跳闸索引。
2.2waypoint_index:行程中的点索引。
3.行程:组合轨迹的Route对象数组。
万一出现错误,除了一般的以外,还支持以下代码:
类型描述
NoTrips
找不到行程,因为输入坐标未连接。
NotImplemented
不支持的请求。
所有其他属性可能未定义。
2.6Tilervice
此服务生成可以使用具有矢量图块功能的滑动图查看器来查看的Mapbox向量瓦片。瓦片
包含可用于检查路线图的道路几何和元数据。瓦片直接从内存中的数据生成,因此与实际
路径结果同步,并且让您检查哪些道路是实际上可循的,以及它们应用了哪些权重。
x,y和缩放值与/wiki/Slippy_map_tilenames中所述的相同,并
且由矢量图块查看器(如MapboxGLJS)支持。
响应对象是带有Content-Typeofapplication/x-protobuf的二进制编码的blob或404错误。请
注意,OSRM是硬编码的,只能从缩放级别12和更高级别返回图块(避免意外返回极大的
矢量图块)。
矢量瓷砖包含两层:
速度层:
属性类型描述
speedinteger
该路段的速度,公里/小时
is_smallboolean
该段是否属于小型(<1000节点)强连接组件
datasourcestring
速度值的来源(通常是lua配置文件,除非您使用流量更新功能,在这种情况
下,它包含提供此段速度值的文件名的句柄
durationfloat
该段需要多长时间才能遍历
namestring
该段所属的道路名称
转换层:
属性类型描述
bearing_ininteger
接近十字路口的绝对方位。-180到+180,0
=北,90=东
turn_angleinteger
相对于bearing_in的转弯角度。-180到
+180,0=直线前进,90=右边90度
costfloat
转过来的秒数。可能是负的,这取决于数据
模型的构建方式(someturnsgeta"bonus")。
3.结果对象
3.1路径对象
表示通过(可能多个)航点的路线。
属性:
1.距离:路线行驶的距离,以浮点数米单位。
2.持续时间:估计的旅行时间,以浮点秒数为单位。
3.几何:路线值的整体几何取决于概览参数,格式取决于几何参数。有关参数文档,请参
阅路径步骤的几何属性。
4.权重:计算的路线权重。
5.权重名:提取阶段中使用的权重的名称。
概述描述
simplifiedGeometryissimplifiedaccordingtothehighestzoomlevelitcanstillbedisplayed
onfull.
fullGeometryisnotsimplified.
falGeometryisnotadded.
6.路程:给定路点之间的路程,RouteLeg对象的数组。
三个输入坐标,geometry=geojson,steps=fal:
3.2RouteLeg对象
代表两个航路点之间的路线。
属性
1.距离:这条路线行驶的距离,以浮点数米为单位。
2.持续时间:估计的旅行时间,以秒数为单位。
3.重量:计算路线腿重量。
4.摘要:作为字符串的路由摘要。取决于步骤参数:
步骤
true两条主要道路的名称。路径太短,可以为空。
fal空串。
5.步骤:取决于步骤参数:
步骤
true描述了转弯指令的路径步骤对象数组
fal空数组
6.注释:沿路线几何的每个坐标的附加细节:
注解
true包含节点ID,持续时间距离的注释对象
fal权重未定义
使用steps=fal和annotations=true:
3.3注释对象
对整个路段的注释对每个段或节点的细粒度信息进行注释。
属性
1.距离:每对坐标之间的距离,以米为单位
2.持续时间:每对坐标之间的持续时间,以秒为单位
3.数据源:数据源的索引,用于每对坐标之间的速度。0是默认配置文件,其他值通过
--gment-speed-file提供给osrm-contract
4.节点:沿着路线的每个坐标的OSM节点ID,不包括第一个/最后一个用户提供的坐标
5.重量:每对坐标之间的权重
6.速度:方便字段,计算距离/持续时间,四舍五入到小数点后一位。
3.4路径步骤对象
一个步骤包括诸如转弯或合并之类的机动,然后是沿着单一方式行进到后续步骤的距离。
属性
1.距离:从调动到后续步距的距离,以浮点数米为单位。
2.持续时间:估计的旅行时间,以秒数为单位。
3.几何:路线段的未简化几何,具体取决于几何参数。
4.权重:步骤计算的权重。
几何
polylinepolyline,精度为5[纬度,经度]编码
polyline6polyline,精度为6[纬度,经度]编码
geojson
GeoJSONLineString
5.名称:旅行方式的名称。
6.参考:参考号或代码。可选地,如果参考数据可用于给定的路。
7.发音:发音提示的路名称。如果没有发音命中,将是未定义的。
8.目的地:路的目的地。如果没有目的地,将不确定。
9.模式:表示运输方式的字符串。
10.机动:表示机动的StepManeuver对象。
11.交点:沿段传递的交集对象列表,第一个属于StepManeuver
12.旋转名称:旋转的名称。可选,如果步骤是旋转和旋转名称可用。
13.旋转发音:旋转名称的发音提示。可选,如果步骤是旋转和旋转发音可用。
3.5路径调动对象
属性:
on:描述转弯位置的[经度,纬度]。
g_before:从正北向顺时针方向,直到机动之前的行进方向。范围0-359。
g_after:从真北向顺时针方向转动后立即行动。范围0-359。
4.类型A表示操纵类型的字符串。新的标识符可能会引入没有API更改类型未知的客户端
应该像转动类型一样处理,正确的修改器值的存在是被确保的。
type
Description
type
Description
turnabasicturnintodirectionofthemodifier
newname
noturnistaken/possible,dcantakeaturnitlf,
followingmodifier.
depart
indicatesthedepartureoftheleg
arrive
indicatesthedestinationoftheleg
mergemergeontoastreet(gonthehighwayfromaramp,themodifier
specifiesthedirectionofthemerge)
ramp
edbyon_rampandoff_ramp.
onramptakearamptoenterahighway(directiongivenmymodifier)
offramptakearamptoexitahighway(directiongivenmymodifier)
forktaketheleft/rightsideataforkdependingonmodifier
endofroadroadendsinaTinterctionturnindirectionofmodifier
ulane
goingstraightonaspecificlane
continueTurnindirectionofmodifiertostayonthesameroad
roundabouttraverroundabout,hasadditionalpropertyexitwithNRiftheroundaboutisleft.
Themodifierspecifiesthedirectionofenteringtheroundabout.
rotary
erysimilartoalargerversionofaroundabout,itdoesnot
offerrotary_nameand/orrotary_pronunciationparameters(locatedinthe
RouteStepobject)inadditiontotheexitparameter(locatedontheStepManeuver
object).
roundabout
turn
Describesaturnatasmallroundaboutthatshouldbetreatedasnormalturn.
einstruction:Attheroundabout
turnleft.
notification
mplethetravel
oadtakesaturnitlf,themodifierdescribesthedirection
请注意,即使有新的名称和通知说明,模式和名称可以在所有指令之间更改。他们只提供
一个后备,没有别的报告。
修饰符指示机动方向变化的可选字符串。
modifier
Description
uturn
indicatesreversalofdirection
sharpright
asharprightturn
modifier
Description
right
anormalturntotheright
slightright
aslightturntotheright
straight
norelevantchangeindirection
slightleft
aslightturntotheleft
left
anormalturntotheleft
sharpleft
asharpturntotheleft
没有修饰符的轮次列表限于:离开/到达。如果源/目标位置足够靠近离开/到达位置,则不
会给出修改器。
意义取决于类型属性。
type
Description
turnmodifierindicatesthechangeindirectionaccomplishedthroughtheturn
depart/arrivemodifierindicatesthepositionofdeparturepointandarrivalpointinrelationtothe
currentdirectionoftravel
exit一个可选整数,表示要退出的号码。回旋处/旋转属性存在该属性:要回转的出口的数
量。如果出口未定义,目的地在回旋处。
新的属性(可能取决于类型)可能会在未来引入API版本更改。
3.6车道对象
Lane代表相应回转位置处的转向车道。
属性
指示:指示转向车道的指示(例如在道路上的标记)。道路可以具有多个指示(例如,直接
和向左指向的箭头)。指示在数组中给出,每个数组包含以下类型之一。如果没有API版
本更改,可能会添加其他指示。
value
Description
none
Nodedicatedindicationisshown.
uturn
Anindicationsignalingthepossibilitytorever(endarrow).
sharpright
Anindicationindicatingasharprightturn(lybendarrow).
right
Anindicationindicatingarightturn(row).
value
Description
slightright
Anindicationindicatingaslightrightturn(lybendarrow).
straight
Nodedicatedindicationisshown(htarrow).
slightleft
Anindicationindicatingaslightleftturn(lybendarrow).
left
Anindicationindicatingaleftturn(row).
sharpleft
Anindicationindicatingasharpleftturn(lybendarrow).
有效性:一个布尔标志,指示该通道是否是当前操作中的有效选择有效:一个布尔标志,指示该通道
是否是当前操作中的有效选择。
3.7交点对象
交叉点给出了路径通过间隔的任何交叉路口的完整表示。对于每一步,第一个交点(交点[0])
对应于StepManeuver的位置。对于每个交叉路口列出进一步的交点,直到下一个转弯指令。
属性
1.位置:描述转弯位置的[经度,纬度]对。
2.方向:在交叉点可用的方向值列表(例如[0,90,180,270])。方向描述了交叉口处的所有可
用道路。值在0-359之间(0=真北)
3.条目:进入标志的列表,与方向的1:1关系对应。值为true表示可以在有效路线上输入
相应的道路。虚假表示转向相应道路将违反限制。
:索引进入方向/入口阵列。用于在转弯前计算方向。也就是说,从机动/通过交叉路口
之前,从真北向顺时针方向的行进方向。方向相对于交叉口给出。为了使方向在驱动方向上
转动,方向的转速必须为180度,不能用于离开机动。
:索引进入方向/入口阵列。用于在转弯后提取方向。也就是说,从机动/通过交叉路口
之后,从真正的北方向到行进方向的顺时针方向。该值不提供用于到达机动。
6.通道:表示交叉路口可用转弯车道的车道对象数组。如果交叉口没有车道信息,则车道属
性将不存在。
3.8航点对象
用于描述路线上的航点的对象。
属性
:坐标标记的街道名称
on:包含捕获坐标的[经度,纬度]对的位置数组
:提示片段的唯一内部标识符(短暂的,不是数据更新的常量)这可以用于后续请求,
以显着加快查询并连接多个服务。例如。您可以使用最近查询获取的提示值作为路由输入
的提示值。
libosrmC++API
1.介绍
OSRM可以通过C++用作库(libosrm),而不是通过HTTP接口和osrm-routed使用它。这
允许微调OSRM并且具有更少的开销。以下简要介绍如何在即将推出的v5发行版中使用
libosrm。
看看示例目录中的示例代码。以下是您曾经想知道的关于libosrm的所有信息,这是一个
简短的描述,它们是什么类型,以及在哪里可以找到文档:
2.重要的接口对象
Config-用于初始化OSRM实例,我们可以配置某些属性和约束。例如。存储配置
是基本路径,如,我们从中导出并加载。*辅助文件。这还
允许您设置限制,例如特定服务允许的最大位置数。
-这是具有路由和表功能的主要路由机器类型。您使用EngineConfig初始化它。它
为你做了一切繁重的工作。每个功能都有自己的参数,例如Route函数接受RouteParameters,
并且引用一个JSON结果,该结果将被填充。返回值为Status,表示错误或成功。
3.状态-这是一个类型包装错误或Ok分别指示错误或成功。
arameters-这是RoutingMachine函数期望的参数类型的示例。在这种情况下,表希
望自己的参数为TableParameters。您可以看到它包裹两个向量,源和目的地---这些是您的坐
标中的索引,用于表服务构建矩阵(空源或目的地意味着:使用它们)。如果你问自己坐在
哪里,你可以看到从BaParameters继承的TableParameters。
rameter-最重要的是保存坐标(以及您不需要基本使用的其他几个可选属性);特
定的参数类型继承自BaParameters以获取这些成员属性。这意味着您的TableParameters
类型具有坐标,源和目标成员属性(以及我们现在忽略的其他一些属性)。
6.坐标-这是围绕(经度,纬度)对的包装。我们真的不在乎(lon,lat)vs(lat,lon),但
是我们不希望你不小心把它们混合起来,所以纬度和经度都是整数的严格类型的包装器(固
定符号,如13423240)和浮点数(浮点符号如13.42324)。
7.其他服务的参数-这里是所有其他*其他路由机器服务所需的参数。
-这是一个类似JSON的和类型。路由机器服务功能采用引用JSON结果并相应填写。
它现在使用类似于t的mapbox/variant来实现。使用这种总和类型有两种方法:
提供访问者对每种类型的访问行为,或者使用get函数,以防您确定结构。JSON结构写在
HTTPAPI中。
3.例子
请参阅OSRM资源库中的示例文件夹。
4.工作流程
创建一个使用EngineConfig初始化的OSRM实例
调用OSRM对象上的服务功能,提供特定服务的*参数
检查返回码并使用JSON结果
本文发布于:2022-12-31 08:36:09,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/64363.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |