掌桥专利:专业的专利平台
掌桥专利
首页

一种高效率三维数字导航地球生成方法及系统

文献发布时间:2023-06-19 11:16:08


一种高效率三维数字导航地球生成方法及系统

技术领域

本发明涉及航电3D导航技术领域,特别涉及一种高效率三维数字导航地球生成方法及系统。

背景技术

地图是人类文明发展的早期结晶,同时也伴随着人类对自然、社会现象的认识以及技术的发展而发展。近几十年来,迅速发展的计算机及其相关技术,从根本上改变了地图的制作工艺,并形成了与之相对应的地图理论与方法,因此,将地图学从传统的手工制图带到了计算机制图的现代地图学时代,而电子地图就是这一时期的重要产物。从狭义上讲,电子地图是一种以数字地图为基础数据,以计算机系统为处理平台,能够在屏幕上实时显示的地图形式。而从广义上讲,电子地图则是屏幕地图与能支持其显示的地图软件的总称。前者反映了电子地图的地图特征,后者则强调了电子地图的综合特性。随着电子地图技术的进一步发展,电子地图的应用范围也越来越广,它已经逐渐延伸到政治、经济、文化、教育、军事等众多领域,并发挥着越来越重要的作用,这已成为电子地图学发展的一个新趋势。随着航空技术发展迅速发展,飞机机载设备也日益增多,飞机的导航定位越来越重要,因此,航空电子地图的应用也越来越广泛。

航空电子地图着重表示了与航空有关的地形要素和航空要素,可供研究航空区域、判定飞机的位置、确定飞机的航迹和飞机的飞行方向以及实施空中指挥使用。它作为数据库,嵌入载体的存储设备之中,可作为通信、导航、制导与控制等系统的重要信号源和参考基准,共同完成系统的需求功能以及飞行任务。数字高程模型的建立及数据库的研制是航空电子的关键技术,航空电子地图在飞行计划的制定、航路规划、电子地图的坐标系统与转化以及飞行模拟器仿真研究等方面具有广阔的应用前景。在基于航空电子地图执行航路规划的设备中,现有技术中普遍采用多功能控制显示单元(Multifunction ControlDisplay Unit,简称MCDU)作为执行航路规划的设备,MCDU通常采用周边键加多功能键盘的物理按键作为输入媒介,通过将航路规划画面与物理输入按键进行配对与组合的方式来实现航路规划,这种以物理按键输入方式完成航路选择、编辑等操作,不能直观地对当前规划的航路信息进行预览,也不能实时排查航路的防撞信息,且操作复杂不便捷,效率较低、机动性较差,而设计一种基于触摸的图形化航路规划系统可以很好地解决这种操作困难,但是基于触摸的航路规划系统需要非常高效的航路地图渲染速度,常规的电子航图生成方法不再适用于对处理速率要求非常高的基于触摸显示的航路规划系统。

发明内容

本发明的目的在于克服现有技术中所存在的常规的航图生成方法不再适用于对处理速率要求非常高的基于触摸显示的航路规划系统,提供一种高效率的三维数字导航地球的生成方法及装置,飞行员只需输入简单的指令,即可为飞行员提供高效、简单、易操作的三维空间导航功能。

为了实现上述发明目的,本发明提供了以下技术方案:

一种高效率三维数字导航地球生成方法,包括:

接收用户输入的人机交互指令,根据所述人机交互指令对采用分层瓦片数据设计的三维数字导航地球的进行重新计算,重新计算所述三维数字导航地球的细节层瓦片数据,加载重新计算得到的细节层瓦片数据,并利用加载得到的细节层瓦片数据覆盖固定不变的背景层瓦片数据,对当前瓦片数据进行渲染得到用于实时航路导航的三维数字导航地球;

所述人机交互指令包括:拖动指令、缩放指令。

本发明所提供的三维数字导航地球采用背景层、细节层双层结构设计,其中,背景层固定不变,在接收到相应人机交互指令时只对细节层瓦片进行重新加载,再用重新加载的细节层瓦片数据覆盖背景层瓦片数据即可进行电子航图的更新,有效减少瓦片计算量,减少调用draw的次数,提高帧率,使得地图能够快速流畅的进行移动和缩放;同时该双层结构设计通过固定的背景层结构避免渲染过程中的地图缺块。

优选的,上述高效率三维数字导航地球生成方法中,所述背景层瓦片数据、细节层瓦片数据均以固定的规则进行编号:用layer表示瓦片数据的层级,用x、y表示瓦片数据的位置。

