一种离线地图数据处理方法及系统与流程

摘要: 本发明涉及数据处理,具体涉及一种离线地图数据处理方法及系统。背景技术:1、随着码表、运动手环等嵌入式设备的普及,用户对离线地图导航功能的需求日益增长;然而,此类...
一种离线地图数据处理方法及系统与流程

本发明涉及数据处理,具体涉及一种离线地图数据处理方法及系统。

背景技术:

1、随着码表、运动手环等嵌入式设备的普及,用户对离线地图导航功能的需求日益增长;然而,此类设备在存储内存、运行内存及芯片算力方面均处于较低水平,在有限的硬件资源下实现高效的地图数据存储与加载,已成为亟待解决的技术问题。

2、目前,现有方法中通常采用对标准地图格式文件进行整体压缩处理的方式,将整个地图文件一次性压缩为单一压缩包进行存储,并通过解压整个文件来获取地图数据,或者采用对地图数据进行有损压缩的方法以减少数据量;在地图数据读取时,需要将整个地图文件或大块数据段载入内存进行处理。

3、上述现有技术中,整体压缩方式导致解压时需要一次性将整个地图文件载入内存并完成全量解压,对设备内存和算力要求极高,在资源受限的嵌入式设备上难以实现;有损压缩方法虽然能够进一步减小数据量,但会降低地图数据精度,导致渲染时出现裂缝等视觉瑕疵,无法满足导航精度要求。

技术实现思路

1、针对相关技术中存在的不足之处,本发明的目的在于提供了一种离线地图数据处理方法及系统,以解决现有技术中因一次性压缩整个地图文件导致解压时对嵌入式设备内存与算力要求过高而无法实现地图加载,以及有损压缩导致地图精度降低、无法满足导航需求的技术问题。

2、本发明提供一种离线地图数据处理方法,包括:

3、数据获取步骤:获取原始地理数据文件,将所述原始地理数据文件转换标准地图文件;

4、数据拆分步骤:确定最小压缩数据单元,基于所述最小压缩数据单元对所述标准地图文件进行拆分,提取各最小压缩数据单元对应的单元数据;

5、数据压缩步骤:对各所述单元数据分别进行压缩,得到压缩数据,并记录各所述单元数据的第一字节长度以及所述压缩数据的第二字节长度;

6、数据重构步骤:对比所述第一字节长度与所述第二字节长度,得到对比结果,基于所述对比结果从所述单元数据和所述压缩数据中选取目标存储数据,并为所述目标存储数据添加标志位,将各所述目标存储数据及对应的标志位写入新建地图文件,并在所述新建地图文件中重建偏移索引;

7、数据加载步骤:获取经纬度信息,基于所述经纬度信息和所述偏移索引从所述新建地图文件中提取对应的目标存储数据及标志位,将提取出的目标存储数据加载至连续内存,在所述连续内存中基于所述标志位对所述目标存储数据进行解压缩,得到解压数据,基于所述解压数据进行地图渲染。

8、通过将标准地图文件拆分为最小压缩数据单元并分别进行压缩,并根据压缩前后字节长度的对比结果选取体积更小的数据作为目标存储数据,使得地图文件在保持数据完整性的前提下实现整体体积的最小化;

9、同时,通过在重构时为目标存储数据添加标志位并建立偏移索引,以及在加载时基于经纬度信息按需提取对应单元数据进行解压和渲染,使得码表端无需一次性加载或解压整个地图文件,从而在显著降低设备存储内存和运行内存占用的同时,提高了地图数据的加载速度和渲染流畅度,使码表等资源受限的嵌入式设备能够高效地使用离线地图。

10、本发明一些实施例中,所述数据重构步骤具体为:

11、若所述第二字节长度小于所述第一字节长度,则所述对比结果为压缩有效,基于所述对比结果选取所述压缩数据作为目标存储数据;

12、若所述第二字节长度大于或等于所述第一字节长度,则所述对比结果为压缩无效,基于所述对比结果选取所述单元数据作为目标存储数据。

13、通过将压缩后的字节长度与压缩前的字节长度进行比较,根据比较结果选取体积更小的数据作为目标存储数据,避免了对压缩效果不佳的数据块执行压缩而导致数据量反而增大的情况,确保每个数据单元均以最小体积存储,从而进一步优化了地图文件的整体压缩效率。

14、本发明一些实施例中,所述数据重构步骤还包括:

15、基于所述对比结果生成各所述目标存储数据的数据类型,基于所述数据类型和所述目标存储数据的字节长度生成标志位;

16、将各所述标志位分别添加至对应的所述目标存储数据中,将添加标志位后的各目标存储数据依次写入新建地图文件;

17、基于各目标存储数据的写入顺序及各目标存储数据的字节长度,生成各目标存储数据在所述新建地图文件中的文件偏移地址,基于各所述文件偏移地址构建所述偏移索引。

