一种矢量地图数据存储方法及系统的制作方法

文档序号:6543259阅读:241来源:国知局
一种矢量地图数据存储方法及系统的制作方法
【专利摘要】本发明公开了一种矢量地图数据存储方法及系统,属于移动地理信息系统领域。首先选定一地图级别,根据地图的经纬度范围和选定的地图级别将地图进行网格化,将地图划分为若干个网格单元;根据原始矢量地图数据中地图对象的经纬度坐标确定地图对象所在的网格单元,将地图对象归置到网格单元中;再建立网格单元中的地图对象与地图对象的属性数据的映射关系最后存储网格单元中的地图对象的经纬度坐标数据和属性数据。通过该方法及系统进行数据存储,能够很方便的将数据下载到移动智能终端上作为离线地图数据使用,减少了数据流量,加速了地图显示,提高了用户体验。
【专利说明】一种矢量地图数据存储方法及系统
【技术领域】
[0001]本发明涉及移动GIS (地理信息系统)领域,具体涉及一种矢量地图数据存储方法及系统。
【背景技术】
[0002]随着现代社会的快速发展,移动智能终端已经在人们日常生活中扮演越来越重要的角色,移动智能终端是传统手机和网络终端的结合物,不仅能够满足打电话、发短信的需求,还包括上网、办公、社交、娱乐等多种功能,近些年,以移动地图为代表的移动GIS产品也迅速发展,为智能手机用户带来了极大的便利。
[0003]移动GIS主要包括手机地图、基于定位的各种应用,例如优惠券、公交换乘、团购、交友、社交、采集等等,大部分基于定位的移动应用基本上都会用到手机地图,用以在地图上定位各种信息。
[0004]手机地图是移动GIS的基础性应用,其提供各种基础GIS设施,供其他应用使用实现定位、地图展示等功能,手机地图中最重要的部分是地图数据,由于移动设备的硬件资源和网络带宽有限,因此对地图数据的要求比较苛刻,要求地图数据不仅要尺寸小,而且能够查询快,同时应该有的关键性属性数据不能缺失。
[0005]早期手机地图使用的地图数据是PNG或JPG格式的地图切片,手机通常都是通过移动互联网上网,如果地图数据都是在线请求,不仅流量大,而且显示效果不流畅,影响体验,而且所有级别的地图切片集合起来尺寸太大,往往好几百兆,就算想以离线数据的形式预先下载到手机上,也十分费时费力。

【发明内容】