优选的,上述高效率三维数字导航地球生成方法中,当所述人机交互指令为拖动指令时,根据所述拖动指令对所述细节层瓦片数据进行重新计算,包括:

获取所述拖动指令的起始点与终止点,求取所述起始点与所述终止点在所述预置的三维数字导航地球上对应的第一三维映射点与第二三维映射点;

求取所述第一三维映射点对应的第一瓦片数据以及所述第二三维映射点对应的第二瓦片数据;根据所述第一瓦片数据、第二瓦片数据的相对位置关系对所述细节层瓦片数据进行整行或整列的移动操作,重新计算移动后的细节层瓦片数据的位置信息。

优选的,上述高效率三维数字导航地球生成方法中,当所述人机交互指令为缩放指令时,根据所述缩放指令对所述细节层瓦片数据进行重新计算,包括:

将初始细节层瓦片数据列表为第一表格,按照由外到内的顺序,将第一表格的数据依次取出,再按顺序填入第二表格的第一列、第二列...第n列,直到第一表格为空、第二表格被填满;以屏幕中心点对应的瓦片数据为中心,重新计算细节层的瓦片编号。

优选的,上述高效率三维数字导航地球生成方法中,所述背景层瓦片数据包括:16x16个瓦片数据;

所述细节层瓦片数据包括:15x15个瓦片数据。

优选的,上述高效率三维数字导航地球生成方法中,所述加载重新计算得到的细节层瓦片数据,包括:采用子线程来加载重新计算得到的细节层瓦片数据,采用一个队列容器来存储数据加载请求,数据加载结果通过回调函数返回;

当瓦片对象向线程队列加入任务时,队列容器任务数加一,当线程取出任务准备处理时,队列容器任务数减一;子线程处理任务时,判断瓦片对象在任务队列中的任务数是否为0,若不为0则直接返回空数据,若为0则处理这个请求,加载数据。

优选的,上述高效率三维数字导航地球生成方法中,所述对当前瓦片数据进行渲染得到用于实时航路导航的三维数字导航地球,包括:

对当前瓦片数据进行视锥体裁剪,将裁剪后的瓦片数据加入渲染列队进行渲染,得到用于实时航路导航的三维数字导航地球。

优选的,上述高效率三维数字导航地球生成方法中,在CPU中对所述当前瓦片数据进行视锥体裁剪,裁剪掉位于所述视锥体外的瓦片数据。

一种高效率三维数字导航地球生成系统,包括至少一个处理器,以及与所述至少一个处理器通信连接的存储器;所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述高效率三维数字导航地球生成方法。

与现有技术相比,本发明的有益效果:

1、本发明所提供的一种高效率的三维数字导航地球生成方法中,三维数字导航地球采用背景层、细节层双层结构设计,其中,背景层固定不变,在接收到相应人机交互指令时只对细节层瓦片进行重新加载,再用重新加载的细节层瓦片数据覆盖背景层瓦片数据即可,有效减少瓦片计算量,减少调用draw的次数,提高帧率,通过瓦片的高度复用机制,使得地图能够快速流畅的进行移动和缩放;同时该双层结构设计通过固定的背景层结构避免渲染过程中的地图缺块。

2、本发明所提供的一种高效率的三维数字导航地球生成方法在进行瓦片数据加载时,加入了一种任务计数机制,过滤掉中间请求,只处理瓦片最终状态时发出的请求,减少了对硬盘的读取次数,减少了数据加载量,提高了程序运行效率;在CPU中进行视锥体裁剪,从源头上剔除掉不可见的瓦片,减少了GPU性能的浪费;通过任务计数机制与三维数字导航地球的分层结构设计使得本发明对硬件的性能消耗少,帧率高,能流畅运行于基于触摸的航路规划操作系统,为基于触摸的航路系统提供高效的数据处理效率。

附图说明:

图1a为本发明示例性实施例的三维数字导航地球背景层瓦片数据部分示意图。

图1b为本发明示例性实施例的三维数字导航地球细节层瓦片数据部分示意图。

图1c为本发明示例性实施例的三维数字导航地球瓦片数据合成示意图。

图2为本发明示例性实施例的高效率的三维数字导航地球生成方法流程图。

图3为本发明示例性实施例的三维数字导航地球相机位置示意图。

图4为本发明示例性实施例的三维数字导航地球瓦片视锥体裁剪示意图。

具体实施方式

下面结合试验例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。

