一种机载矢量地图数据处理方法
文献发布时间:2023-06-19 18:34:06
技术领域
本发明涉及机载地图数据处理技术领域,具体涉及一种机载矢量地图数据处理方法。
背景技术
随着数字地图的广泛应用,机载显示设备的地图应用需求不断提高,在机载嵌入式设备中的地图不同于其他系统,其具有一定的独特性,由于系统性能和存储空间的限制,对于地图数据存储量要求更为严苛,而且对地图渲染效率提出更高要求。针对机载嵌入式设备性能低与存储空间小等问题,如何通过压缩矢量地图数据的存储量,合理设计矢量地图数据存储结构,来提高矢量地图渲染效率,是机载数字地图技术发展需要解决的重要问题。
发明内容
有鉴于此,本申请实施例提供一种机载矢量地图数据处理方法,在嵌入式设备性能和存储空间限制条件下,能够将矢量地图数据快速读取与加载,并实时渲染和显示矢量地图,从而提高矢量地图运行效率及显示帧率。
本申请实施例提供以下技术方案:一种机载矢量地图数据处理方法,包括如下步骤:
步骤一、矢量数据预处理:
对不同比例尺的矢量地图数据进行数据预处理,包括数据收集、提取、合并与分类,根据不同的地理要素图层进行分类,存储为标准化的矢量地图数据;
步骤二、矢量瓦片创建:
构建瓦片金字塔模型,对分层瓦片进行编码,然后通过切片工具对矢量地图数据进行瓦片化处理,生成瓦片数据集,根据设计的矢量瓦片数据组织存储结构,将矢量瓦片数据分层分类存储为二进制矢量文件并输出;
步骤三、矢量地图生成:
生成图层配置文件,将输出的矢量二进制矢量文件和所述图层配置文件加载至内存中,根据显示的地理范围获取相邻区域的矢量瓦片数据并建立四叉树索引,通过位置信息查询四叉树索引获取矢量瓦片数据,并对矢量瓦片数据进行渲染,最终在机载显示设备中生成矢量地图。
根据一种实施例,所述的生成瓦片数据集的过程具体包括:
根据建立的瓦片金字塔模型划分经纬度网格,根据经纬度网格对矢量数据进行层级划分和切片,并进行编码规则设计,对分层瓦片进行编码,再通过切片工具对点、线、面矢量数据进行简化及裁剪,并存储为相应编码的瓦片数据集。
根据一种实施例,所述矢量瓦片数据组织存储结构包括文件头和数据区两部分,所述文件头包括切片数量、切片列号、切片行号、切片偏移位置、切片大小;所述数据区包括每个切片文件的地理要素编码、要素数目、点坐标、索引值。
根据一种实施例,将输出的二进制矢量文件和所述图层配置文件加载至内存中的过程具体包括:
在配置文件生成后,将配置文件加载入内存中,读取配置文件中的图层属性及样式存储到数组中,再通过地理范围和需要绘制的图层要素编码进行矢量数据的查找读取与加载,获取到图层要素类型及文件前缀与后缀名组合,根据文件名组合从二进制矢量文件中去查找获取显示范围内的每一层级的切片的要素类型数据,同时得到图层要素的绘制样式,调用该要素类型数据进行地图绘制。
根据一种实施例,所述图层配置文件包括地理图层要素描述、要素编码、要素类型、所在文件名前缀、所在文件名后缀、缩放级别、字体、颜色、线宽。
根据一种实施例,通过位置信息查询四叉树索引获取矢量瓦片数据的过程具体包括:通过位置信息查询四叉树索引来获取各级别下的所需的地理要素数据,从而快速调度相邻区域的瓦片以及高一级别或低一级别的瓦片数据。
根据一种实施例,通过获取的矢量瓦片数据结合图层配置文件的样式属性,采用OpenGL绘制进行矢量地图渲染与生成。
与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:本发明实施例的方法主要包括矢量数据的处理生成、矢量数据的组织存储、矢量数据的索引调度方法,通过矢量数据分类、分级、分块进行处理、组织与存储,从而减少非必要数据的读取加载和显示,来提高矢量地图的响应速度。该方法不仅大大提高了地图的渲染效率,同时也节省了机载设备的运行与存储空间。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例方法的流程示意图;
图2为本发明实施例中矢量瓦片金字塔模型示意图;
图3为本发明实施例中矢量数据组织存储结构示意图。
具体实施方式
下面结合附图对本申请实施例进行详细描述。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种机载矢量地图数据处理方法,包括如下步骤:
步骤一、矢量数据预处理:
对不同比例尺的矢量地图数据进行数据预处理,包括数据收集、提取、合并与分类,根据不同的地理要素图层进行分类,存储为标准化的矢量地图数据。
(1)首先对不同比例尺的矢量地图数据进行数据预处理,包括数据收集、提取、合并、分类,以及非标准数据的格式转换。机载地图涉及的图层要素包括行政区划、居民地、公路、铁路、水系等,根据地图展示需求将原地理要素图层进行分类存储,例如将水系点(river_points.shp)、水系线(river_lines.shp)、水系面(river_regions.shp)等图层要素分别存储为shapefile或geojson标准矢量格式数据。
步骤二、矢量瓦片创建:
构建瓦片金字塔模型,对分层瓦片进行编码,然后通过切片工具对矢量地图数据进行瓦片化处理,生成瓦片数据集,根据设计的矢量瓦片数据组织存储结构,将矢量瓦片数据分层分类存储为二进制矢量文件并输出。
(2)构建矢量瓦片金字塔模型参考图2所示,将全球地图范围进行瓦片划分和编码,其中0级包含1个瓦片,1级包含4个瓦片,......,n级包含22n个瓦片,各层级的切片编号从左上角开始行列号为(0,0)以此类推。在读取和加载地图时可以根据级别z+列号x+行号y来快速进行矢量数据的索引和查找。
(3)根据建立的瓦片金字塔模型划分经纬网格,将经纬度坐标系转换为球面墨卡托投影坐标系,然后统一进行瓦片层级划分和区域裁剪,通过开发的切片工具将每一级数据分别进行裁剪和抽稀,主要通过坐标信息的对比来判断是否在某个瓦片内。例如分别对river_points.shp、river_lines.shp、river_regions.shp三种矢量要素进行裁剪生成相应的瓦片数据集。对于不同比例尺的数据的层级划分,可以根据数据量大小和地图显示范围来设定,本方案所采用的是将1:100万数据切分至0~8级别,1:25万数据切分至9~12,1:5万数据切分至13~16。
(4)将生成的每个级别下的点、线、面矢量瓦片集合并成为成为完整数据集,主要是将一个级别下分散的瓦片整合在一个文件中,以水系图层为例,切片工具生成了每级别下的river_points瓦片集、river_lines瓦片集、river_regions瓦片集。根据设计数据组织存储结构参考图3所示,文件存储的的结构包括文件头和数据区两部分,文件头包括切片数量、切片列号、切片行号、切片偏移位置、切片大小、......;数据区包括图层数目、点要素(要素编码、点要素数目、点坐标、点注记);线要素(要素编码、线要素数目、线包含点数目、点坐标、......;面要素(要素编码、面要素数目、面包含点数目、点坐标、面1包含三角形数目、三角形索引值、......),根据设计存储结构将同一类型数据如水系某一层级所涵盖的点、线、面要素数据矢量瓦片数据合并存储为二进制dat文件,River_n.dat代表第n层的水系矢量数据集包含此级别下的所有瓦片的点、线、面要素,Railway_n.dat为第n层的铁路图层矢量数据集。
步骤三、矢量地图生成:
生成图层配置文件,将输出的矢量二进制矢量文件和所述图层配置文件加载至内存中,根据显示的地理范围获取相邻区域的矢量瓦片数据并建立四叉树索引,通过位置信息查询四叉树索引获取矢量瓦片数据,并对矢量瓦片数据进行渲染,最终在机载显示设备中生成矢量地图。
(5)分层分类进行矢量数据存储后,还需要通过图层配置来进行读取和加载,提高数据可读性与读取效率。图层配置文件中将所有要绘制的地理图层要素全部进行设置,配置文件主要包括地理图层要素描述、要素编码、要素类型、所在文件名前缀、所在文件名后缀、缩放级别、字体、颜色、线宽等,其中要素编码规范参考国家军用标准(GJB 1839B-2012),并在原有基础上对其进行扩充,扩充的后一位表示要素类型,如河流注记点编码为1602000(其中前6位160200为河流要素编码,第7位0代表点要素、1代表线要素、2代表面要素)。以河流图层为例,该图层的配置文件具体设计如下:
具体加载和调用数据的过程如下:在配置文件生成后,将其加载入内存中,读取配置文件中的图层属性及样式存储到数组中,然后通过地理范围和需要绘制的图层要素编码进行矢量数据的查找读取与加载,如查找河流注记点图层的要素编码为1602000,(要素编码用于表征出地理要素的类型)获取到图层要素类型为点图层及文件前缀与后缀名组合,然后根据文件名从二进制矢量文件中去查找获取显示范围内的每一层级的切片的点要素数据,同时得到图层要素的字体、颜色等绘制样式,从而调用这些数据进行地图具体绘制。
(6)根据地图显示的地理范围来加载矢量数据和配置文件数据,采用四叉树建立索引对内存中的矢量数据进行管理。通过位置信息查询四叉树索引来获取各级别下的所需的地理要素数据,从而快速调度相邻区域的瓦片以及高一级别或低一级别的瓦片数据。最后,通过矢量瓦片数据结合图层配置文件的样式属性,并采用OpenGL绘制进行矢量地图渲染与生成。
本发明实施例的一种机载矢量地图数据处理方法,主要包括矢量数据的处理生成、矢量数据的组织存储、矢量数据的索引调度方法。通过矢量数据分类、分级、分块进行处理、组织与存储,从而减少非必要数据的读取加载和显示,来提高矢量地图的响应速度。
矢量数据的处理生成方法,矢量地图数据瓦片的构建是基于瓦片切片和划分,通过瓦片分类、分级、分块处理减少非必要信息的显示,同时减少无效数据的读取加载及显示,从而提高地图渲染与响应速度。本发明采用墨卡托投影坐标,按照经纬度对矢量数据进行层级划分与切片,并进行编码规则设计,编码由级别、行列号组成,对切片后的矢量地图数据按照经纬度进行编码,每个切片矢量文件都有唯一的编码,由列号加行号组成,通过编码可以确定唯一的矢量图块。通过开发的切片工具对点、线、面矢量数据进行简化及裁剪,其中点要素的裁剪是通过坐标信息的对比来判断是否在一个切片内;线要素的裁剪是根据划分网格进行裁剪会被截断或生产多条线段,在低级别瓦片中需要简化包含较多的线要素的图层做数据抽稀,最后将同一个切片内的数据写入对应的瓦片数据集中;面要素的裁剪是将其边界线转为线和点进行划分,一个面可能被切分为多个面,在低级别瓦片中需要简化包含较多的面要素的图层做数据抽稀,最终将同一个切片中多个闭合线构成的多边形面数据合并写入对应的瓦片数据集中。
矢量数据的组织存储方法,主要将切片生成的不同级别下分块的点、线、面矢量瓦片文件,要根据地理要素类型的划分来合并为不同的图层集合文件,将分散的点、线、面等块状文件合并成为一个完整文件。每个矢量瓦片块由多个地理要素图层组成,地理要素图层又包含点、线、面等地理实体集合,即地理实体所组成的点、线、面要素集。首先需要设计矢量瓦片的组织存储结构,定义规则为一类数据的每一个层级的所有瓦片存储为一个文件,这个文件对应可以存储一种或多种地理要素,其中每个瓦片对应包括点、线、面地理要素。文件存储的的结构包括文件头和数据区两大部分,文件头包括切片的数量、编号、位置、大小等信息同时可以扩充其他属性信息;数据区包括每个切片文件中所存储的地理要素编码、要素数目、地理坐标、索引值、字符串等。根据定义的存储结构将矢量瓦片数据合并及存储为二进制dat文件,通过此方案来减少矢量数据的存储大小。
矢量数据的索引调度方法,由于地理数据的存储量大,不能一次性加载到内存中,因此需要根据地图显示的地理范围来进行加载,可以通过建立索引来管理加载的矢量数据并快速获取所需矢量瓦片数据。首先需要定义一个图层配置文件,将矢量地图瓦片生成的二进制文件管理起来,配置文件中包括地理要素图层编码、要素图层说明、要素所在文件位置、要素可见级别、要素图层样式设置等等,从而将二进制文件与地理要素图层相关联,方便读取所需的地理要素图层;然后根据位置信息计算瓦片编码,通过读取各级别下的矢量数据后建立四叉树索引进行数据缓存管理,四叉树可以将地图行列号与及级别有机结合起来,可以快速获取高一级或低一级别的矢量瓦片数据,从而提高地图渲染与显示效率,支持无级别缩放。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
- 一种机载矢量地图数据的预处理方法
- 减小矢量地理PDF地图数据量的处理方法