一种基于全球网格划分的地图要素注记显示方法及系统转让专利

申请号 : CN202211691063.7

文献号 : CN115661396B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐伟张臻刘辰炜戴高乐汪静

申请人 : 中国电子科技集团公司第二十八研究所

摘要 :

本发明公开了一种基于全球网格划分的地图要素注记显示方法及系统。所述方法包括:对全球地理空间划分成多层级网格并对每个网格进行编码;将地图上各要素注记按网格进行分层分块并按网格编码,保存在本地数据库中;采用多级缓存并行渲染技术在显示设备上进行显示。本发明通过对全球网格的编码可以有效提升地图要素注记的检索效率,通过并行渲染技术可以在嵌入式设备上实现高性能的渲染,本发明克服了单一嵌入式平台上地图要素注记显示与多操作系统平台之间的矛盾,单个数据库文件可以方便地在不同平台间进行移植。

权利要求 :

1.一种基于全球网格划分的地图要素注记显示方法,其特征在于,包括以下步骤:S1、根据不同比例尺将全球地图地理空间划分为不同的显示层,每一层地图地理空间以经度方向和纬度方向划分若干个网格,同一层各个网格的经纬度范围相同,对每个网格按其所在层级和在层级中的块序号进行唯一可识别编码;

S2、基于地图的点线面要素数据集获取要素注记的包围盒,根据全球网格划分编码获取最小能包含该包围盒的网格所在层级;以当前层级为起始计算层级,依次计算要素注记在其他比例尺层级下网格,计算后结果进行去重,得到最后要素编码集合;根据要素编码集合建立数据空间索引,将地图要素地理数据和注记信息存入数据库中;

S3、根据地图比例尺以及绘制视口范围获取当前层级以及对应网格范围,通过数据空间索引值从数据库中检索地图要素相应信息,对地图要素注记进行压盖处理;将绘制好的位图放入缓存队列中,并最终从缓存队列渲染到显示设备上;

其中,所述步骤S1中,全球地图地理空间范围为经度:‑180 180,纬度:‑90 90,将全球~ ~空间按不同比例尺划分为L层,将第l层全球范围划分为 个经纬度范围差值相同的网格, ,第l层中每个网格的经度范围为 ,纬度范围为 ,其中,对于某一经纬度(Lng, Lat)点在第l层的网格所对应的行号r和列号c为:,

第l层网格对应的行列号与第l‑1层网格对应的行列号以及经纬度范围差值存在以下关系:,

Dl为第l层经纬度范围差值。

2.根据权利要求1所述的方法,其特征在于,所述步骤S2中,基于地图的点线面要素数据集获取要素注记的包围盒,根据全球网格划分编码获取最小能包含该包围盒的网格所在层级包括:对于一个地图要素,根据注记绘制的位置、字体、字号、偏移量获得外接包围盒,选取外接包围盒的左上点PtLT和右下点PtRB,获取两个点所在第i层网格的行列号分别为(ri,LT, ci,LT)和(ri,RB, ci,RB),判断外接包围盒与当前层级网格是否相交,若相交则获取两个点在第i‑1层网格的行列号分别为(ri‑1,LT, ci‑1,LT)和(ri‑1,RB, ci‑1,RB),判断外接包围盒与上一层级网格是否相交,直至两点连线在唯一网格内。

3.根据权利要求2所述的方法,其特征在于,判断外接包围盒与当前层级网格是否相交包括:计算相交系数 ,若 ,则外接包围盒与当前层级网格相交。

4.根据权利要求1所述的方法,其特征在于,所述步骤S2中,以当前层级为起始计算层级,依次计算要素注记在其他比例尺层级下网格,计算后结果进行去重,得到最后要素编码集合包括:S21、获取注记a外接包围盒四个点中每两个相邻点Ptk和Ptk+1所在j层网格的行列号(rj,k, cj,k)和(rj,k+1, cj,k+1),两点所在网格放入集合Gj,a中;

