地图数据查询方法、装置、计算机设备及存储介质与流程

文档序号:19947129发布日期:2020-02-18 09:37阅读:202来源:国知局
地图数据查询方法、装置、计算机设备及存储介质与流程

本发明涉及计算机技术领域,特别是涉及一种地图数据查询方法、装置、计算机设备及存储介质。



背景技术:

随着科学技术的飞速发展,各种技术层出不穷,地图技术的应用越来越广泛。比如,在车辆行驶过程中,需要查询和使用地图数据,以便能够为车辆的行驶提供准确的信息。

传统方法中,需要将全量的地图数据存储在车辆终端中,在车辆行驶过程中,需要对全量的地图数据进行预加载,然后再从中查询相应的地图数据。显然,传统方法需要对系统内存资源消耗过大。



技术实现要素:

基于此,有必要针对传统方法需要对系统内存资源消耗过大的问题,提供一种地图数据查询方法、装置、计算机设备及存储介质。

根据本申请的一个方面,提供了一种地图数据查询方法,所述方法包括:

获取车辆的当前位置;

向云端数据库请求与所述当前位置匹配的地图数据;

在本地缓存所请求到的所述地图数据;

根据所述地图数据中的道路要素,在本地构建所述地图数据的空间索引;

当获取到应用层发送的查询请求时,通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据。

在一个实施例中,所述向云端数据库请求与所述当前位置匹配的地图数据包括:

获取预先规划的路径规划信息;

从所述路径规划信息中,确定距所述当前位置前预设范围内的待通行路径信息;

向所述云端数据库请求与所述待通行路径信息匹配的地图数据。

在一个实施例中,所述路径规划信息的规划步骤包括:

获取应用层发送的路径规划请求;

发送所述路径规划请求中携带的兴趣途径点至所述云端数据库;

在本地缓存云端数据库返回的针对所述兴趣途径点制定的路径规划信息;

向所述应用层返回所述路径规划信息。

在一个实施例中,所述方法还包括:

获取与上次缓存的地图数据所匹配的参照行驶位置;

确定所述当前位置和所述参照行驶位置之间的差异;

当所述差异大于预设差异阈值时,则执行所述向云端数据库请求与所述当前位置匹配的地图数据的步骤。

在一个实施例中,所述方法还包括:

将本次缓存的所述地图数据下发至各地图工具包中进行缓存;各所述地图工具包,分别对应于应用层中各应用设置于本地;

所述当获取到应用层发送的查询请求时,通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据包括:

当所述地图工具包接收对应的应用发送的查询请求时,从所述地图工具包缓存的地图数据中,查询所述查询请求所针对的地图数据。

在一个实施例中,所述方法还包括:

将本次缓存的所述地图数据与上次缓存的地图数据进行差异比对;

当本次缓存的所述地图数据与上次缓存的地图数据之间存在差异时,则执行所述将本次缓存的所述地图数据下发至各地图工具包中进行缓存的步骤。

在一个实施例中,所述将本次缓存的所述地图数据下发至各地图工具包中进行缓存包括:

下发所述地图数据至各地图工具包中;

当与所述地图工具包对应的应用所使用的坐标系与所述地图数据所对应的坐标系不同时,则通过所述地图工具包,将所述地图数据的坐标转换为在所述应用所使用的坐标系下的坐标;

在所述地图工具包中缓存进行坐标转换后的地图数据。

在一个实施例中,所述通过所述地图工具包,将所述地图数据的坐标转换为在所述应用所使用的坐标系下的坐标包括:

将构成所述地图数据中道路要素的各点的经纬度坐标,转换为在站心坐标系下的坐标;所述站心坐标系是以所述当前位置为原点的空间直角坐标系;

针对每个道路要素,从构成所述道路要素的点中选取中心点;

确定构成所述道路要素的非中心点到所述中心点的偏移量;

根据所述中心点在所述站心坐标系下的坐标和各非中心点所对应的偏移量,确定各非中心点的坐标。

在一个实施例中,所述根据所述地图数据中的道路要素,在本地构建所述地图数据的空间索引包括:

根据所述地图数据中道路要素,分别在本地构建格网索引和/或树形索引;

所述当获取到应用层发送的查询请求时,通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据包括:

当获取到应用层发送的定位查询请求时,则通过所述格网索引,从本地查询所述定位查询请求所针对的位置坐标;并且/或者,

当获取到应用层发送的要素查询请求时,则通过所述树形索引,从本地查询所述对象查询请求所针对的地图要素信息。

在一个实施例中,所述方法还包括:

记录所述地图数据中的、且与环境感知数据不匹配的异常地图数据;所述环境感知数据,是所述应用层对真实环境进行感知得到的数据;

将所述异常地图数据虚拟成与所述环境感知数据匹配的虚拟地图数据;

发送所述虚拟地图数据至所述应用层;

当所述应用层检测所述虚拟地图数据不存在异常时,则将所述异常地图数据上传至所述云端数据库。

根据本申请的另一个方面,提供了一种地图数据查询装置,所述装置包括:

获取模块,用于获取车辆的当前位置;

加载缓存模块,用于向云端数据库请求与所述当前位置匹配的地图数据;在本地缓存所请求到的所述地图数据;根据所述地图数据中的道路要素,在本地构建所述地图数据的空间索引;

查询模块,用于当获取到应用层发送的查询请求时,通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据。

根据本申请的又一个方面,提供了一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:

获取车辆的当前位置;

向云端数据库请求与所述当前位置匹配的地图数据;

在本地缓存所请求到的所述地图数据;

根据所述地图数据中的道路要素,在本地构建所述地图数据的空间索引;

当获取到应用层发送的查询请求时,通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据。

根据本申请的又一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:

获取车辆的当前位置;

向云端数据库请求与所述当前位置匹配的地图数据;

在本地缓存所请求到的所述地图数据;

根据所述地图数据中的道路要素,在本地构建所述地图数据的空间索引;

当获取到应用层发送的查询请求时,通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据。

上述地图数据查询方法、装置、计算机设备及存储介质,向云端数据库请求与车辆的当前位置匹配的地图数据,在本地缓存所请求到的该的地图数据;根据所述地图数据中的道路要素,在本地构建所述地图数据的空间索引。相当于,通过当前位置,实现了在本地对地图数据的动态缓存,而非固定存储全量地图数据。当获取到应用层发送的查询请求时,通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据。由于,本地缓存的是与当前位置匹配的地图数据,所以,本地缓存的地图数据能够满足车辆当前行驶过程中的查询需求。因此,通过当前位置在本地对地图数据进行局部的动态缓存,在能够满足车辆当前行驶需求的前提下,相较于传统的存储全量地图数据而言,能够节省系统的存储资源。

