微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HERE Fleet Telematics API 未解决的问题

如何解决HERE Fleet Telematics API 未解决的问题

作为参考,一些相关的(不是重复的!)问题:

Fleet Telematics API fails to find route

Increasing search radius for way points in Here Maps Fleet Telematics API

How to increase search radius for a road link for a waypoint (Fleet Telematics API)

HERE Fleet Telematics API doesn't really optimize cost

首先,一些上下文。我们为在欧洲/北非运营的客户提供服务。 此处讨论的用例是计算具有不同可能目标的卡车路线,有时会获得成本优化的路线(包括或不包括通行费),有时会获得最快或(接近)最短的路线,或两者兼而有之 通常,我们使用邮政编码/城市位置,而不是完整地址 最初,您必须使用多个不同的 API 来实现这一点,现在它或多或少地融合到 Fleet Telematics API 中。

那么,让我们深入了解文档:https://developer.here.com/documentation/fleet-telematics/api-reference.html

我们欢迎这个介绍:

HERE Fleet Telematics API 是一组 REST 资源,用于高级 在 HERE 位置服务之上的车队远程信息处理。它取代 服务 CLE、CRE、GFE、GFE-onMaps、PDE、RME、TCE 和 WSE。

好的,FT-API 确实统治了所有这些。我们来对地方了。

有很多(LOTS)个不同的参数可供您使用,而且效果很好,只是如果您将路线与卡车路线的竞争服务的路线进行比较,优化通常不是很好,接近于坏的。 然后,在某个时候,您会在开发人员指南的“通行费和成本优化”一章末尾看到这对奇怪的段落: https://developer.here.com/documentation/fleet-telematics/dev_guide/topics/calculation-considerations.html

选择通行费路由引擎 指定参数 &rollup 和/或 &cost_optimize 以获取路由 API 计算出的路由。路由 API 本身不进行成本/通行费优化,但提供最快和最短的路线以及更多具有不同选项的路线。 Fleet Telematics API 然后选择具有最小司机成本、车辆成本和通行费总和的路线。因此,通常会找到(收费)成本优化的路线,但并不总是能保证。

指定参数 &rollups 而不是 &rollup,并且不指定 &cost_optimize,以获取在 Fleet Telematics API 中计算的路线。 Fleet Telematics API 会忽略 mode 参数中的最短/最快。相反,它最小化了 driver_cost、vehicle_cost 和通行费的总和。这产生了完全成本优化的路线(在距离航路点很远时,路线不考虑最小道路的限制)。但不支持所有 Routing API 参数并且可以显示更高的响应时间。

忽略解锁​​全脂优化引擎的hackish方式(为什么不是一个真正的参数?),最后的短语是非常不祥的。尽管如此,在用尽路由 API 的所有选项之后还是很想尝试改进结果。 结果证明结果是值得的,但有很多警告......

我们正在进入未知领域的第一个迹象是,我们被告知它“不支持所有路由 API”,但我们需要去发现哪些(试错?)。 更棘手的是某些参数可能会导致问题:

让我们从 HARELBEKE(比利时)到 LA MEZIERE(法国)

https://fleet.ls.hereapi.com/2/calculateroute.json?apiKey=...&driver_cost=0&vehicle_cost=2&ignoreWaypointVehicleRestriction=20000;1;all;0&waypoint0=geo!50.85677,3.31078;2000&waypoint1=geo!48.21925,-1.7546;2000&mode=fastest;truck;traffic:disabled;motorway:0&legAttributes=shape,-links,-maneuvers&limitedWeight=44&trailersCount=1&excludecountries=CHE,AND&tollVehicleType=3&detail=1&mapMatchTolerance=2000&routelegattributes=li&routeattributes=gr&linkattributes=none,rt,fl&rollups=none,total,country

=>“无法到达航点 1”

事实证明,仅将参数“driver_cost=0”更改为其他值就足以使其工作。是的,“driver_cost=0”适用于数千条其他路线,但不适用于这条路线。为什么?