S23、判断两点连线作为对角线的外接包围盒与当前层级网格是否相交,若相交,则判断(rj,k, cj,k)和(rj,k+1, cj,k+1)之间所有的网格与两点连线是否相交,相交网格放入集合Gj,a中,对集合Gj,a进行去重处理;

S23、计算集合Gj,a中所有网格的编码,得到注记a在第l层最终编码集合Codej,a;

S24、根据第j层中的网格集合Gj,a,递归遍历下一层j+1中对应的子网格Gj+1,a,执行步骤S21至S23的操作,直至第层集合GL,a;并遍历计算上一层j‑1,直至第1层集合G1,a。

5.根据权利要求1所述的方法,其特征在于,所述步骤S2中,将地图要素地理数据和注记信息存入数据库中包括:计算第L层中注记a的网格编码集合CodeL,a是否与其他注记b编码集合CodeL,b存在压盖,统计所有注记的压盖数,根据注记的压盖数从大到小的顺序依次将地图要素地理数据和注记信息存入数据库。

6.根据权利要求1所述的方法,其特征在于,所述步骤S3中,根据当前显示设备的分辨率创建两块同等大小的缓存位图作为主备位图,建立对应的主、备任务机制:创建辅助线程,将注记绘制阶段放入辅助线程中使用空闲的位图进行绘制,同时主线程选取已绘制好的位图进行融图渲染,其中注记绘制阶段先根据地图比例尺以及绘制视口范围获取当前层级l以及对应网格范围,根据网格范围获取注记绘制队列,对队列中注记依次在屏幕空间寻找到合适的区域放置。

7.一种基于全球网格划分的地图要素注记显示系统,其特征在于,包括:全球网络划分模块,用于根据不同比例尺将全球地图地理空间划分为不同的显示层,每一层地图地理空间以经度方向和纬度方向划分若干个网格,同一层各个网格的经纬度范围相同,对每个网格按其所在层级和在层级中的块序号进行唯一可识别编码;

要素注记编码模块,用于基于地图的点线面要素数据集获取要素注记的包围盒,根据全球网格划分编码获取最小能包含该包围盒的网格所在层级;以当前层级为起始计算层级,依次计算要素注记在其他比例尺层级下网格,计算后结果进行去重,得到最后要素编码集合;根据注记对应的要素初始位置的网格编码建立数据空间索引,将地图要素地理数据和注记信息存入数据库中;

要素注记绘制模块,用于根据地图比例尺以及绘制视口范围获取当前层级以及对应网格范围,通过数据空间索引值从数据库中检索地图要素相应信息,对地图要素注记进行压盖处理;将绘制好的位图放入缓存队列中,并最终从缓存队列渲染到显示设备上;

其中,全球地图地理空间范围为经度:‑180 180,纬度:‑90 90,将全球空间按不同比例~ ~尺划分为L层,将第l层全球范围划分为 个经纬度范围差值相同的网格, ,第l层中每个网格的经度范围为 ,纬度范围为 ,其中 ,对于某一经纬度(Lng, Lat)点在第l层的网格所对应的行号r和列号c为:

第l层网格对应的行列号与第l‑1层网格对应的行列号以及经纬度范围差值存在以下关系:,

Dl为第l层经纬度范围差值。

8.一种计算机设备,其特征在于,包括:

一个或多个处理器;

存储器;以及

一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述程序被处理器执行时实现如权利要求1‑6中任一项所述的基于全球网格划分的地图要素注记显示方法的步骤。

9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1‑6中任一项所述的基于全球网格划分的地图要素注记显示方法的步骤。

说明书 :

一种基于全球网格划分的地图要素注记显示方法及系统

技术领域

[0001] 本发明涉及地图信息处理技术领域,具体涉及一种适用于不同操作系统平台的地图要素注记显示方法及系统。

背景技术