附图说明

图1为一个实施例中地图数据查询方法的应用场景图;

图2为一个实施例中地图数据查询方法的流程示意图;

图3为一个实施例中高精地图数据的示意图;

图4为一个实施例中车道级定位的示意图;

图5为一个实施例中地图数据引擎的架构图;

图6为一个实施例中地图数据查询方法的数据流图;

图7为一个实施例中地图数据请求和下发的流程简示图;

图8为一个实施例中进程间通信的架构图;

图9为一个实施例中地图数据查询的时序图;

图10为一个实施例中坐标系转换的示意图;

图11为一个实施例中地图数据更新流程示意图;

图12为一个实施例中地图数据查询装置的框图

图13为另一个实施例中地图数据查询装置的框图;

图14为一个实施例中计算机设备的框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1为一个实施例中地图数据查询方法的应用场景图。参照图1,该应用场景中包括通过网络连接的车端设备110和云端数据库120。其中,车端设备110,是放置于车辆端的、为车辆行驶提供服务的设备。可以理解,车端设备110可以是固设于车辆之中的设备,比如,车载设备。车端设备110也可以是在车辆行驶时放置于车辆上的移动终端。移动终端可以包括手机、平板电脑、笔记本电脑、个人数字助理和穿戴式设备等中的至少一种。云端数据库120可以用独立的计算机或者是多个物理计算机组成的计算机集群来实现。

车端设备110可以获取车辆的当前位置,向云端数据库120请求与所述当前位置匹配的地图数据。车端设备110可以在本地缓存所请求到的所述地图数据,根据所述地图数据中的道路要素,在本地构建所述地图数据的空间索引。当获取到应用层发送的查询请求时,车端设备110可以通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据。其中,应用层,包括车端设备110中的用于实现车辆行驶功能的应用。

图2为一个实施例中地图数据查询方法的流程示意图。本实施例中的该地图数据查询方法可以应用于计算机设备,现主要以计算机设备为图1中的车端设备110进行举例说明。参照图2,该方法具体包括如下步骤:

s202,获取车辆的当前位置。

其中,当前位置,是车辆当前所处的位置。

在一个实施例中,车端设备可以从应用层获取定位得到的车辆的当前位置。具体地,车端设备的应用层具备定位功能,应用层通过定位获取车辆的当前位置。

在其他实施例中,车端设备也可以从专门的定位设备中获取车辆的当前位置。专门的定位设备,是专门用于定位的设备。可以理解,对车端设备如何获取车辆的当前位置不做限定。

在一个实施例中,车端设备中设置有地图数据引擎。车端设备可以通过地图数据引擎获取应用层定位的车辆的当前位置。可以理解,车端设备可以通过地图数据引擎直接从应用层获取车辆的当前位置。

车端设备也可以间接地从应用层获取车辆的当前位置。比如,应用层可以将定位的当前位置传送给对应的地图工具包,由地图工具包将当前位置传送至地图数据引擎。

引擎(engine)是开发程序或系统的核心组件。地图数据引擎,是地图数据查询系统的核心组件。地图数据查询系统,是提供地图数据查询服务的系统,即指实现本申请各实施例中地图数据查询方法的系统。

在一个实施例中,地图数据引擎可以是高精地图数据引擎。

其中,高精地图数据,即,高精度地图数据,用于实现车道级别的定位。可以理解,高精度地图数据相对于传统路网地图而言,增加了道路中每一根车道线的几何描述,增加了路牙、护栏、交通灯、标志牌等全部道路要素的精确、细化的几何信息描述,从而能够实现车道级别的定位。

图3为一个实施例中高精地图数据的示意图。从中可以看到车道线和斑马线等丰富的道路要素。通过高精度地图数据可以实现车道级定位。图4为一个实施例中车道级定位的示意图。图4中的数字即为定位引导的车道信息。

地图工具包,即指地图sdk(softwaredevelopmentkit,软件开发工具包),用于接收地图数据引擎下发的地图数据,并向上层的应用层提供查询和数据回传等服务。

在一个实施例中,在获取车辆的当前位置之后,车端设备还可以根据当前位置更新车辆的行驶轨迹。

s204,向云端数据库请求与当前位置匹配的地图数据。

其中,云端数据库,是设置于云端的数据库。

与当前位置匹配的地图数据,是指满足车辆在当前位置的行驶需求的地图数据。即,与当前位置匹配的地图数据,能够为行驶在当前位置上的车辆提供足够的地图数据、以保证车辆的正常行驶。

可以理解,云端数据库中存储了全量的地图数据。全量的地图数据,即全部的地图数据。车端设备可以向云端数据库中请求与当前位置匹配的地图数据。云端数据库在接收到该请求后,可以从存储的全量地图数据中,筛选与该当前位置匹配的地图数据,并将该筛查的地图数据返回至车端设备。可以理解,与当前位置匹配的地图数据,是局部的地图数据,而非全量的地图数据。

需要说明的是,车端设备可以直接根据当前位置,向云端数据库请求所匹配的地图数据。车端设备也可以将当前位置结合其他信息(比如,路径规划信息),向云端数据库请求与该当前位置匹配的地图数据。对此不做限定。

在一个实施例中,车端设备可以通过地图数据引擎,向云端数据库请求与当前位置匹配的地图数据。

s206,在本地缓存所请求到的地图数据。

其中,本地,是指车端设备的本地。

在一个实施例中,所请求到的地图数据是高精度地图数据,能够用于实现车道级定位。即,获取的地图数据中包括的道路要素,能够用于实现车道级定位。

道路要素,是指能够体现道路特征的信息要素。道路特征可以包括道路自身的形态特征、位于道路中(即道路路面上)的道路交通标线和道路的交通环境特征。

道路的形态特征,包括道路的廓形、宽度和走向等信息中的一种或几种的组合。道路的交通环境特征,是指道路上的与交通相关的信息。道路的交通环境特征,包括路牙、护栏、标志牌和交通灯等至少一种。

道路交通标线,指在道路的路面上用线条、箭头、文字、立面标记、突起路标和轮廓标等向交通参与者传递引导、限制和警告等交通信息的标识。道路交通标线,包括车道信息、以及地面上的箭头和文字等地面图文标记等。车道信息包括车道数量、车道宽度、车道线的几何形状和车道线属性信息等中一种或几种的组合。其中,车道线属性信息包括车道线为实线或虚线、车道线颜色和车道线粗细等。

在其他实施例中,所请求到的地图数据,也可以是传统路网地图,即,不能实现车道级定位的非高精度的地图数据。对此不做限定。

