用度量计算提高优步地图的质量

0
用度量计算提高优步地图的质量

我们之前突出了一些演示在我们的第二届年度优步科技日发布。在这篇文章中,高级软件工程师、Uber Tech Day的主持人Ines Viskic讨论了我们如何通过质量度量来确保地图的准确性。



从表面上看,优步的拼车技术似乎很简单:用户从应用程序中请求搭车,司机就会把他们送到目的地。然而,在幕后,一个由数千个服务和tb数据组成的巨大基础设施支持平台上的每一次旅行。

在这个基础设施的核心,地图数据和服务都支持为我们的业务提供最基本的功能。这些功能包括查找位置和地址,根据地理位置接近程度匹配乘客和司机,向司机和乘客显示他们的预计到达时间(ETA),并引导他们到达目的地。虽然地图数据和服务最初是为了支持拼车而发展起来的,但我们继续在这个基础上开发新产品,比如超级吃,超级运费,跳车

地图实际上是一个复杂的数据结构,而不是人们在看Uber应用时看到的简单的二维表示。在计算术语中,我们需要定义地图中每个地理部分的大小,以及决定在地图上包含/显示哪些对象。就我们的目的而言,道路和十字路口及其属性是最明显的包含。另一方面,轮廓线等特征等高的连接点与我们当前的用例无关,因此我们不将它们包含在我们的地图中。

随着我们周围的世界发生变化,地图也应该发生变化。例如,对十字路口左转的新限制将改变我们发给司机的路线;由于施工而增加的停车标志或临时道路封闭会影响我们计算的ETA时间;拼车服务面临的一个独特挑战是确定地图上允许的上落客地点。

在Uber,我们的地图数据和地图服务的质量对于提供出色的用户体验是无价的。为了做到这一点,地图必须尽可能准确地反映地理现实。每天数百万次旅行产生的地理空间数据使这成为可能,帮助我们完善和更新我们的地图,以达到最高的质量。在本文中,我们将定义我们的地图区域,并展示如何计算地图质量指标。

Uber如何定义地图区域

在我们计算和报告地图质量指标之前,我们首先需要定义我们的地图区域。例如,我们可能会对北美的地图质量感兴趣,或者加利福尼亚州,或者圣克拉拉县,甚至只是旧金山市最繁华(和交通最繁忙)的地区。

在Uber在一个新的领域开展业务之前,我们会定义一个新的区域,并将其纳入我们的地图技术堆栈中。在这个映射区域内,我们定义分别为A、B、AB、C级的分区如下:

一年级:优步区域的一个分区域,包括城市中心和通勤区,约占优步预期流量的90%。考虑到这一点,确保A级地图区域的最高质量是至关重要的。

乙级:优步区域的一个分区域,包括人口较少或优步用户较少的农村和郊区。

阿瑟:年级A级和B级分区的联合。

等级C:一组高速公路走廊连接不同的优步领地。

Uber地图模式

地图是根据其用途直观地定义的。地图为我们指明空间方向,让我们知道自己在世界上的什么地方。有了地图,我们还可以从我们所在的地方导航到我们想去的地方。

图1 -用度量计算提高Uber地图的质量
图1:Uber地图模型是一个由特征和属性组成的数据结构。

从确定地图质量的角度来看,我们将地图定义为地图特征的集合,从人工场所(如路段、路口和建筑物)到自然特征(如山脉、湖泊和海洋)。此外,对于特定于uber的用例,我们将接入点包括在内,它为特定地址点指定允许的或首选的取货地点,作为地图功能。例如,旧金山国际机场的接入点包括一组航站楼、登机口和由机场确定的集合点。

最后,每个映射特性都有一组完全描述它的属性。例如,道路段的属性包括几何形状、长度、名称、道路类别(本地道路?公路?)和使用量(道路?自行车道?)

地图特征和属性形成一个数据结构,我们称之为Uber地图模型(UMM)。我们可以将UMM可视化为地图特征层,它们共同创建一个地图,如图1所示。

确定地图质量