另一组奇怪的情况是有些路线选择很难解释

让我们从波尔多(法国)前往巴黎(法国)

Bordeaux to Paris

成功了!最佳路线,10/10

然后从巴黎返回波尔多(当然参数相同)

https://fleet.ls.hereapi.com/2/calculateroute.json?apiKey=...&driver_cost=20&vehicle_cost=2&ignoreWaypointVehicleRestriction=20000;1;all;0&waypoint0=geo!48.85717,2.3414;2000&waypoint1=geo!44.8367,-0.58107;2000&mode=fastest;truck;traffic:disabled;boatFerry:-2;railFerry:-2;motorway:0&legAttributes=shape,country

Paris to Bordeaux

令人失望的结果,因为你只需要走同样的路线回去,4/10

继续解决我们的第一个解决的大问题:船

文档指出,对于卡车,您只能进行成本优化。要走更短或更快的路线,您必须调整 vehicle_costdriver_cost 的值。 一个小问题是你失去了“真实”成本计算,但你自己计算很容易,所以没什么大不了的。主要问题是,如果您将车辆成本提高到某个阈值以上,大约 4 欧元/公里,并且您靠近海岸,则引擎想要乘坐渡轮。

例如:ERMELO,3851,NLD => CHATRES,77610,FRA

Live request here

enter image description here

当然,去伦敦,好主意。 2/10 包括 1 点创意加分

此路线的解决方案是添加 &tollPass=transponder 参数,以便能够在比利时的高速公路上使用收费公路(超过 3.5 吨的卡车)。这仅适用于 FT-API,Route-API 不需要它(见图)。因此,如果您在欧洲进行卡车路线规划,则该参数实际上是强制性的。但是对于下一条路线,(对我而言)没有已知的解决方案,您无法避免乘船旅行。

CESTAS,33610,FRA => GIUSSANO,20833,ITA

Live request here

Lots of sea

五次海上旅行!这不是卡车路线,这是旅游游轮! 3/10

不幸的是,参数 VehicleCostOnFerry= 并没有改变路线 - 它计算了额外的成本,但仍然适用于船 mode 参数中的最后一个镜头:boatFerry:-2;railFerry:-2,但不是 - 仍然更喜欢船 只有选项boatFerry:-3;railFerry:-3,但是当你不得不时,你不能过海

第二个未解决的大问题:航点半径 前提是卡车并不总是可以到达确切的航路点,主要是因为您并不总是拥有真实地址,而是在城市或邮政编码中的认位置。 要在 Route API 中解决这个问题,您可以在航点周围定义一个半径以使其更加模糊。 FT-API 会忽略该参数。 请参阅该问题的示例:Increasing search radius for way points in Here Maps Fleet Telematics API 建议的解决方法是设置 routeMatch=1 参数。起初,它似乎有效,但该选项隐藏了一些令人讨厌的惊喜。 第一个惊喜:没有错误,但引擎下降了一个或多个点,并显示警告“忽略跟踪点 X/Y,因为它离邻居很远” 幸运的是,有一个解决方案:ignoreWaypointsFarFromNeighbors=false

第二个惊喜:没有错误,但你从一个位置传送到另一个位置

BIGANOS,FRA => KOLDING,DNK

Live request here

警告是: "code": 1021,"message": "忽略与主路由距离过大的跟踪点" "code": 1005,"message": "Tracepoint #1 (55.48637 / 9.47336) 移动了 1676199 米到路线上"

那时,我只是放弃了 routeMatch=1,因为我找不到可以避免这种情况的参数,也没有解决方法

总而言之,目前我们认使用 FT-API(因为它可以找到更好的路由),但有两个限制:

  • 不可能完全优化距离,因为 Vehicle_cost 参数存在实际限制
  • 当 FT-API 由于无法到达的航点而失败时,我们必须退回到 Route-API 引擎

有没有人有解决这些遗留问题的解决方案?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。