具体地,车端设备可以对地图数据中的道路要素进行抽象化表示,通过拓扑关系记录车道线之间的连接关系。车端设备可以将抽象化表示后的道路要素,以及记录的拓扑关系缓存至本地,以实现对所请求的地图数据的缓存。可以理解,抽象化表示,是指表示真实环境中的道路要素。

可以理解,车道线之间的连接关系,能够用于表征道路间通行状态。

在一个实施例中,可以将地图数据中的道路要素抽象化表示为点状对象、线状对象和面状对象。比如,交通灯即为点状对象,车道线和护栏等即为线状对象,斑马线和通行区域等即为面状对象。

在一个实施例中,车端设备可以通过地图数据引擎在本地缓存该所请求到的地图数据。

在一个实施例中,地图数据引擎中可以包括数据模型层。其中,数据模型层,用于对道路要素进行抽象化表示。车端设备可以通过地图数据引擎的数据模型层,将地图数据中的道路要素进行抽象化表示。

在另一个实施例中,车端设备也可以通过对应于应用层中各应用设置的地图工具包,在本地缓存该请求到的地图数据。对此不做限定,只要能够满足在本地缓存所请求到的地图数据即可。

可以理解,在本地缓存所请求到的地图数据时,由于从云端获取的地图数据与本地的数据存储格式可能不同,这种情况下,可以按照本地的数据存储格式,对所请求到的地图数据进行格式转换,将格式转换后的地图数据在本地进行缓存。

可以理解,车端设备是采用哈希映射的方式,在本地缓存所请求到的地图数据。

s208,根据地图数据中的道路要素,在本地构建地图数据的空间索引。

其中,空间索引,为查询地图数据提供索引关系。

可以理解,车端设备可以根据地图数据中的道路要素,在本地构建地图数据的唯一的空间索引。车端设备也可以针对应用层的不同类型的查询需求,设置不同形式的空间索引。空间索引的形式可以是格网索引或树形索引。

在一个实施例中,车端设备还可以建立各道路要素之间的关联索引。关联索引,用于表示各道路要素之间的关联关系。比如,记录与当前车道相关的红绿灯数据,其中,车道与红绿灯属于不同的道路要素,该记录则用于表示车道与红绿灯之间的关联关系。在一个实施例中,关联索引可以通过哈希表的形式进行实现,即,将具有关联关系的道路要素记录在哈希表中。

在一个实施例中,车端设备可以通过地图数据引擎,根据地图数据中的道路要素,在本地构建地图数据的空间索引。

在一个实施例中,地图数据引擎中可以包括数据索引层。其中,数据索引层,用于生成地图数据的空间索引。车端设备可以通过地图数据引擎的数据索引层,在本地构建地图数据的空间索引。

s210,当获取到应用层发送的查询请求时,通过空间索引,从本地查询该查询请求所针对的地图数据。

其中,应用层中包括的应用,用于实现车辆行驶的功能。可以理解,应用层中包括的应用也设置于车端设备中。

在一个实施例中,应用层可以是自动驾驶应用层。自动驾驶应用层中包括自动驾驶应用,用于实现车辆自动驾驶功能。即,本申请各实施例中的地图数据查询方法可以应用于自动驾驶场景,以为自动驾驶提供准备的、及时地地图数据。

具体地,应用层在车辆行驶过程中可能需要查询地图数据,当获取到应用层发送的查询请求时,车端设备可以通过在本地构建的空间索引,从本地的缓存中查询该查询请求所针对的地图数据。

可以理解,当车端设备在本地构建了不同形式的空间索引时,车端设备可以分析应用层发送的查询请求的类型,通过与该类型对应的空间索引,从本地查询该查询请求所针对的地图数据。这样一来,可以提高查询效率。

在一个实施例中,车端设备可以通过地图数据引擎,根据建立的空间索引,从本地查询该查询请求所针对的地图数据。

在另一个实施例中,车端设备也可以确定与应用层中发起查询请求的应用所对应设置的地图工具包,通过该地图工具包,根据建立的空间索引,从本地查询该查询请求所针对的地图数据。

图5为一个实施例中地图数据引擎的架构图。参照图5,地图数据引擎可以包括数据模型层、数据索引层、本地缓存层、消息通信层、抽象接口层和业务逻辑层。其中,地图数据引擎可以通过数据模型层对请求到的地图数据中的地图要素进行抽象化表示,以抽象为点状对象、线状对象和面状对象,并通过拓扑关系记录道路间通行状态。地图数据引擎可以通过数据索引层建立空间索引,并记录道路要素之间的关联关系。地图数据引擎可以数据模型层和数据索引层来实现地图数据在本地缓存层中的缓存。在本地缓存层中,可以通过哈希映射的方式来实现缓存的地图数据的高效存储,在查询地图数据时,也可以快速查询到地图数据。消息通信层中包括进程间通信和云端通信。进程间通信,包括封装的与地图工具包(即,地图sdk)之间的通信接口和通信协议。云端通信包括封装的与云端数据库之间的通行接口。抽象接口层,主要是封装了地图数据引擎对本地数据的访问接口和消息收发接口。业务逻辑层,则是通过抽象接口层提供的各项接口,实现相应业务功能。比如,轨迹跟踪、路径规划、数据播发和地图更新等相关功能。可以理解,轨迹跟踪,即指地图数据引擎可以根据车辆的当前位置,更新车辆的行驶轨迹。路径规划,即指地图数据引擎可以接收路径规划请求,进行路径规划处理。数据播发,即指地图数据引擎可以向地图工具包下发地图数据。地图更新,即指,高精度地图数据引擎可以接收应用层回传异常地图数据,并反馈至云端数据库,以实现对地图数据的更新。

上述地图数据查询方法,向云端数据库请求与车辆的当前位置匹配的地图数据,在本地缓存所请求到的该的地图数据;根据所述地图数据中的道路要素,在本地构建所述地图数据的空间索引。相当于,通过当前位置,实现了在本地对地图数据的动态缓存,而非固定存储全量地图数据。当获取到应用层发送的查询请求时,通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据。由于,本地缓存的是与当前位置匹配的地图数据,所以,本地缓存的地图数据能够满足车辆当前行驶过程中的查询需求。因此,通过当前位置在本地对地图数据进行局部的动态缓存,在能够满足车辆当前行驶需求的前提下,相较于传统的存储全量地图数据而言,能够节省系统的存储资源。

此外,从云端数据库中动态加载地图数据,能够保证地图数据的鲜度,从而提高查询的地图数据的准确性。此外,地图数据查询处理是独立于车辆行驶的应用层之外的,减少了耦合。

在一个实施例中,步骤s204包括:获取预先规划的路径规划信息;从所述路径规划信息中,确定距所述当前位置前预设范围内的待通行路径信息;向所述云端数据库请求与所述待通行路径信息匹配的地图数据。