地图质量对于不同的地图用户意味着不同的东西。例如,成像工具等谷歌地球Esri的ArcGIS地球可能会关注地图标签的准确性或地图制图的美学,即每个地图瓷砖的外观。对于Uber最基本的用例,即拼车,地图质量指标必须回答以下问题:

  • 我们有足够的道路吗?我们对它们的分类正确吗?
  • 我们在正确的地点接送乘客了吗?
  • 我们是否引导司机在最佳路线上行驶?
  • 我们有人们旅行的地址和地点吗?
  • 我们的道路名称准确吗?它们是否反映了当地的习惯用法?

我们在地图中使用的一整套指标数量太多,无法一一列举,但我们可以将它们分为简单的和比较的覆盖率指标。简单的指标包括道路、唯一路线数量、路标数量、转弯限制和每条道路的车道数量。我们通过简单地分析地图数据作为单一输入来计算这些指标。我们考虑的一组更复杂的指标,比较覆盖率,使用两个输入:正在处理的地图数据质量和参考地图数据。

通过使用强大的数据处理框架,可以自动计算简单和比较指标。然而,有些指标更难甚至不可能实现自动化:语音导航提示的音调和时间是否正确和用户友好?地图贴图是否以美观的方式显示?街道标签是否清晰易读?为了得到这样的答案/指标,我们进行了地图质量评估驱动,为此我们以多项选择题的形式创建了评估调查。然后,这些调查的结果被处理并聚合为度量。

不管它们的分类是什么,所有的度量计算都必须是准确的,执行速度相当快,可靠地生成输出,并且没有问题地扩展。缩放尤其重要,因为某个区域的度量计算的致命错误不能影响其他区域的度量计算。

优步地图质量计算系统的要求

  • 准确性:结果必须准确
  • 可靠性:结果必须是可重复和可访问的
  • 可伸缩性:支持单一地区和世界的度量计算
  • 鲁棒性:一个映射区域的度量计算失败不能影响其他区域的计算

确保地图质量

Uber使用来自各种第三方地图供应商的地图数据,目的是为我们的用户提供良好的Uber体验。来为了确保这些地图的高质量,我们利用一个迭代的过程来分析地图数据,识别地图缺陷,并修复它们。这将创建一个改善地图的正反馈循环。以下是一些例子:

  1. 跟踪报道:一个比较覆盖率度量,跟踪覆盖率识别缺失的路段或不正确的道路几何形状.计算使用两个输入:测试中的地图数据和特定时间段内所有优步乘坐记录的GPS历史轨迹。我们把这些GPS追踪覆盖到地图上,与道路段进行比较和匹配。如果我们发现GPS追踪的地方没有显示道路,我们可以推断我们的地图缺少了一个路段,并采取措施来弥补这一缺陷。
图2 -用度量计算提高Uber地图的质量
图2:在这张地图上,与道路匹配的GPS轨迹显示为蓝色,而与道路不匹配的GPS轨迹显示为红色。

  1. 路由的评估:地图质量的另一个关键指标是,评估路线可以让我们在地图上识别错误的转向限制和道路方向。在这里,我们将导航算法为司机建议的路线与他们选择的实际路线进行比较。如果建议路线和实际路线之间存在持续的差异,我们就会调查潜在的地图缺陷。下面的图3显示了建议路由和实际路由之间存在很大差异的一个例子。我们随后的比较发现,道路段的转弯限制模型不正确,导致不可能使用建议的路线。
图3 -用度量计算提高Uber地图的质量
图3:在这个例子中,我们的地图显示了一条路线,但是司机,响应转向限制,必须采取不同的路线。

  1. 首选访问(拾取)点精度:上车点是骑手体验的一个极为重要的指标,尤其是在机场和体育场等大型场馆。对于这个度量,我们计算一个地址或地点的距离,如图4中的地图引脚所示,从司机使用的所有实际的接送点开始。然后将最近的实际位置设置为所述位置引脚的首选访问点。当骑手请求地图引脚指示的位置时,地图会引导司机到首选的访问点。我们不断计算这一指标与最新的实际取货地点,以确保建议的首选接入点的新鲜度和准确性。