[0002] 随着嵌入式设备的不断发展,嵌入式地图已快速融入到人们的工作和生活中。但由于嵌入式设备平台种类多,如常用的有基于Android、Linux、HarmonyOS等移动嵌入式设备,不常见的基于VxWorks、天脉等机载嵌入式设备等,各平台之间存在软硬件性能、异构地理数据资源读取方式、图形显示方式等诸多方面的差异性,同一份地图数据在不同平台之间的移植困难大。此外,传统上对于地图数据的检索方法主要是采用地理空间关系运算,在数据量大的情况下检索效率较低,这在计算能力有限的嵌入式平台上尤为明显。

发明内容

[0003] 发明目的:本发明的目的是提供一种基于全球网格划分的地图要素注记显示方法及系统,方便地图要素注记在不同操作系统平台的嵌入式设备间进行快速移植、加载及无压盖渲染。
[0004] 技术方案:第一方面,一种基于全球网格划分的地图要素注记显示方法,包括以下步骤:
[0005] S1、根据不同比例尺将全球地图地理空间划分为不同的显示层,每一层地图地理空间以经度方向和纬度方向划分若干个网格,同一层各个网格的经纬度范围相同,对每个网格按其所在层级和在层级中的块序号进行唯一可识别编码;
[0006] S2、基于地图的点线面要素数据集获取要素注记的包围盒,根据全球网格划分编码获取最小能包含该包围盒的网格所在层级;以当前层级为起始计算层级,依次计算要素注记在其他比例尺层级下网格,计算后结果进行去重,得到最后要素编码集合;根据注记对应的要素初始位置的网格编码建立数据空间索引,将地图要素地理数据和注记信息存入数据库中;
[0007] S3、根据地图比例尺以及绘制视口范围获取当前层级以及对应网格范围,通过数据空间索引值从数据库中检索地图要素相应信息,对地图要素注记进行压盖处理;将绘制好的位图放入缓存队列中,并最终从缓存队列渲染到显示设备上。
[0008] 优选地,所述步骤S1中,全球地图地理空间范围为经度:‑180 180,纬度:‑90 90,~ ~将全球空间按不同比例尺划分为L层,将第l层全球范围划分为 个经纬度范围差值相同的网格, ,第l层中每个网格的经度范围为 ,纬度范围为 ,其中
,对于某一经纬度(Lng, Lat)点在第l层的网格所对应的行号r和列号c为:
[0009]
[0010] 第l层网格对应的行列号与第l‑1层网格对应的行列号以及经纬度范围差值存在以下关系:
[0011]
[0012] Dl为第l层经纬度范围差值。
[0013] 优选地,所述步骤S2中,基于地图的点线面要素数据集获取要素注记的包围盒,根据全球网格划分编码获取最小能包含该包围盒的网格所在层级包括:
[0014] 对于一个地图要素,根据注记绘制的位置、字体、字号、偏移量获得外接包围盒,选取外接包围盒的左上点PtLT和右下点PtRB,获取两个点所在第i层网格的行列号分别为(ri,LT, ci,LT)和(ri,RB, ci,RB),判断外接包围盒与当前层级网格是否相交,若相交则获取两个点在第i‑1层网格的行列号分别为(ri‑1,LT, ci‑1,LT)和(ri‑1,RB, ci‑1,RB),判断外接包围盒与上一层级网格是否相交,直至两点连线在唯一网格内。
[0015] 优选地,判断外接包围盒与当前层级网格是否相交包括:计算相交系数,若 ,则外接包围盒与当前层级网格相交。
[0016] 优选地,所述步骤S2中,以当前层级为起始计算层级,依次计算要素注记在其他比例尺层级下网格,计算后结果进行去重,得到最后要素编码集合包括:
[0017] S21、获取注记a外接包围盒四个点中每两个相邻点Ptk和Ptk+1所在j层网格的行列号(rj,k, cj,k)和(rj,k+1, cj,k+1),两点所在网格放入集合Gj,a中;
[0018] S23、判断两点连线作为对角线的外接包围盒与当前层级网格是否相交,若相交,则判断(rj,k, cj,k)和(rj,k+1, cj,k+1)之间所有的网格与两点连线是否相交,相交网格放入集合Gj,a中,对集合Gj,a进行去重处理;
[0019] S23、计算集合Gj,a中所有网格的编码,得到注记a在第l层最终编码集合Codej,a;
[0020] S24、根据第j层中的网格集合Gj,a,递归遍历下一层j+1中对应的子网格Gj+1,a,执行步骤S21至S23的操作,直至第L层集合GL,a;并遍历计算上一层j‑1,直至第1层集合G1,a。
[0021] 优选地,所述步骤S2中,将地图要素地理数据和注记信息存入数据库中包括:
[0022] 计算第L层中注记a的网格编码集合CodeL,a是否与其他注记b编码集合CodeL,b存在压盖,统计所有注记的压盖数,根据注记的压盖数从大到小的顺序依次将地图要素地理数据和注记信息存入数据库。
[0023] 优选地,所述步骤S3中,根据当前显示设备的分辨率创建两块同等大小的缓存位图作为主备位图,建立对应的主、备任务机制:创建辅助线程,将注记绘制阶段放入辅助线程中使用空闲的位图进行绘制,同时主线程选取已绘制好的位图进行融图渲染,其中注记绘制阶段先根据地图比例尺以及绘制视口范围获取当前层级l以及对应网格范围,根据网格范围获取注记绘制队列,对队列中注记依次在屏幕空间寻找到合适的区域放置。
[0024] 第二方面,一种基于全球网格划分的地图要素注记显示系统,包括:
[0025] 全球网络划分模块,用于根据不同比例尺将全球地图地理空间划分为不同的显示层,每一层地图地理空间以经度方向和纬度方向划分若干个网格,同一层各个网格的经纬度范围相同,对每个网格按其所在层级和在层级中的块序号进行唯一可识别编码;
[0026] 要素注记编码模块,用于基于地图的点线面要素数据集获取要素注记的包围盒,根据全球网格划分编码获取最小能包含该包围盒的网格所在层级;以当前层级为起始计算层级,依次计算要素注记在其他比例尺层级下网格,计算后结果进行去重,得到最后要素编码集合;根据注记对应的要素初始位置的网格编码建立数据空间索引,将地图要素地理数据和注记信息存入数据库中;
[0027] 要素注记绘制模块,用于根据地图比例尺以及绘制视口范围获取当前层级以及对应网格范围,通过数据空间索引值从数据库中检索地图要素相应信息,对地图要素注记进行压盖处理;将绘制好的位图放入缓存队列中,并最终从缓存队列渲染到显示设备上。
[0028] 第三方面,本发明还提供一种计算机设备,包括:
[0029] 一个或多个处理器;
[0030] 存储器;以及
[0031] 一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述程序被处理器执行时实现如本发明第一方面所述的基于全球网格划分的地图要素注记显示方法的步骤。
[0032] 第四方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明第一方面所述的基于全球网格划分的地图要素注记显示方法的步骤。
[0033] 有益效果:本发明从Android、Linux、VxWorks等不同操作系统平台的地图显示入手,通过对全球地理空间范围进行网格划分,为网格块内的地理数据建立索引编码,并将地图要素标注信息以空间网格索引的方式存入数据库文件中,方便在各平台之间进行移植,通过网格索引提升地图要素注记信息的检索效率,同时通过并行渲染方式有效地提高地图显示效率,从而提高整个嵌入式显示的实时性。