其中,路径规划信息,是预先规划的车辆行驶路径信息。

可以理解,路径规划信息可以是由车端设备自身预先规划,也可以是由云端数据库预先规划。

在一个实施例中,路径规划信息,是根据预先设定的兴趣途径点规划的车辆行驶路径。其中,兴趣途径点,是车辆行驶过程中需要经过的点。

在一个实施例中,路径规划信息的规划步骤包括:获取应用层发送的路径规划请求;发送路径规划请求中携带的兴趣途径点至云端数据库;在本地缓存云端数据库返回的针对兴趣途径点制定的路径规划信息;向应用层返回路径规划信息。

具体地,用户可以向应用层输入兴趣途径点,应用层可以生成路径规划请求,该路径规划请求中携带兴趣途径点。车端设备可以通过地图数据引擎获取路径规划请求,并将路径规划请求中携带的兴趣途径点发送至云端数据库。云端数据库可以根据兴趣途径点制定路径规划信息。该路径规划信息中包括兴趣途径点。云端数据库可以将制定的路径规划信息返回至车端设备中的地图数据引擎,由地图数据引擎向应用层返回该路径规划信息。

可以理解,地图数据引擎可以直接获取应用层发送的路径规划请求。地图数据引擎也可以经由对应于应用层中各应用设置的地图工具包的转发,获取路径规划请求。即,应用层中生成路径规划请求的应用,可以将路径规划请求发送至针对该应用设置的地图工具包,由该地图工具包将路径规划请求转发至地图数据引擎,地图数据引擎可以将路径规划请求中携带兴趣途径点发送至云端数据库,以请求云端数据库制定路径规划信息。

同样地,在一个实施例中,车端设备可以通过地图数据引擎将云端数据库返回的路径规划信息向应用层下发。可以理解,高精度地图数据引擎可以直接将路径规划信息向应用层下发。高精度地图数据引擎也可以将地图数据引擎路径规划信息向地图工具包下发,经由地图工具包将路径规划信息向应用层中发起路径规划请求的应用返回。

可以理解,当存在预先规划的路径规划信息时,则执行获取预先规划的路径规划信息及后续步骤。

在一个实施例中,在获取预先规划的路径规划信息之前,车端设备可以先检测是否存在预先规划的路径规划信息。当存在预先规划的路径规划信息时,则获取预先规划的路径规划信息及后续步骤,当不存在预先规划的路径规划信息时,则可以直接按照当前位置,向云端数据库请求地图数据。

在一个实施例中,当获取云端数据库返回的路径规划信息之后,车端设备可以将系统状态更新为路径规划状态。可以理解,路径规划状态,用于表明已经规划了路径。因此,车端设备可以检测当前是否处于路径规划状态(routing状态),若是,则表明存在预先规划的路径规划信息,若否,则表明不存在预先规划的路径规划信息。

在一个实施例中,在检测当前是否处于路径规划状态之前,车端设备还可以确定是否需要向云端数据库重新请求地图数据,若确定要向云端数据库重新请求地图数据,则执行检测当前是否处于路径规划状态的步骤。

在一个实施例中,当不存在路径规划信息时,车端设备则可以向云端数据库请求距当前位置预设范围内的区域所对应的地图数据。可以理解,距当前位置预设范围内的区域所对应的地图数据,相当于,车辆周边的道路信息。

当存在预先规划的路径信息时,车端设备可以从路径规划信息中,确定距所述当前位置前预设范围内的待通行路径信息。即,确定在车辆行驶前方预设范围内的通行路径信息。可以理解,待通行路径信息,用于表示在车辆行驶前方预设范围内,需要行驶的路径信息。在确定待通行路径信息之后,车端设备则需要向云端数据库查询与所述待通行路径信息匹配的地图数据。

其中,与待通行路径信息匹配的地图数据,是指满足车辆在待通行路径的行驶需求的地图数据。即,与待通行路径信息匹配的地图数据,能够为后续行驶在待通行路径上的车辆提供足够的地图数据、以保证车辆在待通行路径上的正常行驶。可以理解,与待通行路径信息匹配的地图数据,相当于前方待通行路径的道路信息。

上述实施例中,根据路径规划信息和当前位置,确定待通行路径信息,加载与待通行路径匹配的地图数据,能够更加有针对性地、更准确地加载地图数据。

在一个实施例中,该方法还包括:获取与上次缓存的地图数据所匹配的参照行驶位置;确定所述当前位置和所述参照行驶位置之间的差异;当所述差异大于预设差异阈值时,则执行步骤s204向云端数据库请求与所述当前位置匹配的地图数据。

其中,参照行驶位置,是上次缓存的地图数据所匹配的行驶位置。

可以理解,参照行驶位置,属于上次缓存时车辆的当前位置。在上次缓存时,车端设备可以向云端数据库请求与该参照行驶位置匹配的地图数据。

为了便于理解参照行驶位置,现举例说明。比如,在第一次缓存时,车辆的当前位置为p1,则在第一次缓存时向云端数据库请求与p1匹配的地图数据。在确定是否要进行第二次缓存时,该p1即为参照行驶位置,则可以获取当前位置,将当前位置与p1进行比对,以确定是否要向云端数据库请求第二次缓存的地图数据。

具体地,车端设备可以获取与上次缓存的地图数据所匹配的参照行驶位置,并确定所述当前位置和所述参照行驶位置之间的差异。当所述差异大于预设差异阈值时,则表明当前位置距上次缓存地图数据时的参照行驶位置过远,上次缓存的地图数据可能无法满足当前位置的行驶需求,因此,车端设备可以再次向云端数据库请求与所述当前位置匹配的地图数据。

上述实施例中,在当前位置和参照行驶位置之间的差异大于预设差异阈值时,再触发向云端数据库请求与所述当前位置匹配的地图数据,避免过度频繁向云端数据库请求地图数据造成的资源浪费。

在一个实施例中,该方法还包括:将本次缓存的所述地图数据下发至各地图工具包中进行缓存;各所述地图工具包,分别对应于应用层中各应用设置于本地。步骤s210当获取到应用层发送的查询请求时,通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据包括:当所述地图工具包接收对应的应用发送的查询请求时,从所述地图工具包缓存的地图数据中,查询所述查询请求所针对的地图数据。

其中,地图工具包,即指地图sdk(softwaredevelopmentkit,软件开发工具包),用于接收地图数据引擎下发的地图数据,并向上层的应用层提供查询和数据回传等服务。

可以理解,应用层中的各应用设置于车端设备中。车端设备中预先针对各应用分别设置了相应的地图工具包。即,各地图工具包设置于车端设备本地、且与应用层中各应用分别对应。