[0006]针对现有技术中存在的缺陷,本发明的目的在于提供一种矢量地图数据存储方法及系统,通过该方法及系统提供尺寸小、查询快的矢量地图数据。
[0007]为实现上述目的,本发明采用的技术方案如下:
[0008]一种矢量地图数据存储方法,包括以下步骤:
[0009](I)选定一地图级别,根据地图的经纬度范围和选定的地图级别将地图进行网格化,所述的网格化是指将地图划分为若干个网格单元;
[0010](2)根据原始矢量地图数据中地图对象的经纬度坐标确定地图对象所在的网格单元,将地图对象归置到网格单元中;
[0011](3)建立网格单元中的地图对象与地图对象的属性数据的映射关系;
[0012](4)重复步骤(1),直至完成所有地图级别下的步骤(I)?(3);
[0013](5)存储网格单元中的地图对象的经纬度坐标数据和属性数据。
[0014]进一步,如上所述的一种矢量地图数据存储方法,步骤(5)中,在存储网格单元中的地图对象的经纬度坐标数据和属性数据之前,还包括:
[0015]将不同地图级别下的网格单元中的地图对象的经纬度坐标数据进行容差过滤,容差过滤的具体方式为:
[0016]如果两个地图级别下的地图对象的经纬度坐标数据的数据量级小于设定容差值,则删除较小地图级别下的地图对象的经纬度坐标数据。
[0017]进一步,如上所述的一种矢量地图数据存储方法,步骤(I)中,所述的地图级别是指地图的缩放级别,地图级别越大,每一个网格单元的经纬度范围越小。
[0018]进一步,如上所述的一种矢量地图数据存储方法,步骤(I)中,根据地图的经纬度范围和选定的地图级别将地图进行网格化的具体方式为:
[0019]设选定的地图级别为η,η为自然数;
[0020]计算每一个网格单元的经纬度范围,计算公式为:
[0021]网格单元的经度范围=地图的经度范围IT ;
[0022]网格单元的纬度范围=地图的纬度范围IT ;
[0023]根据网格单元的经纬度范围将地图进行网格化。
[0024]进一步,如上所述的一种矢量地图数据存储方法,步骤(2)中,将地图对象的经纬度坐标数据进行压缩后,再将地图对象归置到网格单元中;将地图对象的经纬度坐标数据进行压缩是指根据地图对象的经纬度坐标所在的网格单元的经纬度范围,将地图对象的绝对经纬度坐标转换成相对经纬度坐标。
[0025]再进一步,如上所述的一种矢量地图数据存储方法,将地图对象归置到网格单元中的具体方式为:
[0026]如果地图对象为点,直接根据点的经纬度坐标确定该点所在的网格单元;
[0027]如果地图对象为线或面,将线或面切分后,分别根据切分后的对象的经纬度坐标确定切分后的对象所在的网格单元。
[0028]更进一步,如上所述的一种矢量地图数据存储方法,步骤(5)中,将相对坐标转换成整型数据坐标后,再存储网格单元中的地图对象的坐标数据。
[0029]一种矢量地图数据存储系统,包括:
[0030]地图网格化模块,用于遍历地图级别,并选定一地图级别,根据地图的经纬度范围和选定的地图级别将地图进行网格化,所述的网格化是指将地图划分为若干个网格单元;
[0031]地图对象归置模块,用于根据原始矢量地图数据中地图对象的经纬度坐标确定地图对象所在的网格单元,将地图对象归置到网格单元中;
[0032]映射关系建立模块,用于建立网格单元中的地图对象与地图对象的属性数据的映身寸关系;
[0033]数据存储模块,用于存储网格单元中的地图对象的经纬度坐标数据和属性数据。
[0034]进一步,如上所述的一种矢量地图数据存储系统,还包括:
[0035]容差过滤模块,用于将不同地图级别下的网格单元中的地图对象的经纬度坐标数据进行容差过滤,容差过滤的具体方式为:
[0036]如果两个地图级别下的地图对象的经纬度坐标数据的数据量级小于设定容差值,则删除较小地图级别下的地图对象的经纬度坐标数据。
[0037]再进一步,如上所述的一种矢量地图数据存储系统,所述的一种矢量地图数据存储系统,所述的地图网格化模块包括:
[0038]地图级别选定单元,用于选定地图级别,设选定的地图级别为η,η为自然数;[0039]经纬度范围计算单元,用于计算每一个网格单元的经纬度范围,计算公式为:
[0040]网格单元的经度范围=地图的经度范围IT ;
[0041]网格单元的纬度范围=地图的纬度范围IT ;
[0042]网格化单元,用于根据网格单元的经纬度范围将地图进行网格化。
[0043]本发明的有益效果在于:采用本发明所述的方法及系统,可以得到数据量小、能够快速查询的离线地图数据,尤其适用于将数据预先下载存储到移动智能终端中,通过移动智能终端的手机地图访问本地数据,节省了流量且地图加载数据快,提高了用户体验。
【专利附图】