附图说明

[0034] 图1是本发明方法的处理流程示意图;
[0035] 图2是全球地理空间划分为四层网格的各层剖分示意图;
[0036] 图3是网格编码示意图;
[0037] 图4是要素注记八个方位及其对应的优先级示意图;
[0038] 图5是要素注记根据编码处理压盖前后绘制示意图;
[0039] 图6是双缓存并行渲染流程图。

具体实施方式

[0040] 下面结合附图对本发明的技术方案作进一步说明。
[0041] 参照图1,本发明所述的基于全球网格划分的地图要素注记显示方法,包括以下步骤:
[0042] 步骤1,全球网格剖分:根据不同比例尺将全球地图划分为不同的显示层,每一层地图地理空间以经度方向和纬度方向划分若干个网格块,网格块的经纬度范围相同,对每个网格按其层级和所在层级的块序号进行编码。
[0043] 步骤2,地图要素注记按网格编码入库:对于地图的点线面要素标注,计算要素注记的包围盒,根据包围盒首先获取大小被包含在一个网格内的网格层级;以当前层级为起始计算层级,依次计算要素在其它层级下网格,计算后结果进行去重,得到最后要素编码;根据要素编码建立数据空间索引,将地图要素地理数据和注记信息存入本地数据库中。
[0044] 步骤3,要素注记绘制:根据地图比例尺以及绘制视口范围获取当前层级以及对应网格范围,通过数据空间索引值从数据库中检索地图要素相应信息,对地图要素注记进行压盖处理。将绘制好的位图放入缓存队列中,本发明采用双缓存并行渲染方式,即创建两块与显示设备同等大小的缓存空间以及建立对应的主备机制。最终渲染任务从缓存队列中取出已绘制号注记的位图,并最终渲染到显示设备上,辅助线程用另一块缓存空间绘制注记信息,如此循环往复。
[0045] 下面具体介绍各个步骤的主要流程:
[0046]  1、全球网格剖分
[0047] 全球地图地理空间范围为经度:‑180 180,纬度:‑90 90,将全球空间按不同比例~ ~尺划分为L层,本发明中L最大为15,将第l层全球范围划分为 个经纬度范围差值相同的网格 ,第l层差值为Dl。第l层中每个网格的经度范围Level(l, Lng)为360/ml,纬度范围Level(l, Lat)为180/nl,其中 。对于某一经纬度(Lng,Lat)点在第l层的网格所对应的行号r和列号c为:
[0048]
[0049] 第l层网格对应的行列号与第l‑1层网格对应的行列号以及经纬度范围差值存在以下关系:
[0050]
[0051] 图2示出了全球地理空间划分为四层网格的各层剖分示意图,L=4,如图2中的(2a)所示,在第一层网格中,l=1,nl=1,ml=2,全球范围(经度:‑180~180,纬度:‑90~90)被划分为一行两列的大小相等的网格,行列号从0开始计数,每个网格的经纬度范围均为180;如图2中的(2b)所示,在第二层中,l=2,nl=2,ml=4,将全球范围划分为两行四列共8个二层网格,每个二层网格的经纬度范围均为90;如图2中的(2c)所示,在第三层中,l=3,nl=4,ml=8,将全球范围划分为四行八列共32个三层网格,每个三层网格的经纬度范围均为45;如图2中的(2d)所示,在第四层中,l=4,nl=8,ml=16,将全球范围划分为八行十六列共128个四层网格,每个四层网格的经纬度范围均为22.5。
[0052] 第l 层网格对应的最大行列号为:
[0053]
[0054] 由于L最大为15,当L=15时,最大行号为215‑1=16384,最大列号为215=32768。可知最大行列号为5位数,本发明采用按二进制数保存层行列号方法,对于某个5位数,每位上最大数值为9,9为十进制数,可用4位二进制数表示,即  ,需要4 X 5=20位二进制数保存该5位数。对某个数值Num,第k位数转换为二进制数后需左移  位保存,计算公式为:
[0055]
[0056] 如图3中(3a)所示为本发明中数值16384二进制数保存方式。
[0057] 考虑到层号最大为15,二进制编码为1111,需要4位二进制数保存,则 数值采用64位长整型保存,前20位(1~20位)保存列号数值Codec,中间20位(21~40位)保存行号数值Coder即将Coder左移20位,后4位(41~44位)保存层号,其余位上赋值为0即最终结果与八进制数值0xFFFFFFFFFFF执行并运算;对网格按层行列号进行编码的赋值计算公式为:
[0058]
[0059] 如图3中(3b)所示为网格 的编码值。
[0060]  2、地图要素注记按网格编码入库
[0061] 根据要素注记信息,计算要素注记在每层网格编码,并根据编码建立数据索引,将地图要素注记信息存入本地数据库中。具体包括:
[0062] 2.1)针对某个地图要素,根据注记绘制的位置、字体、字号、偏移量等获得外接包围盒ItemBox,获取外接包围盒的最长边BoxMaxL,若 ,同时 ,则理论能完全包含要素的最小网格层级为i。
[0063] 选取外接包围盒的左上和右下两个点PtLT和PtRB,两个点的所在第i层网格的行列号分别表示为: ,判断外接包围盒是否被当前层级的某个网格包含,关系S(i 也称为相交系数)为:
[0064]
[0065] 若 ,表明两点连线不在唯一网格内,即不为包含关系,为相交关系,则计算与上一层网格是否相交Si‑1,直至 即 且 ,其中 ,则实际能完全包含的最小网格层级为j。
[0066] 2.2)根据步骤2.1获得的最小网格层级为j,在第j层网格下,遍历注记a外接包围盒中相邻两个点ItemPointk和ItemPointk+1,计算两点与网格的关系,判断出要素在这一层级下与其相交的所有网格集合Gj,a,其中重复出现的网格只保留一个,计算过程如下:
[0067] 步骤一、计算注记a外接包围盒四个点中每两个相邻点的所在j层网格的行列号分别表示为: ,将两点所在的网格放入集合Gj,a中;
[0068] 步骤二、计算两点连线作为对角线的外接包围盒与当前层级网格是否相交:
[0069] ;
[0070] 若 ,表明两点连线不在唯一网格内,即不为包含关系,则执行步骤三;
[0071] 步骤三、判断 之间网格行号满足 或 ,列号满足 或 的所有网格与两点连线是否相交,相交网格
放入集合Gj,a中,对集合Gj,a进行去重处理。
[0072] 步骤四,计算集合Gj,a中所有网格的编码,假设集合Gj,a中共有t个网格,得到注记a在第l层最终编码集合Codej,a,计算公式如下:
[0073]
[0074] 2.3)根据j层中的网格集合Gj,a,递归遍历下一层j+1中对应的子网格Gj+1,a,执行步骤2.2,直至L层集合GL,a;遍历计算上一层j‑1,由于j层网格的层号与列号为j‑1层的两倍,可直接带入计算,不需执行步骤2.2,计算公式为:
[0075] ,并对集合Codej‑1,a进行去重处理,直至第1层集合G1,a。
[0076] 2.4)根据注记对应的要素初始位置的网格编码建立空间索引,将地图要素注记信息按优先级存入本地数据库中。
[0077] 本发明采用的策略为:根据要素注记的存储顺序,在绘制过程中,要素注记被依次放置,如果一个注记无法在屏幕空间寻找到合适的区域放置,就不被渲染,继续处理下一个注记。为尽可能多的放置注记,需要计算出每层网格中注记的压盖数,压盖数越大,表明该注记就会与更多的其它注记存在压盖关系,这类注记越难找到合适的区域放置,因此优先存储此类注记。由于层级最高的L层注记网格最多,注记的压盖数也最多,因此可直接计算L层的压盖数作为注记的压盖数。
[0078] 步骤一、计算最大层L层中注记a的网格编码集合CodeL,a是否与其它注记b编码集合CodeL,b存在压盖,统计所有注记的压盖数,是否压盖的计算公式为:
[0079]
[0080] 最终结果Q不为空表明注记a与注记b编码集合之间有交集,即存在压盖,注记a与注记b的压盖数加1。以此方法,计算所有注记的压盖数。
[0081] 步骤二、根据注记的压盖数从大到小依次入库,本发明实施例中采用Sqlite本地数据库。数据库中字段除包含注记的位置、字体、字号、偏移量等基本信息外,还具备各层初始位置网格编码、压盖数、注记包围盒等信息。
[0082] 3、要素注记绘制
[0083] 根据当前嵌入式显示设备的分辨率创建两块同等大小的缓存位图作为主备位图,建立对应的主、备任务机制:创建辅助线程,将注记绘制阶段放入辅助线程中使用空闲的位图进行绘制,同时主线程选取已绘制好的位图进行融图渲染。
[0084]  3.1)获取当前层级以及对应网格范围
[0085] 根据当前地图比例尺获取当前网格层级l。
[0086] 计算在网格层级l下当前嵌入式设备视口显示区域的视口左上PointLT、左下PointLB、右上PointRT、右下PointRB四个经纬度点中最小编码值的左下S1、最大编码值的右上S2两个经纬度 点所属网格编码 (i∈{1,2}):
[0087]
[0088] 3.2)根据当前视口编码 和  ,在辅助线程中从Sqlite本地数据库中查找注记的初始位置网格编码 满足条件的注记a。
[0089] 通过编码值 获得对应的层行列号二进制数值公式为:
[0090]
[0091] 根据上述公式获得 、 和 的行列号对应的二进制数进行比较:
[0092]
[0093] 当F>0时,表明注记a与当前视口相交或包含,其需要绘制,按压盖数大小依次放入可绘制队列{Queue}。
[0094] 3.3)注记压盖处理。在辅助线程中选取可用的缓存位图、从绘制队列{Queue}中依次取出注记的位置编码信息以及注记包围盒。注记一旦与屏幕空间中已放置注记存在压盖现象,则需要在屏幕空间寻找到合适的区域放置;将注记的位置相对与要素位置分为上、下、左、右、左上、左下、右上、右下八个方位,如果注记存在压盖需要重新选取位置时,注记位置选取优先级采用依次选取右、右下、右上、左、左下、左上、下、上的策略,如图4所示,图4中的(4a)示出了注记相对要素位置的八个方位,图4中的(4b)示出了注记八个方位对应的优先级取值。根据在八个方位的编码信息,重新计算网格编码集合以及是否与其他已放置好位置的注记存在压盖,若八个方位都没有合适的区域,则该注记丢弃,不进行绘制,若可绘制,则在缓存位图进行绘制。注记之间是否压盖可根据2.4)中步骤一的压盖计算过程进行判断。如图5中的(5a)所示为注记压盖处理前的注记位置,其中注记A与注记B存在压盖,注记B的方位为右方位,重新选取右下方位,发现与其它注记不存在压盖,则注记B的方位可选择为右下进行绘制,如图5中的(5b)所示。
[0095] 3.4)融图渲染。主线程从缓存位图空间中选取已绘制好的位图在当前显示设备上进行融图操作,主线程定时执行融图渲染操作,并行渲染处理流程如图6所示。
[0096] 本发明还提供一种基于全球网格划分的地图要素注记显示系统,包括:
[0097] 全球网络划分模块,用于根据不同比例尺将全球地图地理空间划分为不同的显示层,每一层地图地理空间以经度方向和纬度方向划分若干个网格,同一层各个网格的经纬度范围相同,对每个网格按其所在层级和在层级中的块序号进行唯一可识别编码;
[0098] 要素注记编码模块,用于基于地图的点线面要素数据集获取要素注记的包围盒,根据全球网格划分编码获取最小能包含该包围盒的网格所在层级;以当前层级为起始计算层级,依次计算要素注记在其他比例尺层级下网格,计算后结果进行去重,得到最后要素编码集合;根据注记对应的要素初始位置的网格编码建立数据空间索引,将地图要素地理数据和注记信息存入数据库中;
[0099] 要素注记绘制模块,用于根据地图比例尺以及绘制视口范围获取当前层级以及对应网格范围,通过数据空间索引值从数据库中检索地图要素相应信息,对地图要素注记进行压盖处理;将绘制好的位图放入缓存队列中,并最终从缓存队列渲染到显示设备上。
[0100] 应理解,本发明实施例中的基于全球网格划分的地图要素注记显示系统可以实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可参照上述实施例中的相关描述,此处不再赘述。
[0101] 本发明还提供一种计算机设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述程序被处理器执行时实现如上所述的基于全球网格划分的地图要素注记显示方法的步骤。
[0102] 本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的基于全球网格划分的地图要素注记显示方法的步骤。
[0103] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0104] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0105] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0106] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。