在一个实施例中,地图工具包与各应用可以一一对应。即每个应用都有对应的地图工具包。在其他实施例中,一个地图工具包可以对应多个应用。

具体地,在步骤s206中,车端设备可以通过地图数据引擎在本地缓存所请求到的地图数据。进一步地,车端设备可以通过地图数据引擎将地图数据下发至各地图工具包中进行缓存。

可以理解,这种情况下,当向云端数据库请求的地图数据是与所述待通行路径信息匹配的地图数据时,那么,向地图工具包下发的是与所述待通行路径信息匹配的地图数据(即前方待通行路径的道路信息)。当向云端数据库请求的地图数据,是直接根据当前位置确定的地图数据时,那么,向地图工具包下发的是直接根据当前位置确定的地图数据(即车辆周边的道路信息)。

在一个实施例中,该方法还包括:将本次缓存的所述地图数据与上次缓存的地图数据进行差异比对;当本次缓存的所述地图数据与上次缓存的地图数据之间存在差异时,则执行所述将本次缓存的所述地图数据下发至各地图工具包中进行缓存的步骤。

需要说明的是,车端设备在通过地图数据引擎下发本次缓存的地图数据之前,可以判断是否要下发该地图数据。

可以理解,在向云端数据库请求地图数据时,可能会即使通过行驶位置的差异确定需要向云端数据库重新请求地图数据了,但是,实际上两次请求的地图数据相同。比如,行驶位置的预测差异阈值过小,或者,云端数据库侧请求地图数据的精度比较小,导致即使行驶位置发生了一定的差异,却仍然获取相同的地图数据。这种情况下,为了避免下发相同的地图数据至地图工具包导致资源浪费的情况,车端设备可以通过地图数据引擎,将本次缓存的所述地图数据与上次缓存的地图数据进行差异比对,当两次缓存的地图数据之间存在差异时,说明地图数据发生了变化,则可以将本次缓存的地图数据下发至地图工具包中进行缓存。

具体地,车端设备可以通过地图数据引擎,从本地获取上次缓存的地图数据,并将本次缓存的所述地图数据与上次缓存的地图数据进行差异比对,当本次缓存的地图数据与上次缓存的地图数据之间存在差异时,则再所述将本次缓存的所述地图数据下发至各地图工具包中进行缓存。

可以理解,每个地图工具包中缓存的地图数据相同。当各地图工具包接收对应的应用发送的查询请求时,从该地图工具包缓存的地图数据中,查询所述查询请求所针对的地图数据。

在一个实施例中,当应用层收到查询到的地图数据时,可以对检测该查询到的地图数据是否异常,当检测异常时,则可以向地图工具包反馈该异常数据,地图工具包可以通过进程间通信的方式,将该异常数据上传至地图数据引擎。车端设备可以通过地图数据引擎向云端数据库反馈该异常数据。云端数据库可以针对该异常数据进行处理,以对该异常数据进行更改更新,使得更新后的地图数据正确。

图6为一个实施例中地图数据查询方法的数据流图。图6中以地图数据引擎为高精地图数据引擎为例进行说明。高精定位、环境感知和决策控制属于应用层的应用,针对各个应用分别设置了对应的地图sdk(即,地图工具包)。高精地图数据引擎可以向云端数据库提供行驶区域(即,车辆的当前位置或待通行路径信息),云端数据库可以返回地图数据至高精地图数据引擎。高精地图数据引擎可以将地图数据分发至各个地图sdk进行本地缓存。高精定位、环境感知和决策控制等应用可以从对应的地图sdk中查询地图数据。当应用检测到地图数据存在异常时,则将异常数据回传至高精地图数据引擎。高精地图数据引擎可以将异常数据上报至云端数据库,以实现数据更新。

上述实施例中,通过针对各应用设置相应的地图工具包,让各应用从对应的地图工具包中查询地图数据,而不用统一从地图数据引擎中查询,从而能够提供查询效率。

图7为一个实施例中地图数据请求和下发的流程简示图。参照图7,该流程主要以应用于自动驾驶车辆的车端设备的地图数据引擎为例进行说明。图7中的自车,即为“自动驾驶车辆”的简称。地图数据引擎属于地图数据查询系统的核心组件。地图数据查询系统,用于实现本申请各实施例中的地图数据查询方法。整个地图数据查询系统的运行帧率是10fps,每一帧会首先判断是否有路径规划请求,并以此更新系统状态;随后接受车辆位置坐标(即车辆的当前位置),并判断是否需要请求云端数据以及是否需要向地图工具包播发地图数据。具体地,在地图数据查询系统启动之后,高精度地图数据引擎可以判断是否接收到路径规划请求,若是,则向云端数据库请求规划路径。当完成路径规划后,地图数据引擎可以向地图工具包播发规划结果,并更新系统状态为routing状态(即路径规划状态)。地图数据引擎可以接收车辆位置坐标(即车辆的当前位置),更新自车轨迹(即,自动驾驶车辆的行驶轨迹)。地图数据引擎可以判断是否要向云端请求数据(即是否向云端数据库请求地图数据),若是,则判断是否处于routing状态,若是,则表明存在路径规划信息,则可以根据路径规划信息确定前方通行路径(即待通行路径信息),并根据前方通行路径加载云端数据(即,向云端数据库请求地图数据),若否,则表明不存在路径规划信息,则可以根据自车位置加载云端数据(即根据自动驾驶车辆的当前位置向云端数据库请求地图数据)。在获取到所请求的地图数据后,地图数据引擎可以判断是否要播发数据(即是否要向地图工具包下发本次请求缓存的地图数据),若是,则当处于routing状态,播发所请求到的前方通行路径信息(即,与待通行路径信息匹配的地图数据),当不处于routing状态,播发所请求到的自车周边道路信息(即,距自动驾驶车辆的当前位置预设范围内的区域所对应的地图数据)。如果判断不需要播发或者播发道路信息完毕后,则可以判断系统是否关闭,如果关闭则结束,如果没有关闭,则重新判断是否接收到新的路径规划请求。

在一个实施例中,地图工具包中包括地图代理层、数据缓存层、异步加载层和进程间通信层(ipc,inter-processcommunication)。

其中,地图代理层,用于向应用层提供封装好的地图查询接口。数据缓存层,同地图数据引擎一样,用于提供地图数据的缓存,索引和查询接口。异步加载层,用于向地图数据引擎请求地图数据,并将获取到的地图数据载入数据缓存层中。进程间通信层,用于封装与地图数据引擎之间的通信协议。