地图是显示在平面上的,因此需要将球面坐标转换为平面坐标,这个过程称为投影。本发明采用的web墨卡托投影是墨卡托投影的变种,在投影时不再把地球当作椭球体而是当作正球体以简化计算。经过web墨卡托投影后,三维地球变成一张平面地图,在不同的应用场景会对地图细节有不同的需求,因此要对地图进行分级。在0级时整个世界用1张256x256像素的图片表示,在1级时用4张256x256像素的图片表示,在2级时用16张256x256像素的图片表示,以此类推。每张256x256像素的图片称为瓦片,以左上角为原点对瓦片进行编号,x向右,y向下。按照web墨卡托投影方式,通过瓦片的layer、x、y可以求得瓦片四个顶点的经纬度坐标,再以地球半径为1建立世界坐标,在每个瓦片中建立17x17的网格,计算出每个顶点的世界坐标,将多个瓦片拼接在一起就得到三维数字导航地球。采用以瓦片为单位的计算方法进行三维数字导航地球的拼接,可以方便的使用各种图片资源。本发明中对瓦片的使用逻辑上分为2层。第一层称为背景层,背景层的级别固定为4级,由16x16个瓦片组成,在初始化时背景层创建完成后就不再进行更新,对地球的拖动和缩放操作都不会影响背景层。第二层称为细节层,级别是变化的,由15x15个瓦片组成。在对地球进行拖动和缩放操作后,细节层的瓦片会根据当前位置重新计算layer、x、y,得到重新计算后的细节层瓦片数据。图1a~图1c示出了本发明示例性实施例的固定不变的背景层瓦片数据、可重新计算的细节层瓦片数据(实际图案以每次计算得到的细节层瓦片数据为准),以及细节层瓦片数据覆盖背景层瓦片数据所得到的三维数字导航地球。

由于背景层总是会被绘制,为了消除由于背景层和细节层距离太小产生的闪烁问题,在绘制细节层时会关闭深度测试。

图2是本发明技术方案的主流程图。如图2所示,包含以下步骤:

S10:接收外部触摸事件。根据硬件平台不同可以接收鼠标事件或触摸事件。接收触摸事件时,可以接收单点和两点触摸事件。单点的触摸事件会对地图产生拖动操作改变地图显示的位置,两点的触摸事件会对地图产生缩放操作改变地图的显示级别。

S20:计算相机位置。接收到触摸事件后会重新计算相机位置,将接收到的触摸事件中的二维坐标以z为-1构建一个位于视锥体近平面上的三维点,以z为1构建一个位于视锥体远平面上的三维点。如图3所示,两个点可组成一个以近平面上的点为端点的射线,三维数字导航地球是一个半径为1的正球体,通过求射线与正球体的交点,可以得到一个三维点,这个点就是触摸的屏幕坐标点在三维数字导航地球上的映射点。通过这种方式,可以求得触摸开始时的三维点a,触摸结束时的三维点b,通过三维点a、三维点b可计算得到一个旋转轴和旋转角度,通过计算得到的旋转轴与旋转角度可以计算出新的相机位置,实现对三维数字导航地球的拖动操作。

S30:计算瓦片位置。本步骤处理两种情况:

步骤S31:情况1地图级别不变,按照步骤S20所述算法计算出屏幕中心点在地球上的三维映射点,然后根据地图瓦片编号规则计算出这个点所在瓦片的x、y。若x、y跟上一帧对比没有发生变化,则不会进行瓦片位置的更新,直接将现有瓦片放入渲染队列。若x、y跟上一帧对比发生了变化,则按下述规则重新调整瓦片结构:如前面所述,细节层瓦片是由15x15个瓦片组成,地图位置发生变化时,若上一帧屏幕中心对应瓦片编号为x、y,当前帧屏幕中心对应瓦片编号为x-1、y,即地图发生向右的拖动操作,则将细节层瓦片最右边一列移动到最左边,然后更新被移动列的瓦片编号,重新加载顶点和图片数据。同理可类推地图发生向左拖动、向上拖动、向下拖动时瓦片的移动规则。按照此规则更新数据,在地图发生拖动时就只需要重新加载少量数据,提高了地图加载速度减少性能消耗,对整列或整行的移动,仅仅是对内存中列表的操作,不需要创建新的瓦片对象,也不需要删除已有瓦片对象。