18、通过在目标存储数据中添加包含数据类型和字节长度信息的标志位,使每个单元数据均携带可被识别的属性信息,便于后续加载时快速识别数据类型并进行相应的解压处理,同时基于写入顺序和字节长度生成文件偏移地址并构建偏移索引,为各单元数据在文件中的位置提供了精确的记录,从而提高了数据定位的效率。

19、本发明一些实施例中,所述数据加载步骤具体为:

20、获取目标设备当前显示区域的经纬度信息以及地图缩放层级,基于所述经纬度信息和所述地图缩放层级计算覆盖当前显示区域所需的地图瓦片行列号;

21、基于所述地图瓦片行列号查找所述偏移索引,获取对应的文件偏移地址,基于所述文件偏移地址从所述新建地图文件中提取对应的目标存储数据及标志位。

22、通过获取当前显示区域的经纬度信息和地图缩放层级计算覆盖当前显示区域所需的地图瓦片行列号,并以行列号查找偏移索引获取文件偏移地址,使得码表端仅需提取当前视野范围内的目标存储数据进行解压和渲染,无需加载无关区域的地图数据,从而减少了数据加载量和io操作时间,提高了地图的响应速度。

23、本发明一些实施例中,所述地图瓦片行列号的计算模型具体为:

24、

25、其中,为地图瓦片行列号的横坐标;为所述经纬度信息中的当前经度;为地图缩放层级。

26、通过将经度与地图瓦片横坐标进行数学映射,使任意经度位置均可精确转换为对应的瓦片横坐标,从而准确锁定当前视野在水平方向所覆盖的瓦片范围,为从偏移索引中精确定位并提取对应的目标存储数据提供了计算基础。

27、本发明一些实施例中,所述地图瓦片行列号的计算模型还包括:

28、

29、其中,为地图瓦片行列号的纵坐标;为所述经纬度信息中的当前纬度。

30、通过将纬度与地图瓦片纵坐标进行数学映射,使任意纬度位置均可精确转换为对应的瓦片纵坐标,从而准确锁定当前视野在垂直方向所覆盖的瓦片范围,结合横坐标共同确定当前显示区域所需加载的瓦片集合,确保仅提取视野内的数据,避免加载无关数据导致的内存浪费。

31、本发明一些实施例进一步提供一种离线地图数据处理系统,包括:

32、数据获取模块,获取原始地理数据文件,将所述原始地理数据文件转换标准地图文件;

33、数据拆分模块,确定最小压缩数据单元,基于所述最小压缩数据单元对所述标准地图文件进行拆分,提取各最小压缩数据单元对应的单元数据;

34、数据压缩模块,对各所述单元数据分别进行压缩,得到压缩数据,并记录各所述单元数据的第一字节长度以及所述压缩数据的第二字节长度;

35、数据重构模块,对比所述第一字节长度与所述第二字节长度,得到对比结果,基于所述对比结果从所述单元数据和所述压缩数据中选取目标存储数据,并为所述目标存储数据添加标志位,将各所述目标存储数据及对应的标志位写入新建地图文件,并在所述新建地图文件中重建偏移索引;

36、数据加载模块,获取经纬度信息,基于所述经纬度信息和所述偏移索引从所述新建地图文件中提取对应的目标存储数据及标志位,将提取出的目标存储数据加载至连续内存,在所述连续内存中基于所述标志位对所述目标存储数据进行解压缩,得到解压数据,基于所述解压数据进行地图渲染。

37、本发明一些实施例中,所述数据重构模块具体用于:

38、若所述第二字节长度小于所述第一字节长度,则所述对比结果为压缩有效,基于所述对比结果选取所述压缩数据作为目标存储数据;

39、若所述第二字节长度大于或等于所述第一字节长度,则所述对比结果为压缩无效,基于所述对比结果选取所述单元数据作为目标存储数据。

40、本发明一些实施例中,所述数据重构模块还用于:

41、基于所述对比结果生成各所述目标存储数据的数据类型,基于所述数据类型和所述目标存储数据的字节长度生成标志位;

42、将各所述标志位分别添加至对应的所述目标存储数据中,将添加标志位后的各目标存储数据依次写入新建地图文件;

43、基于各目标存储数据的写入顺序及各目标存储数据的字节长度,生成各目标存储数据在所述新建地图文件中的文件偏移地址,基于各所述文件偏移地址构建所述偏移索引。

44、本发明一些实施例中,所述数据加载模块具体用于:

45、获取目标设备当前显示区域的经纬度信息以及地图缩放层级,基于所述经纬度信息和所述地图缩放层级计算覆盖当前显示区域所需的地图瓦片行列号;

46、基于所述地图瓦片行列号查找所述偏移索引,获取对应的文件偏移地址,基于所述文件偏移地址从所述新建地图文件中提取对应的目标存储数据及标志位。