图8为一个实施例中进程间通信的架构图。参照图8,进程间通信层提供了两种通信形式:一种通过共享内存、信号量以及消息队列的形式,主要应用于单机运行的自动驾驶系统(指单一车端设备即可以满足车辆行驶需求),确保通信效率足够高;另一种通过套接字(socket)的形式,主要应用于多机运行的自动驾驶系统(指需要多台车端设备协作满足车辆行驶需求),确保能够跨机器通信。地图工具包和地图数据引擎之间通过进程间通信层进行通信。

图9为一个实施例中地图数据查询的时序图。参照图9,包括应用层、地图工具包、地图数据引擎和云端数据库。可以理解,应用层、地图工具包和地图数据引擎皆设置于车端设备中。其中,地图工具包中包括地图代理层、数据缓存层和异步加载层。地图工具包和地图数据引擎通过进程间通信层ipc进行通信。应用层的各应用可以请求初始化所对应设置的地图工具包(即地图sdk),则地图代理层可以构建数据缓存层,并且指示异步加载层初始化异步加载队列。数据缓存层在构建完成后向地图代理层反馈,地图代理层向应用层反馈初始化完成。应用层向地图工具包中的地图代理层发送路径规划请求,地图代理层则将路径规划请求中携带的poi途径点(即兴趣途径点)通过进程间通信层ipc发送至地图数据引擎。地图数据引擎则向云端数据库发送路径规划请求。云端数据库根据兴趣途径点制定路径规划信息并返回至地图数据引擎。地图数据引擎通过ipc发送路径规划信息至地图工具包中的地图代理层。地图代理层返回路径规划信息至应用层。地图工具包中的异步加载层可以通过ipc对地图数据引擎进行数据状态查询,以查询数据状态是否发生更新,即查询是否有新的地图数据。地图数据引擎通过ipc返回数据状态至异步加载层。当数据状态发生更新时,异步加载层则通过ipc向地图数据引擎请求拉取地图数据。地图数据引擎通过ipc下发地图数据至异步加载层。异步加载层根据接收的地图数据在数据缓存层中添加或删除地图数据。数据缓存层根据新的地图数据在本地更新索引(即更新空间索引),并告知异步加载层更新完成。应用层则可以向地图工具包请求查询地图数据,地图工具包中的地图代理层,则可以从地图工具包的数据缓存层中查询地图数据,并依次返回查询结果至应用层。当应用层检测到地图数据存在异常时,则反馈异常数据至地图工具包。地图工具包中的地图代理层则可以通过ipc上传异常数据至地图数据引擎,地图数据引擎将异常数据上报至云端数据库。云端数据库根据异常数据进行更新处理,以更新地图数据。进一步地,地图数据引擎可以在异常数据更新完成后告知地图代理。

在一个实施例中,所述将本次缓存的所述地图数据下发至各地图工具包中进行缓存包括:下发所述地图数据至各地图工具包中;当与所述地图工具包对应的应用所使用的坐标系与所述地图数据所对应的坐标系不同时,则通过所述地图工具包,将所述地图数据的坐标转换为在所述应用所使用的坐标系下的坐标;在所述地图工具包中缓存进行坐标转换后的地图数据。

可以理解,原始的地图数据在存储过程中使用的是经纬度坐标(比如wgs84坐标),这一坐标系统可能并不适合应用层的某些应用直接使用。

其中,应用所使用的坐标系,是指应用层中的应用所能够直接使用的数据所在的坐标系。

具体地,当与所述地图工具包对应的应用所使用的坐标系与所述地图数据所对应的坐标系不同时,则说明应用在获取地图数据之后,还需要将地图数据转换成能使用的坐标系下的坐标,这样一来,造成地图数据使用效率低,从而会影响车辆行驶性能。因此,车端设备可以通过所述地图工具包,将所述地图数据的坐标转换为在所述应用所使用的坐标系下的坐标。车端设备可以在所述地图工具包中缓存进行坐标转换后的地图数据。

需要说明的是,应用层中不同的应用所使用的坐标系可能不同,有些应用所使用的坐标系可能与地图数据所对应的坐标系相同,那么,则不需要进行坐标系转换。

上述实施例中,针对不同的应用可以在本地缓存不同坐标系下的地图数据,从而提高应用访问地图数据的效率。

在一个实施例中,所述通过所述地图工具包,将所述地图数据的坐标转换为在所述应用所使用的坐标系下的坐标包括:将构成所述地图数据中道路要素的各点的经纬度坐标,转换为在站心坐标系下的坐标;所述站心坐标系是以所述当前位置为原点的空间直角坐标系;针对每个道路要素,从构成所述道路要素的点中选取中心点;确定构成所述道路要素的非中心点到所述中心点的偏移量;根据所述中心点在所述站心坐标系下的坐标和各非中心点所对应的偏移量,确定各非中心点的坐标。

其中,站心坐标系,是以车辆的当前位置为原点的空间直角坐标系。可以理解,站心坐标系的坐标轴,可以分别是行驶方向、行驶方向在水平面上的垂直方向以及在竖直面的垂直方向。

可以理解,道路要素在地图数据中是由各点组成。所以,车端设备可以通过地图工具包将道路要素的各点的经纬度坐标转换为在站心坐标系下的坐标。

在一个实施例中,车端设备可以通过地图工具包将地图数据中道路要素的各点的经纬度坐标,先初次转换为在球心坐标系下的坐标,再对初次转换为球心坐标系下的坐标转换为在站心坐标系下的坐标。

针对每个道路要素,车端设备可以通过地图工具包从构成该道路要素的点中选取中心点。该道路要素中除中心点以外的点即为非中心点。车端设备可以通过地图工具包确定构成所述道路要素的各非中心点到所述中心点的偏移量。车端设备可以根据所述中心点在所述站心坐标系下的坐标和各非中心点所对应的偏移量,确定各非中心点的坐标。即,通过中心点在站心坐标系下的坐标和偏移量来表示非中心点的坐标。

可以理解,在车辆的行驶过程中,需要不断地更换站心坐标系。因为,当车辆移动的越来越远,之前建立的站心坐标系就无法再适用。这个时候,就需要重新以车辆的新的当前位置作为原点,再次建立新的站心坐标系。比如,先以车辆行驶位置p1为原点,建立站心坐标系。随着车辆的行驶,与p1为原点的站心坐标系就会由于车辆过远变得不再适用了,这种情况下,就需要重新获取车辆的当前位置p2,以p2为原点再次建立站心坐标系。

图10为一个实施例中坐标系转换的示意图。从云端数据库中获取的原始的地图数据的道路要素中各点的坐标为经纬度坐标,对各点的经纬度坐标进行坐标系转换,转换为中心点和偏移量的组合的形式。