图4 -用度量计算提高Uber地图的质量
图4:细化接入点由三个主要步骤组成:确定司机为一个地点或地址所使用的实际上下车地点(左),计算这些地点到该地点或地址的距离(中),然后根据最短距离(右)设置首选接入点。

计算质量地图指标

优步的度量计算系统从地图数据中生成度量(如上面描述的),即,一组以UMM格式描述的地图特征。每个地图数据集及其派生的指标都与特定的地图区域相关联。

度量计算的第一步是将映射数据划分到S2细胞通过给每个映射特征分配S2单元ID。S2细胞地理区域,每个区域用一个唯一的数字标识符表示.因此,例如,地图特征,如道路段、建筑物和山脉,每个都将被分配S2单元格的ID,表示它们被发现的地理区域。

接下来,我们将划分到S2单元的映射数据输入到度量计算系统中,该系统独立地(并行地)处理每个S2单元分区以生成我们的度量。换句话说,anS2单元及其相关的映射特征成为度量计算的基本单元。最后,我们将来自特定区域中每个S2单元格的度量值进行聚合。如上所述,这些区域根据其内容和用途被分为A、B、AB和C级。这种方法如下面的图5所示:

图5 -用度量计算提高Uber地图的质量
图5:我们将地理区域定义为S2单元格,并使用这些单元格构建数据集,我们可以处理这些数据集来提高地图质量。

我们实现了我们的度量计算系统Apache火花,一个用于大规模数据处理的通用计算框架,具有单个驱动节点和多个执行节点,读取输入并将输出存储到分布式存储系统。

图6 -用度量计算提高Uber地图的质量
图6:使用地图数据和地理区域作为输入,我们的度量计算系统将数据划分到S2单元格中,然后使用这些单元格计算其度量。

我们的指标计算系统,如图6所示,使用两个输入:地图数据和区域。驱动节点指导控制流并将映射数据分发给执行节点,首先将数据划分到S2单元,然后为每个S2单元单元计算度量。原始的基于S2单元格的度量将被发送回驱动节点,驱动节点将它们聚合为区域度量并存储在HDFS,我们的分布式文件系统,然后,在卡珊德拉,我们的分布式数据库。然后对指标进行后处理,以便在MapsDash中显示和分析,这是一个内部开发的中央仪表板,用于查看提供对地图质量的直观、有价值的见解。

把它们放在一起

下面的图7显示了整个地图质量系统,包括(1)指标计算系统,(2)指标显示,(3)根源分析工具。这个系统创建了一个正反馈循环,旨在通过确保我们的指标的准确性来提高地图质量。

图7 -用度量计算提高Uber地图的质量
图7:随着道路和其他地图功能的变化,我们的指标计算系统会不断更新我们的指标,最终为骑手和司机应用程序提供更好的用户体验。

我们不断地迭代我们的地图质量度量,显示它们来检测低等级的度量,并识别导致它们的地图缺陷。随着时间的推移,该系统已经改善了地图质量指标,使我们在旧金山、纽约和世界各地其他城市的市场获得了更好的地图。

下一个步骤

优步的业务正在持续增长,无论是在规模上,还是在我们为用户提供的功能的数量和质量上。同样,我们的地图质量团队不断开发新的地图质量指标和工具,用于诊断和修复地图缺陷。未来,我们将继续与我们的数据科学团队密切合作,以确定路由和导航中与数据质量相关的新指标。此外,我们计划开发新的诊断工具,以确定这些度量背后的映射缺陷的根本原因。识别缺失的道路和不正确的转弯限制对实现最佳的地图质量尤其重要。随着这些努力,我们正在不断改进我们的地图编辑工具,以修复这些缺陷。随着时间的推移,这些更新将带来更好的地图,从而优化全球用户的旅行体验。

了解更多关于我们的地图数据提供者

如果您有兴趣为地图质量度量和构建创新的、基于地图的应用程序做出贡献,请考虑申请一个角色在我们的团队。

订阅我们的通讯以跟上优步工程的最新创新。

评论