步骤S32:情况2地图级别发生变化。地图级别变化了意味着对于细节层15x15个瓦片对象,每个瓦片均需要重新计算layer、x、y,重新加载数据。若依次对细节层瓦片重新计算,则会直接漏出背景层,会看到地图突然变得很模糊,视觉效果不好。为了实现在地图进行放大时产生由模糊到清晰的视觉效果,本步骤按照以下规则重新调整瓦片结构:原15x15的瓦片列表称为表a,目标15x15瓦片列表称为表b,依次取出表a的第一行、最后一行、最左边列、最右边列,然后依次放入表b,放入时按列优先顺序先填满表b第一列,然后填满第二列,以此类推。第一次操作后表a变为13x13的列表,然后循环上面的取出操作直到表a为空。调整完瓦片的结构之后,以屏幕中心点对应的瓦片x、y为中心,重新计算细节层的瓦片编号,然后重新加载数据。

S40:向数据加载线程发送加载数据请求。为了在对地图进行拖动和缩放操作时界面能流畅响应,采用子线程来加载瓦片数据,采用一个队列容器来存储数据加载请求,数据加载结果通过回调函数返回。在地图进行快速拖动和缩放时会产生很多无用的中间数据请求,由于细节层瓦片是复用的不会有创建和删除操作,所以本步骤采用如下算法过滤掉这些中间请求:采用一个map容器key为int型,value为int型,key存储每个瓦片的指针,value存储这个瓦片在队列中的任务数。当瓦片对象向线程队列加入任务时,任务数加一,当线程取出任务准备处理时,任务数减一。线程处理任务时,判断瓦片对象在任务队列中的任务数是否为0,若不为0则直接返回空数据。若为0则处理这个请求,加载数据。通过任务计数机制,有效的过滤掉了瓦片产生的中间数据请求,只处理每个瓦片到达最终状态时发出的请求,有效的减少了对硬盘的读取次数,减少了数据加载量,提高了程序运行效率。

S50:对瓦片进行视锥体裁剪。如图4所示,视锥体由近平面、远平面及上下左右共6个面组成。Opengl es在进行渲染时,超出视锥体的顶点不会被渲染,但是这些最终会被丢弃的顶点已经参与了之前的所有计算,消耗了性能。为了减少这种对GPU性能的浪费,本步骤选择在CPU中进行视锥体的裁剪,对瓦片构建按坐标轴排列的包围盒,检测包围盒是否位于视锥体外,若位于视锥体外则瓦片被裁剪掉,被裁剪掉的瓦片不会传递顶点到GPU中,也不会被加入到渲染队列,从而减少了GPU性能的消耗。

S60:瓦片加入绘制队列。

在上述实施例中,本方法以瓦片为单位构建三维数字导航地球,能使用各种通用的图片资源,并且方便的进行图片资源的切换;对于相应的3D导航地球使用背景层、细节层双层结构;双层结构使得在任何时候都不会看到地图缺块,背景层固定不变,使得可以对背景层瓦片的绘制进行合并操作,如将16个瓦片合并成一个1024x1024像素的图片,从而可以减少调用draw的次数,提高帧率。而在绘制细节层瓦片时,采用瓦片复用方式,不创建新的瓦片,也不删除旧的瓦片,仅对细节层的15x15个瓦片进行复用。在地图拖动时移动瓦片的行和列,在地图缩放时一定的顺序进行重新排列,高度的瓦片复用机制使得可以在消耗较少性能的情况下实现地图缩放效果。在数据加载过程中,加入任务计数机制有效的过滤掉了快速移动和快速缩放时产生的中间请求,减少了对硬盘的读取次数,减少了数据加载量,提高了程序运行效率。在CPU中进行瓦片的视锥体裁剪,使得那些不可见的瓦片不会被加入到渲染队列,减少了对GPU性能的浪费,通过上述步骤,能够高效、快速的生成3D导航地球。

在本发明进一步的实施例中,还提供一种高效率的三维数字导航地球生成系统,即电子设备310(例如具备程序执行功能的计算机服务器),其包括至少一个处理器311,电源314,以及与所述至少一个处理器311通信连接的存储器312和输入输出接口313;所述存储器312存储有可被所述至少一个处理器311执行的指令,所述指令被所述至少一个处理器311执行,以使所述至少一个处理器311能够执行前述任一实施例所公开的方法;所述输入输出接口313可以包括显示器、键盘、鼠标、以及USB接口,用于输入输出数据;电源314用于为电子设备310提供电能。

本领域技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。

当本发明上述集成的单元以软件功能单元的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明具体实施方式的详细说明,而非对本发明的限制。相关技术领域的技术人员在不脱离本发明的原则和范围的情况下,做出的各种替换、变型以及改进均应包含在本发明的保护范围之内。

相关技术
  • 一种高效率三维数字导航地球生成方法及系统
  • 三维数字地球的构建方法以及三维数字地球系统
技术分类

06120112862342