由于,同一道路要素的非中心点相较于中心点而言,是固定不变的,那么偏移量也是固定不变的。所以,在更换站心坐标系时,通过仅更新转换中心点在新的站心坐标系下的坐标,就可以一并将非中心点的坐标通过中心点在新的站心坐标系下的坐标和偏移量的形式进行表示。即能够快速、准确地表示出非中心点的坐标,节省了计算量。此外,转换后各点的坐标即符合笛卡尔坐标系,属于空间直角坐标,能够被应用层中的应用直接使用,提高了地图数据的使用效率。

在一个实施例中,步骤s208包括:根据所述地图数据中道路要素,分别在本地构建格网索引和/或树形索引。步骤s210当获取到应用层发送的查询请求时,通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据包括:当获取到应用层发送的定位查询请求时,则通过所述格网索引,从本地查询所述定位查询请求所针对的位置坐标;并且/或者,当获取到应用层发送的要素查询请求时,则通过所述树形索引,从本地查询所述对象查询请求所针对的地图要素信息。

格网索引,是将地图区域用横竖线条划分大小相等或不等的格网,记录每一个格网所包含的空间实体的索引结构。格网索引的查询过程是先计算出查询的对象所在格网,然后再在该网格中快速查询所选空间实体。

树形索引,是指叶节点存放指向地图数据的指针的树形结构。通过树形索引,可以逐层级地查找目标对象。

具体地,车端设备可以根据所述地图数据中道路要素,分别在本地构建格网索引和/或树形索引。可以理解,格网索引便于对具体的对象进行定位查询。树形索引,便于进行数据范围查询。比如,查询一定范围内的要素。

在一个实施例中,步骤s208包括:根据所述地图数据中道路要素,在本地构建格网索引。步骤s210包括:当获取到应用层发送的定位查询请求时,则通过所述格网索引,从本地查询所述定位查询请求所针对的位置坐标。

在一个实施例中,步骤s208包括:根据所述地图数据中道路要素,在本地构建树形索引。步骤s210包括:当获取到应用层发送的要素查询请求时,则通过所述树形索引,从本地查询所述对象查询请求所针对的地图要素信息。

在一个实施例中,步骤s208包括:根据所述地图数据中道路要素,分别在本地构建格网索引和树形索引。步骤s210包括:当获取到应用层发送的定位查询请求时,则通过所述格网索引,从本地查询所述定位查询请求所针对的位置坐标;并且,当获取到应用层发送的要素查询请求时,则通过所述树形索引,从本地查询所述对象查询请求所针对的地图要素信息。

在一个实施例中,车端设备可以通过地图数据引擎,按照格网索引,从本地查询所述定位查询请求所针对的位置坐标。在其他实施例中,当地图数据引擎将地图数据下发至地图工具包进行缓存时,则车端设备可以通过与发起定位查询请求的应用所对应设置的地图工具包,按照格网索引,从本地查询所述定位查询请求所针对的位置坐标。

在一个实施例中,车端设备可以通过地图数据引擎,按照树形索引,从本地查询所述对象查询请求所针对的地图要素信息。在其他实施例中,当地图数据引擎将地图数据下发至地图工具包进行缓存时,则车端设备可以通过与发起定位查询请求的应用所对应设置的地图工具包,按照树形索引,从本地查询所述对象查询请求所针对的地图要素信息。

上述实施例中,车端设备可以预先针对不同类型的查询需求建立不同的空间索引结构,以便针对不同类型的查询请求使用相应的空间索引进行查询,从而提高了查找效率。

在一个实施例中,该方法还包括:记录所述地图数据中的、且与环境感知数据不匹配的异常地图数据;所述环境感知数据,是所述应用层对真实环境进行感知得到的数据;将所述异常地图数据虚拟成与所述环境感知数据匹配的虚拟地图数据;发送所述虚拟地图数据至所述应用层;当所述应用层检测所述虚拟地图数据不存在异常时,则将所述异常地图数据上传至所述云端数据库。

其中,虚拟地图数据,是指将所请求到的地图数据按照环境感知数据进行修改后得到的地图数据。

可以理解,从云端数据库中请求到的地图数据为真实的地图数据,对该地图数据按照环境感知数据进行修改后得到的地图数据,即为虚拟地图数据。

为了便于理解虚拟地图数据,现举例说明。假设,原始的地图数据中,在某一位置处并不存在一个路标,而应用层的环境感知应用对真实环境进行感知后得到的环境感知数据表明,在该位置处存在一个路标,那么该部分地图数据与环境感知数据则不匹配,属于异常地图数据。那么,车端设备则可以按照环境感知数据在地图数据的该位置处虚拟一个路标,虚拟一个路标后的地图数据即为虚拟地图数据。

具体地,车端设备中的应用层自身也可以通过环境感知应用,对真实环境进行感知,获取环境感知数据。应用层在从本地缓存中查询到地图数据后,可以将自身获取的环境感知数据和查询的地图数据进行匹配。当二者不匹配时,应用层则可以判定该地图数据为异常地图数据。车端设备中的应用层可以将异常地图数据回传至地图数据引擎。地图数据引擎可以将所述异常地图数据虚拟成与所述环境感知数据匹配的虚拟地图数据。即,地图数据引擎可以按照环境感知数据,将异常地图数据中缺失或多余的地图数据进行新增或删除,得到虚拟地图数据。

车端设备可以通过地图数据引擎发送所述虚拟地图数据至所述应用层。应用层可以按照环境感知数据,对接收的虚拟地图数据进行检测,判断该虚拟地图数据是否发生异常。由于,虚拟地图数据是与所述环境感知数据匹配的,所以,如果应用层的环境感知应用的功能没有出现问题时,则会检测得到虚拟地图数据并不存在异常。如果应用层的环境感知应用的功能出现了问题时,则可能检测得到虚拟地图数据存在异常。因此,当所述应用层检测所述虚拟地图数据不存在异常时,则说明应用层的环境感知应用的功能没有出现问题,那么,由环境感知应用上报的异常地图数据就很有可能确实存在异常。地图数据引擎则可以将所述异常地图数据上传至所述云端数据库,以进行异常上报。云端数据库可以根据异常地图数据进行更新处理,以更新地图数据。

在一个实施例中,当获取到连续多帧上报的异常地图数据时,再执行将所述异常地图数据虚拟成与所述环境感知数据匹配的虚拟地图数据的步骤。当未获取到连续多帧上报的异常地图数据,而仅获取到一份异常地图数据,则可以直接将该异常地图数据上报至云端数据库。

可以理解,当环境感知应用感知多帧存在异常地图数据,则有可能是环境感知应用自身出了问题,则可以通过将所述异常地图数据虚拟成与所述环境感知数据匹配的虚拟地图数据,并发送给应用层中的环境感知应用进行检测的方式,来校验是否是环境感知应用自身出现了问题。

