• 1.摘要
  • 2.技术
  • 3.地理编辑
  • 4.使用
  • 5.其他程序
  • 6.错误

Mapquest

MapQuest.com可即时生成地图和方向指示。在该网站面世后的第一个月内,就获得了一百万次的点击量,而它的迅速走红甚至还催生一个新的行业。网络地图应用程序现在已经有点泛滥成灾了,但是MapQuest仍然保持了其领先地位。

MapQuest.com如何确定“理想”路线?有哪些最常见的错误?为何会发生这些错误?在本文中,让我们来看看MapQuest.com背后的秘密,了解它如何提供地图和方向指示,以及其他一些不太为人所知的应用程序。

MapQuest绝对称得上是一个精彩绝伦的网络地图程序。它的主要功能包括:FindIt,可以找出特定区域内的商业设施;地图,根据地址、城市、邮编或经纬度创建一个位置地图;以及行车指引,可根据你提供的地址信息生成从A点到B点的行车路线。它可以生成两所住宅之间、两个城市之间或者从Vancouver的一个购物商场到佛罗里达某个机场的行车路线,并且估计出到达目的地所需的时间。

每天,MapQuest.com生成约500万张地图和大约700万条行车路线。MapQuest需要处理大量数据——它提供街道级别的美国、加拿大、法国、英国、德国、意大利、奥地利、比利时、丹麦、卢森堡、荷兰、瑞士和西班牙地图,并且提供世界其他国家/地区的城市级别的地图。这些地图的来源包括MapQuestand为其印刷出版物自行建立的绘图数据、来自其他数字地图公司(例如NavTech和TeleAtlas)的信息以及诸如美国邮政服务这样的政府机构编撰的数据库。MapQuest每三个月更新一次数据,根据各个地图来源提供的信息添加新数据或修正数据。

技术

  Mapquest

正如大多数人知道的,MapQuest的34台服务器在维吉尼亚州的AOL数据中心进行托管。这34台服务器负责处理即时创建地图和行车路线所需的所有数据以及相关计算工作。这些服务器的具体任务细分如下:

15台服务器生成地图

15台服务器处理地理编码工作(将地址与经纬度坐标进行匹配)

4台服务器创建行车路线

每台服务器都是一个自给自足的单元,存储的信息与所在任务组中其他服务器上存储的信息完全相同。如果你要求MapQuest生成行车路线,在行车路线最终显示在屏幕上时,会用到15台地理编码(我们将在下一节中讨论地理编码)服务器中的一台服务器,15台地图生成服务器中的一台服务器以及四台路线生成服务器中的一台服务器。 MapQuest的路线生成算法会查找两点之间所有可能的路线,并通过在行程的每个阶段权衡某些因素来挑选一条路线。其目标是选出一条最快、最直接的路线。它会考虑道路类型(例如,如果有高速公路或土路供选择,它会选择高速公路)、转弯的数量、道路流量和交叉口数量等因素。在为行程的每一步选择了理想路段之后,它会提供一条完整的行车路线。MapQuest将所有这些数据输入到自己的技术基础结构中,以便将数据转换为地图和方向指引并显示在MapQuest.com上。让我们看看在这个过程会涉及哪些工作。

当MapQuest路线生成服务器生成一条路线时,它还会计算出预计的行车时间。行车时间是根据各个路段的行车速度(通常是规定的速度上限)和通过各个交叉路口所需的时间计算得出的。MapQuest的市场营销主管Jim Greiner说,“根据转弯的类型(左转、右转或十字路口)以及交叉路口处的道路数量、类型和形状”来计算通过交叉口所需的时间。例如,软件假设从辅路左转弯进入主路要比从主路右转弯进入辅路花费更多的时间。

为了在地图上标出位置或提供从一点到另一点的行车路线,MapQuest必须首先将街道地址转换为经纬度坐标。这个过程称作地理编码。

                                             背景知识

MapQuest成立于20世纪60年代——从在加油站卖地图起家。在那时,它还不是“MapQuest”。起初,它是R.R. Donnelley & Sons的绘图部门,后来它从中独立出来并成立了GeoSystems Global Corporation(GGC)公司。GGC在1996年推出了MapQuest.com网站,并且推出之后的30天内获得了100万次的点击量。GGC在1999年将公司名称更改为MapQuest并成功上市,一年后,AOL收购了该公司。

地理编辑

  Mapquest

地理编码指的是将一对经度/纬度值指定给某个街道地址的过程。结果不一定很精确——地理编码过程会根据可用信息做出尽可能准确的判断。MapQuest使用多种方法之一来完成地理编码工作。

地址插值

这种方法可提供最精确的结果。在地址插值过程中,街道被分割成多个段,每段都有个关联的地址范围。MapQuest的软件基于给定地址应该位于的街道段,有根据地猜测给定地址的位置。例如,假如你要求MapQuest显示“加利福尼亚好莱坞榆树街25号”这个地址的位置。地理编码服务器会要求地图生成服务器提供与好莱坞的榆树街最匹配的数据。然后,它会找到街道一侧的地址范围为(1到49)而另一侧的地址范围为2到50的街道段。它假定25位于该街道奇数一侧的中间位置,并在与该位置对应的经纬度坐标上定位该地址。

如果它不能使用插值方法对某个地址进行地理编码——通常是因为数据库中没有收录该街道或者给定区域中具有多个同名街道——服务器会尝试使用交叉点匹配(如果地址位于美国之外)或邮编区域(如果地址位于美国国内)方法。

交叉点匹配

为了使用交叉点匹配方法对地址进行地理编码,MapQuest需要找到两个街道段:一个街道段位于MapQuest设想的该地址所在地的附近,而另一个街道段则与该街道段相交。然后,它假定该交叉点是与给定地址最接近的交叉点,并对其进行地理编码。在这种情况下,MapQuest会生成标出了该交叉点的地图,或者根据该交叉点来生成行车路线。

邮编区域