【附图说明】
[0044]图1为本发明【具体实施方式】中一种矢量地图数据存储系统的结构框图;
[0045]图2为本发明【具体实施方式】中一种矢量地图数据存储方法的流程图;
[0046]图3为【具体实施方式】中地图级别为2时的地图网格化后的示意图。
【具体实施方式】
[0047]下面结合说明书附图与【具体实施方式】对本发明做进一步的详细说明。
[0048]图1示出了本发明【具体实施方式】中一种矢量地图数据存储系统的结构框图,该系统包括地图网格化模块11、地图对象归置模块12、映射关系建立模块13、容差过滤模块14和数据存储模块15,其中:
[0049]地图网格化模块11用于遍历地图级别,并选定一地图级别,根据地图的经纬度范围和选定的地图级别将地图进行网格化,所述的网格化是指将地图划分为若干个网格单元;该模块包括了地图级别选定单元、经纬度范围计算单元以及网格化单元,其中,
[0050]地图级别选定单元,用于选定地图级别,设选定的地图级别为η,η为自然数;
[0051]经纬度范围计算单元,用于计算每一个网格单元的经纬度范围,计算公式为:
[0052]网格单元的经度范围=地图的经度范围IT ;
[0053]网格单元的纬度范围=地图的纬度范围IT ;
[0054]网格化单元,用于根据网格单元的经纬度范围将地图进行网格化。
[0055]地图对象归置模块12用于根据原始矢量地图数据中地图对象的经纬度坐标确定地图对象所在的网格单元,将地图对象归置到网格单元中;
[0056]映射关系建立模块13用于建立网格单元中的地图对象与地图对象的属性数据的映射关系;
[0057]容差过滤模块14用于将不同地图级别下的网格单元中的地图对象的经纬度坐标数据进行容差过滤,容差过滤的具体方式为:
[0058]如果两个地图级别下的地图对象的经纬度坐标数据的数据量级小于设定容差值,则删除较小地图级别下的地图对象的经纬度坐标数据。
[0059]数据存储模块15用于存储网格单元中的地图对象的经纬度坐标数据和属性数据。
[0060]图2示出了本发明【具体实施方式】中一种矢量地图数据存储方法的流程图,该方法包括以下步骤:
[0061]步骤S21:根据地图的经纬度范围和选定的地图级别将地图进行网格化处理;[0062]选定一地图级别,根据地图的经纬度范围和选定的地图级别将地图进行网格化,所述的网格化是指将地图划分为若干个网格单元。所述的地图级别是指地图的缩放级别,地图级别越大,每一个网格单元的经纬度范围约小。
[0063]地图级别可以根据需要进行设定,例如拟定的地图级别范围为0-20级,在选定地图级别后,在选定的级别下对地图进行栅格化处理,优选的首次选定地图级别时选取地图的最大级别,如上述的最大地图级别为20。
[0064]地图在移动智能终端上以几何对象的形式显示出来为一个矩形框,网格化就是将该矩形框划分成若干个小矩形框,得到若干矩形网格单元,所有小方矩形块合并起来就构成了整个地图,全球地图的经度范围为-180度?180度,纬度为-90度?90度(本【具体实施方式】中的正负对于精度来说分别代表东经西经,对于纬度正负来说表示北纬南纬)。网格单元的经纬度范围跟地图的经纬度范围和当前地图级别有关。
[0065]本【具体实施方式】中根据地图的经纬度范围和选定的地图级别将地图进行网格化的具体方式为:
[0066]设选定的地图级别为η,η为自然数;
[0067]计算网格化后每一个网格单元的经纬度范围,计算公式为:
[0068]网格单元的经度范围=地图的经度范围IT ;
[0069]网格单元的纬度范围=地图的纬度度范围/2η ;
[0070]根据网格单元的经纬度范围将地图进行网格化。
[0071]具体的,例如,地图级别为2,则网格单元的经度范围=360/4=90,纬度范围=180/4=45,那么对地图进行网格化后的示意图如图3所示,图中每一个小网格即为一个网格单元,对于图中的网格单元Α,其具体覆盖的经纬度范围是(最小经度90,最大精度180,最小纬度45,最大纬度90),通过该方式将地图划分为若干个小矩形网格。如果地图级别为20,那么网格单元的经度范围=360/22°=0.00034332275390625,纬度度范围=180/22°,这时地图就被网格化为更多的网格单元。
[0072]需要说明的是,本【具体实施方式】中所提供的对地图进行网格化的方式是在原始矢量数据采用的坐标系为平面直角坐标系的条件下进行的,一般的移动智能终端中手机地图的原始矢量数据都是采用的平面直接坐标下,即把地图展开后,一几何对象的形式画出来为一个大的矩形框,图3中最外围的矩形框。但是对于不同的坐标系,比如麦卡托投影坐标系下,纬度范围的计算公式会有所不同。对于不同的坐标系,根据其特点对地图进行网格化,只要将地图划分为若干个小块即可。
[0073]在实际计算网格单元的经纬度范围时,一般选用经度来计算即可,这是因为地图在经度方向上是等分的,计算简单,用经度计算出来后即可确定网格单元的经纬度范围,根据地图的经度范围和选定的地图级别计算网格化后每一个网格单元的经纬度范围,计算方式为:
[0074]网格单元的经度范围=地图的经纬度范围/2η ;
[0075]网格单元的纬度范围=
[0076]比如说地图的经度范围为360度,在20级时,网格单元的经纬度范围为360度/220,结果约为 0.00034332275390625。
[0077]步骤S22:将地图对象归置到网格单元中;[0078]根据原始矢量地图数据中地图对象的经纬度坐标确定地图对象所在的网格单元,将地图对象归置到网格单元中。
[0079]原始矢量地图数据中的每一条数据,代表了一个地图对象,比如地图上的一个点、一条线,或者一个面,将这些地图对象读取出来,然后将他们归置到事先划分好的网格中,对于点数据来说,直接计算其坐标落于哪个网格即可,而对于线数据和面数据,很可能跨越多个网格,此时我们需要将线或面切分成段,然后将不同的段归置到不同的网格中。即将地图对象归置到网格单元中的具体方式为:
[0080]如果地图对象为点,直接根据点的经纬度坐标确定该点所在的网格单元;
[0081]如果地图对象为线或面,将线或面切分后,分别根据切分后的对象的经纬度坐标确定切分后的对象所在的网格单元。
[0082]本【具体实施方式】中的原始矢量地图数据指没有经过处理的矢量地图数据,例如一地图对象的实际经纬度坐标为(经度116.56,纬度40.233),该坐标数据即属于原始矢量地图数据,原始矢量地图数据的存储格式可以为SHAPE、CSV、EXCEL等国际标准格式,也可以是自定义矢量数据格式,原始矢量地图数据只是用来提供矢量数据的传播,不利于地图数据的快速查询和展现,如果想要快速查询和展现,必须经过特殊处理。
[0083]本【具体实施方式】将原始矢量地图数据中地图对象的经纬度坐标数据进行压缩后,再将地图对象归置到网格单元中;将地图对象的经纬度坐标数据进行压缩是指根据地图对象的经纬度坐标所在的网格单元的经纬度范围,将地图对象的绝对经纬度坐标(实际经纬度坐标)转换成相对经纬度坐标。例如,地图对象为一个点,其绝对经纬度坐标为(经度116.56,纬度40.233),该坐标落到了经纬度范围为(最小经度115,最大经度117,最小纬度39,最大纬度41)的网格单元内,那么此时该点的相对经纬度坐标可记为(经度116.56-115,纬度 40.233-39)即(经度 1.56,纬度 1.233)。
[0084]为了节省数据存储所占用的空间,除了将绝对经纬度坐标转换成相对经纬度坐标夕卜,还可以将为浮点型数据的相对经纬度坐标转换成整型数据,如对于上述相对经纬度坐标(经度1.56,纬度1.233)转换成整型数据后为(经度1560000,纬度1233000)。计算集中存储浮点型需要4个字节,而整型很可能用到2个字节就够了,因此,在数据存储时至少可以节省一倍的存储空间,有效缩小了地图数据的尺寸。另外,转换成整型数据存储时也要分情况,如果能用I个字节存储时,最好用I个字节存储,以便进一步压缩尺寸。
[0085]此外,在实际操作过程中,不是所有的原始矢量地图对象都会归置到网格单元中,如果一个线对象或者面对象的外包矩形框的长和宽都小于目标设备的像素尺寸,那么该对象没必要归置到网格中,直接舍弃即可,因为就算归置到网格中,在手机地图中绘制时也显示不出来,因为该对象太小以至于设备屏幕显示不出来。
[0086]步骤S23:建立网格单元中的地图对象与地图对象的属性数据的映射关系。
[0087]地图对象的属性数据(如其名称、地址等)是单独存储的,因此将地图对象归置到网格单元中时,需要将地图对象与属性数据建立映射关系,这样手机地图才能将地图对象与属性数据一一对应,在地图中对地图对象正确标注。为了控制地图数据的大小,属性数据存储是也需要进行一定的限制,比如说每一个地图对象可以只存储一到两个必要的属性。
[0088]完成该步骤后,返回到步骤S21,并选定不同的地图级别后,重复步骤S21-S23,直至完成所有地图级别下的上述操作。具体的选定另一地图级别后,采用步骤S21中的方式将地图进行网格化处理,再采用步骤S22中的方式将原始数据中的地图对象归置到新划分的网格单元中,再用步骤S23中的方式将归置后的地图对象与其属性数据建立映射关系。优选的在选择地图级别时,可以按照地图级别由大到小的方式选取。
[0089]步骤S24:将网格单元中的地图对象的经纬度坐标数据进行容差过滤;
[0090]完成所有地图级别下步骤S21-步骤S23中的操作后,将不同地图级别下的网格单元中的地图对象的经纬度坐标数据进行容差过滤,较少数据量。本【具体实施方式】中容差过滤的具体方式为:
[0091]如果两个地图级别下的地图对象的经纬度坐标数据的数据量级小于设定容差值,则删除较小地图级别下的地图对象的经纬度坐标数据。
[0092]其中,过滤数据的容差值即上述的设定容差值,是一个经验值,可以根据实际情况调整,一般规律是容差越小,最后生成的数据级别越多,数据尺寸相应会大一些,但是每一个级别查询出来的无用数据会少一点儿,所谓的无用数据是指外包框长和宽小于一个屏幕像素的数据。容差也不能设置的太大,如果容差太大,虽然数据尺寸小,但是查询出来的无用数据会相应增多,对手机地图数据绘制会造成一定的压力。过滤后的数据跟实际的地图级别不一致,比如实际的地图级别可能是0-20级,而过滤后可能只有5级,此时手机地图绘制时,多个实际的地图级别将对应到一个数据级别上。
[0093]步骤S25:存储网格单元中的地图对象的经纬度坐标数据和属性数据。
[0094]存储网格单元中的地图对象的经纬度坐标数据和属性数据,本【具体实施方式】中优选的存储的经纬度坐标数据为步骤S22中整型的相对经纬度坐标数据。在将数据存储后,即可将最终存储的数据导出生成新的地图数据,供手机地图使用。
[0095]需要说明的是,本【具体实施方式】中上述的步骤S21-S25并不是绝对的先后顺序,可以在实际的操作过程中根据需要进行相应的顺序调整,如步骤S23和步骤S24中,可以在完成所有地图级别下地图对象的步骤S21-S22的操作后,首先进行步骤S24中的数据容差过滤,再建立过滤后的地图对象与其属性数据的映射关系。
[0096]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种矢量地图数据存储方法,包括以下步骤: (1)选定一地图级别,根据地图的经纬度范围和选定的地图级别将地图进行网格化,所述的网格化是指将地图划分为若干个网格单元; (2)根据原始矢量地图数据中地图对象的经纬度坐标确定地图对象所在的网格单元,将地图对象归置到网格单元中; (3)建立网格单元中的地图对象与地图对象的属性数据的映射关系; (4)重复步骤(1),直至完成所有地图级别下的步骤(1)~(3); (5)存储网格单元中的地图对象的经纬度坐标数据和属性数据。
2.如权利要求1所述的一种矢量地图数据存储方法,其特征在于,步骤(5)中,在存储网格单元中的地图对象的经纬度坐标数据和属性数据之前,还包括: 将不同地图级别下的网格单元中的地图对象的经纬度坐标数据进行容差过滤,容差过滤的具体方式为: 如果两个地图级别下的地图对象的经纬度坐标数据的数据量级小于设定容差值,则删除较小地图级别下的地图对象的经纬度坐标数据。
3.如权利要求1或2所述的 一种矢量地图数据存储方法,其特征在于,步骤(1)中,所述的地图级别是指地图的缩放级别,地图级别越大,每一个网格单元的经纬度范围越小。
4.如权利要求3所述的一种矢量地图数据存储方法,其特征在于,步骤(1)中,根据地图的经纬度范围和选定的地图级别将地图进行网格化的具体方式为: 设选定的地图级别为η,η为自然数; 计算每一个网格单元的经纬度范围,计算公式为: 网格单元的经度范围=地图的经度范围/2η ; 网格单元的纬度范围=地图的纬度范围/2η ; 根据网格单元的经纬度范围将地图进行网格化。
5.如权利要求1所述的一种矢量地图数据存储方法,其特征在于,步骤(2)中,将地图对象的经纬度坐标数据进行压缩后,再将地图对象归置到网格单元中;将地图对象的经纬度坐标数据进行压缩是指根据地图对象的经纬度坐标所在的网格单元的经纬度范围,将地图对象的绝对经纬度坐标转换成相对经纬度坐标。
6.如权利要求1或2或5所述的一种矢量地图数据存储方法,其特征在于,将地图对象归置到网格单元中的具体方式为: 如果地图对象为点,直接根据点的经纬度坐标确定该点所在的网格单元; 如果地图对象为线或面,将线或面切分后,分别根据切分后的对象的经纬度坐标确定切分后的对象所在的网格单元。
7.如权利要求5所述的一种矢量地图数据存储方法,其特征在于,步骤(5)中,将相对坐标转换成整型数据坐标后,再存储网格单元中的地图对象的坐标数据。
8.一种矢量地图数据存储系统,包括: 地图网格化模块,用于遍历地图级别,并选定一地图级别,根据地图的经纬度范围和选定的地图级别将地图进行网格化,所述的网格化是指将地图划分为若干个网格单元; 地图对象归置模块,用于根据原始矢量地图数据中地图对象的经纬度坐标确定地图对象所在的网格单元,将地图对象归置到网格单元中;映射关系建立模块,用于建立网格单元中的地图对象与地图对象的属性数据的映射关系; 数据存储模块,用于存储网格单元中的地图对象的经纬度坐标数据和属性数据。
9.如权利要求8所述的一种矢量地图数据存储系统,其特征在于,还包括: 容差过滤模块,用于将不同地图级别下的网格单元中的地图对象的经纬度坐标数据进行容差过滤,容差过滤的具体方式为: 如果两个地图级别下的地图对象的经纬度坐标数据的数据量级小于设定容差值,则删除较小地图级别下的地图对象的经纬度坐标数据。
10.如权利要求8或9所述的一种矢量地图数据存储系统,其特征在于,所述的地图网格化模块包括: 地图级别选定单元,用于选定地图级别,设选定的地图级别为η,η为自然数; 经纬度范围计算单元,用 于计算每一个网格单元的经纬度范围,计算公式为: 网格单元的经度范围=地图的经度范围/2η ; 网格单元的纬度范围=地图的纬度范围/2η ; 网格化单元,用于根据网格单元的经纬度范围将地图进行网格化。
【文档编号】G06F17/30GK103970835SQ201410140631
【公开日】2014年8月6日 申请日期:2014年4月9日 优先权日:2014年4月9日
【发明者】李欣, 王生, 李强, 赵兴宇, 汪利宝 申请人:方正国际软件有限公司, 方正国际软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1