图11为一个实施例中地图数据更新流程示意图。在地图数据查询系统运行的每一帧开始时,应用层中的定位应用接收环境感知数据并与地图数据做匹配。当存在异常匹配的地图数据时,则回传存在异常地图数据的感知结果和坐标位置至地图数据引擎。当检测到不存在异常匹配的地图数据时,则该帧运行结束。地图数据引擎可以记录该感知结果。当连续多帧存在异常地图数据时,则生成虚拟地图数据发送至地图工具包,由地图工具包提供给应用层以检测是否存在异常。当停止接收到异常反馈时,则说明虚拟地图数据检测不存在异常,表明应用层不存在异常,则将应用层检测出来的存在异常地图数据的感知结果上传到云端数据库。云端数据库可以对异常地图数据进行更新处理,以实现对地图数据的更新。

上述实施例中,在检测到异常地图数据之后,将异常地图数据虚拟成与所述环境感知数据匹配的虚拟地图数据并提供至应用层,供应用层再次进行检测,以验证该应用层的准确性,当所述应用层检测所述虚拟地图数据不存在异常时,则验证该应用层不存在问题,此时,再将该异常地图数据上传至云端数据库,能够提高异常上报的准确性。

如图12所示,在一个实施例中,提供了一种地图数据查询装置1200,该装置1200包括:获取模块1202、加载缓存模块1204以及查询模块1206,其中:

获取模块1202,用于获取车辆的当前位置。

加载缓存模块1204,用于向云端数据库请求与所述当前位置匹配的地图数据;在本地缓存所请求到的所述地图数据;根据所述地图数据中的道路要素,在本地构建所述地图数据的空间索引。

查询模块1206,用于当获取到应用层发送的查询请求时,通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据。

在一个实施例中,所述加载缓存模块1204还用于获取预先规划的路径规划信息;从所述路径规划信息中,确定距所述当前位置前预设范围内的待通行路径信息;向所述云端数据库请求与所述待通行路径信息匹配的地图数据。

在一个实施例中,该装置1200还包括:

路径规划模块1201,用于获取应用层发送的路径规划请求;发送所述路径规划请求中携带的兴趣途径点至所述云端数据库;在本地缓存云端数据库返回的针对所述兴趣途径点制定的路径规划信息;向所述应用层返回所述路径规划信息。

在一个实施例中,加载缓存模块1204还用于获取与上次缓存的地图数据所匹配的参照行驶位置;确定所述当前位置和所述参照行驶位置之间的差异;当所述差异大于预设差异阈值时,则向云端数据库请求与所述当前位置匹配的地图数据。

在一个实施例中,加载缓存模块1204还用于将本次缓存的所述地图数据下发至各地图工具包中进行缓存;各所述地图工具包,分别对应于应用层中各应用设置于本地;当所述地图工具包接收对应的应用发送的查询请求时,从所述地图工具包缓存的地图数据中,查询所述查询请求所针对的地图数据。

在一个实施例中,加载缓存模块1204还用于将本次缓存的所述地图数据与上次缓存的地图数据进行差异比对;当本次缓存的所述地图数据与上次缓存的地图数据之间存在差异时,则将本次缓存的所述地图数据下发至各地图工具包中进行缓存。

在一个实施例中,加载缓存模块1204还用于下发所述地图数据至各地图工具包中;当与所述地图工具包对应的应用所使用的坐标系与所述地图数据所对应的坐标系不同时,则通过所述地图工具包,将所述地图数据的坐标转换为在所述应用所使用的坐标系下的坐标;在所述地图工具包中缓存进行坐标转换后的地图数据。

在一个实施例中,加载缓存模块1204还用于将构成所述地图数据中道路要素的各点的经纬度坐标,转换为在站心坐标系下的坐标;所述站心坐标系是以所述当前位置为原点的空间直角坐标系;针对每个道路要素,从构成所述道路要素的点中选取中心点;确定构成所述道路要素的非中心点到所述中心点的偏移量;根据所述中心点在所述站心坐标系下的坐标和各非中心点所对应的偏移量,确定各非中心点的坐标。

在一个实施例中,加载缓存模块1204还用于根据所述地图数据中道路要素,分别在本地构建格网索引和/或树形索引;所述查询模块1206还用于当获取到应用层发送的定位查询请求时,则通过所述格网索引,从本地查询所述定位查询请求所针对的位置坐标;并且/或者,当获取到应用层发送的要素查询请求时,则通过所述树形索引,从本地查询所述对象查询请求所针对的地图要素信息。

如图13所示,在一个实施例中,该装置1200还包括:路径规划模块1201和异常反馈模块1208,其中:

异常反馈模块1208,用于记录所述地图数据中的、且与环境感知数据不匹配的异常地图数据;所述环境感知数据,是所述应用层对真实环境进行感知得到的数据;将所述异常地图数据虚拟成与所述环境感知数据匹配的虚拟地图数据;发送所述虚拟地图数据至所述应用层;当所述应用层检测所述虚拟地图数据不存在异常时,则将所述异常地图数据上传至所述云端数据库。

图14为一个实施例中计算机设备的内部结构示意图。参照图14,该计算机设备可以图1中的车端设备110。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质可存储操作系统和计算机程序。该计算机程序被执行时,可使得处理器执行一种地图数据查询方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该内存储器中可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行一种地图数据查询方法。计算机设备的网络接口用于进行网络通信。

本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的地图数据查询装置可以实现为一种计算机程序的形式,计算机程序可在如图14所示的计算机设备上运行,计算机设备的非易失性存储介质可存储组成该地图数据查询装置的各个程序模块,比如,图12所示的获取模块1202、加载缓存模块1204以及查询模块1206。各个程序模块所组成的计算机程序用于使该计算机设备执行本说明书中描述的本申请各个实施例的地图数据查询方法中的步骤,例如,计算机设备可以通过如图12所示的地图数据查询装置1200中的获取模块1202获取车辆的当前位置,并通过加载缓存模块1204向云端数据库请求与所述当前位置匹配的地图数据;在本地缓存所请求到的所述地图数据;根据所述地图数据中的道路要素,在本地构建所述地图数据的空间索引。计算机设备可以通过查询模块1206在获取到应用层发送的查询请求时,通过所述空间索引,从所述本地查询所述查询请求所针对的地图数据。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述地图数据查询方法的步骤。此处地图数据查询方法的步骤可以是上述各个实施例的地图数据查询方法中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述地图数据查询方法的步骤。此处地图数据查询方法的步骤可以是上述各个实施例的地图数据查询方法中的步骤。

应该理解的是,虽然本申请各实施例中的各个步骤并不是必然按照步骤标号指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1