一种面向移动设备的地图数据精简方法

文档序号:7927408阅读:245来源:国知局

专利名称::一种面向移动设备的地图数据精简方法
技术领域
:本发明涉及一种面向移动设备的地图数据精简方法,属于面向移动设备的地图服务领域。
背景技术
:移动地图服务(MobileMapService)在早期主要使用在车载导航系统中,地图数据多为预装在本地。随着移动设备硬件水平和无线通讯能力的快速发展,移动地图服务逐渐走向手持设备,如PDA(PersonalDigitalAssistant)、SmartPhone及手机等,地图数据也由预装逐渐走向通过无线网络按需下载的方式——移动在线地图服务(MobileOn-lineMapService)。然而,虽然移动终端设备在存储空间、CPU处理效率等方面有很大的提高,但仍然存在很大的局限;同时,无线网络的传输带宽也远远小于Internet,在移动终端和服务器之间地图数据的传输也是移动在线地图服务的一个瓶颈。因此,在保证地图有较好展示效果的前提下,需要尽量减少数据量,从而节省下载时间和无线传输带宽,以及占用较少的终端设备存储空间,减少终端设备地图数据处理的复杂度。当前对于移动地图数据的表示并没有统一的标准。栅格格式的图像由于要保存每一个像素的信息,具有相对较大的存储开销,在縮放时会产生图像失真,并且不支持用户在终端的交互操作。而一些常见的矢量地图数据格式,如ESRIShapefile(ESRI.ESRIShapfileTechnicalDescription,July1998.http:〃www.esri.cotn/librarv/whitepapers/pdfs/shapfile.pdf),Maplnfo、AutoCAD、GML(GeographyMarkupLanguage,http:〃www.opengeospatial.org/standards/gml)等,都存在数据量过大的问题,不适合在移动应用中使用。1999年,W3C提出了SVG规范(W3C,2003,ScalableVectorGraphics(SVG)1.1Specification,http:Vwww.w3.org/TR7SVG/),它是基于XML语言的用来描述二维矢量图形的标准。2001年,AtemGarmash又提出了一种基于SVG的文本地图格式(ArtemGarmash,"AGeographicXML-basedFormatfortheMobileEnvironment",Proceedingsofthe34thHawaiiInternationalConferenceonSystemSciences-2001)。虽然SVG格式及其变种在表达地图信息方面非常出色,但其数据量与GML相当,对于移动在线地图服务来说并不适用。2003年,W3C提出了MobileSVG规范(W3C,2003,MobileSVGProfiles:SVGTinyandSVGBasic,http:〃www.w3.org/TR/SVGMobile/),它是SVG规范在嵌入式设备上的应用,是目前移动在线地图服务中使用最广泛的数据格式。MobileSVG分为两个子集MobileSVGTiny(SVGT)主要用于手机等低端嵌入式设备;MobileSVGBasic主要用于PDA等高端嵌入式设备。MobileSVG在移动应用中具有很多优势,它是动态的,可扩展的,可以展示高品质图像而不会失真,支持用户的交互操作,同时文件尺寸比栅格格式小。但是,MobileSVG是基于XML的文本格式,它需要许多Tag来标识属性,同时,用真实的地理坐标来描述实体的几何属性,其数据量仍然比较大。当前有很多改进SVG性能的研究工作,主要都围绕着如何减少文件的字符数,比如利用地理坐标的空间局部性,将坐标中的公共部分省略。另夕卜,MobileSVG的解析耗时以及解析后占用的大量内存也是不容忽视的问题。也有人对GML规范进行了压縮,提出了cGML(compactGeographicMarkupLanguage)(UsingcompactGMLtoDeployInteractiveMapsonMobileDevices,WWW2003,http:〃www2003.org/cdrom/par>ers/poster/p05l/p51-devita.html)。cGML使用更短的GMLTag,并且根据用户数据请求中包含的设备信息,在服务器端面向特定设备对坐标进行预处理,以适应移动设备的需求。但cGML与MobileSVG相似,存在相同的问题。
发明内容从上面的分析可以看出,在移动地图应用中,如果将需要传输的地图数据表示为当前存在的上述移动地图数据格式,都会存在数据量过大的问题。因此,本发明要解决的问题就是在尽量保证较好的地图展示效果的前提下,对原始地图数据进行精简,尽可能减少需要传输的地图数据量,从而节省下载时间和无线传输带宽。为了解决当前在移动地图服务中存在的传输地图数据量过大的问题,我们提出了一种地图数据精简方法。此方法的设计思想是对原始地图数据进行分级、分块,对每一级别的地图数据根据一定的原则进行一定程度的精简,对处理后的数据建立索引,根据不同的显示需要将所需数据封装成二进制数据流进行传输。本发明的技术方案为一种面向移动设备的地图数据精简方法,其步骤为-1)根据移动应用中地图显示的需要,确定面向移动设备的地图显示级别数;2)根据地图显示级别,设定对应级别地图上所要显示的图层及其实体;3)对每一级别地图上所显示实体的几何属性进行精简;4)对精简后的每一级别地图上所显示的地图数据进行分块,并设定对应级别地图数据块的大小;5)将分块后的地图数据进行存储或传输。根据所述实体的重要程度和地图显示级别大小,设定对应级别地图上所要显示的实体;所述地图显示级别越小,其上所要显示的实体重要程度越高。所述实体的重要程度的标准包括实体长度、实体面积、实体的属性取值。所述实体精简方法采用线平滑算法对线实体和面实体进行精简;所述线平滑算法的夹角参数和距离参数根据每一地图显示级别分别进行设置。所述数据块的表示方法为以该数据块的左下角作为基点,实体的每个x和y坐标分别用一个Byte表示。所述数据块的大小为255坐标单位X255坐标单位,通过设定所述数据块的分块坐标单位来设定对应级别地图数据块的大小。所述实体在不同所述数据块中具有同一ID标识。所述方法中以所述数据块为存储单元,采用二进制数据流对所述分块后的数据进行存储或传输。所述二进制数据流的组织格式为实体个数+实体数据;所述实体数据的组织格式为实体ID+实体所属图层+实体名称长度+实体名称+实体坐标个数+实体坐标。所述组织格式的各字段长度可调,所述实体个数的字段长度为2Byte,所述实体ID的字段长度为3Byte,所述实体所属图层的字段长度为1Byte,所述实体名称长度的字段长度为1Byte,所述实体名称的字段长度等于在所述实体名称长度字段中该实体名称对应长度的实际值,所述实体坐标个数的字段长度为2Byte,所述实体坐标的字段长度由实体坐标个数决定,其中每一对实体坐标占用2Byte。本发明方法流程如图l所示,包括以下步骤(1)对原始地图数据进行分级处理。由于移动设备屏幕尺寸有限,在不同比例尺下屏幕上显示的地图内容精度应该随着显示范围的变化而有所不同。在比例尺较小、显示的地理范围较大时,仅简略显示较少、较重要的内容(即只显示少量比较重要的实体);而比例尺较大、显示的地理范围较小时,则详细显示更多的内容(即显示尽可能多的实体)。我们用Level(级别)表示不同比例尺下不同精度的地图数据。地图数据分级所要完成的功能是按照一定的规则,为每一级数据显示挑选合适的图层及其实体(即不同级别的地图对应不同重要程度的图层及实体)。原则上,较小比例尺、较高层的地图级别应包含较少较重要的图层及实体(图层的重要程度可以根据实际移动应用的需要来选择,实体的重要程度可以有不同的标准,比如可以用实体的长度或面积大小来衡量,比如河流图层中,面积较大的水域要比面积小的重要;也可以用实体的某些属性的取值来标识,比如道路图层中,道路级别为"大街"的道路要比级别为"胡同"的道路重要一些);而较大比例尺、较低层的地图级别应包含更多的实体。由此,将地图原始数据分成不同的Level。(2)对属于不同级别的实体几何属性进行精简。实体几何属性的精简旨在使用精简算法对原始数据中线和面实体的几何属性进行化简,尽量去除线实体上和面实体边界线上的某些点,在保持其几何形状变化不大的同时尽量减少其数据量。几何属性精简的方法有很多,我们这里以线平滑算法为例(如图2),其依据线上相邻三点成的夹角(Angle)和距离(Distance)判断中间点是否可以去掉。在移动地图服务中,针对不同比例尺的显示需要会提供不同Level的地图数据。较高层的、适合小比例尺大范围显示的Level的实体几何形状较为简单,需要经过较大程度的精简;较低层的、适合大比例尺小范围显示的Level的实体几何形状较为复杂,需要精简程度较小、尽量保持其原来的形状。这里,通过对angle和distance这两个参数进行不同的设定,就可以实现满足不同需要的精简。(3)对实体几何属性精简后的地图数据进行分块。经过上述分级、实体几何属性精简步骤后,已经生成了满足地图不同显示需求的每个Level包含的实体及其精简后的几何属性等数据。当前的数据分块步骤将每一个Level的数据划分成一个个Block(数据块)。为了能够有效减少数据量,我们将Block的尺寸设定为255坐标单位X255坐标单位。如果以Block左下角作为基点,在一个Block中,x和y坐标取值范围相对于基点都是0255,最大的特点就是可以用一个Byte分别表示x或y,即坐标可以采用双字节编码。移动终端显示高级别(如Level0)数据时,由于显示范围比较大,如果和低级别数据采用相同的分块坐标单位,将涉及过多的Block,使得移动终端的处理性能降低。为了避免这个弊端,我们可以通过增大高级别数据的分块坐标单位来调整。不同的数据级别,采用不同的分块坐标单位。比如在图3中,Level2的分块坐标单位为"米",Levell的分块坐标单位可以为"十米",而LevelO的分块坐标单位则可以为"百米"。这种调整可以根据实际应用的需要进行。数据分块将按照地理范围将每个Level的地图数据分为等大的区域,每个区域作为一个Block,跨越多个区域的实体将被分割为多个部分,通过使用同一个ID保持逻辑一致性(即逻辑上它们仍是一个实体),如图4所经过分块,对一个Block中的每一个实体,将原来的地理坐标限定为0255坐标单位范围的相对坐标,即原来分别需要用双精度类型(8Byte)或整型(4Byte)表示x或y,现在只需分别用一个Byte表示x或y,这在数据量的减少上效果是非常显著的。本发明的优点与积极效果本发明将Block划分为255坐标单位X255坐标单位,其中坐标单位可以随不同的地图显示级别调整。本发明的优点主要有两点一是在保证较好的地图展示效果的基础上,数据量小;二是绘制性能较高。下面我们将通过实验说明这两点优势。(1)测试数据测试所采用的原始数据为GML格式的北京市地图数据,共7个图层。测试原始数据信息如表1所示。表l北京市地图数据(GML格式)<table>tableseeoriginaldocumentpage7</column></row><table>我们首先对原始数据中实体的几何属性进行一定程度的精简,然后再转化为PNG(PortableNetworkGraphic)、SVGT(MobileScalableVectorGraphicsTiny,一种用于手机等低端嵌入式移动设备的可扩展的矢量图形格式)以及通过本发明的划分Block进行对比。不论是什么格式的数据文件,其内容主体绝大多数都是为了记录实体的坐标信息。坐标的多少在一定程度上可以反映数据文件的大小。为此,我们从北京市地图数据中截取了13组测试数据,分别对应不同的地理范围并包含所有7个图层信息,其范围内包含的坐标点数递增,坐标点数是指所显示地理范围内构成所有实体的所有坐标点的数目。测试数据的详细信息如表2所示。表2测试数据信息<table>tableseeoriginaldocumentpage8</column></row><table>(2)数据量评测我们选择当前比较常用的SVGT格式和PNG格式与本发明划分Block的地图数据对比。这里Block的坐标单位采用"米"。为计算简便,在本实验中,Block的范围取250米X250米。结果如表3所示。表3数据量对比(单位Byte)<table>tableseeoriginaldocumentpage9</column></row><table>由表3可以看出,由于SVGT是基于XML语言的文本格式,故消耗了较大的存储空间。通常,在移动应用中都会对原始数据进行压縮,以减少网络传输数据量。SVGT平均压缩率高达70.5%,经过本发明划分Block后的地图数据由于采用二进制数据流进行存储和传输,平均压縮率仅为20.9%。但是,即使是压縮后的SVGT数据仍比本发明的数据略大,而同样采用GZIP压缩后的本发明的数据量要比SVGT数据量平均少35%。此外,由于栅格图片放大的失真现象,通常需要提供不同放大级别的图片满足用户要求,这里的PNG数据是最高放大级别下的图片数据量,可以看出,仅这一个级别,数据量巳经相当大。由此可见,本发明通过将地图数据划分为255坐标单位X255坐标单位的Block,大大减少了原始数据量。(3)Block的块数对终端绘制性能的影响在移动终端,地图的组织是以Block为单位的,因此针对上述13组测试数据,我们还测试了不同的Block数量对终端绘制性能的影响。通过选取不同的Block大小(分别为250米X250米、500米X500米、1000米X1000米、2000米X2000米)将同一范围的地图数据划分成不同数量的Block,从而进行测试。绘制时间结果如表4所示。表4地图绘制时间(单位ms)<table>tableseeoriginaldocumentpage10</column></row><table>可见,当移动终端要显示大范围地图数据时,Block数目是影响绘制性能的一个主要因素。通常在显示大范围地图时用的是高级别的数据,此时可以通过加大高级别数据的分块坐标单位来减少Block数目,从而保持性能优势。图l本发明的方法流程图;图2展示了实体几何属性精简中用到的线平滑算法;其中Angle表示BA和BC两条线之间的夹角,Distance表示B到AC的垂直距离;(a)精简前的线实体(b)精简后的线实体图3展示了将原始地图数据划分为不同级别的示意图;图4展示了跨越多个Block的大实体的切割方式,图中ID标识为IDO的实体跨越4个Block,被切割为A、B、C、D四个实体,但这四个实体的ID标识均为IDO;(a)分块前的实体表示,(b)分块后的实体表示;图5LevelO的部分数据显示效果,其显示范围是10000米X10000米,Block的坐标单位是"十米",共包含Blockl6块,数据量是72934Bytes;;图6Levell的部分数据显示效果,其显示范围是1500mxl500m,Block的坐标单位是"米",共包含Block36块,数据量为11846Bytes。具体实施例方式现通过一个地图数据精简的例子进一步介绍此发明的实施步骤。原始地图数据为北京市全部范围地图数据,GML格式,具体原始数据情况如表1所示。采用本发明对原始数据精简如下(1)分级。这里只将地图数据划分为Levell和LevelO两个级别。LevelO的实体来自以下图层使用土地(包括绿地和水域)、行政地标及道路图层中的主要道路(这里主要道路的含义是道路级别的属性取值为"高速路"或"大街",并且道路宽度大于20m);Levell的实体来自以下图层地块、使用土地(包括绿地和水域)、行政地标、普通地标、道路及POI。(2)采用线平滑算法对实体的几何属性进行精简。精简参数(角度阈值Angle,距离阈值Distance)分别为LevelO(120°,3m),Levell(150。,lm)(3)分块。为计算方便,Block的大小限制为250坐标单位X250坐标单位,其中LevelO的坐标单位为"十米",Levell的坐标单位为"米"。将分块后的地图数据存储为二进制数据流,以每一Level内每个Block的数据为一存储单元。每一个存储单元按表5所给的格式组织二进制数据流。表5Level内一个Block的数据组织冲各式<table>tableseeoriginaldocumentpage11</column></row><table>其中,各个字段的含义以及占用的字节数描述如下-a.实体数(2Byte)。此字段表示在此Level中的实体数。结合一般应用情况考虑,用2个Byte表示此字段,一个Block的一个级别中最多包含的实体数为65535。b.ID(3Byte)。此字段表示一个Layer(图层)中实体的id,这里用3个Byte来表示。同样这一字段是可扩展的,可以根据需要采用所需字节数。c.Layer(1Byte)。此字段表示实体所属的图层编号,用l个Byte来表示,图层数最多为255。实体属于哪个图层,该字段就表示为相应图层的编号。例如,实体a属于道路图层,道路图层的编号为5,则此字段值为0000101。d.Name长度(1Byte)。实体的名称是用字符char(2个Byte表示一个char)来表示的。此字段表示组成实体名称的字节的个数。由于实体名称通常不超过64个char,最多占用128个Byte,因此用1个Byte表示此字段,实体名称最多为255个Byte。e.Name。此字段表示实体的名称,占用的字节数由上一字段"Name长度"指示。若"Name长度"字段的值为L,则此实体的名称含有L个Byte,即L/2个字符。f.坐标个数(2Byte)。此字段表示实体具有的坐标点数。结合一般移动地图应用情况考虑,用2个Byte表示此字段,即在一个Block内一个实体最多拥有的坐标点数为65535。紧跟此字段之后的即为实体的各个坐标点。g.坐标。一个实体具有多个"坐标"字段,如(xl,yl)、(x2,y2)......。每个"坐标"字段都由2个Byte表示,其中x和y各占1个Byte。经过精简后的地图数据量如表6所示,可见,LevelO和Levell的数据量与原始GML地图数据相比都有显著的减少。表6实验结果<table>tableseeoriginaldocumentpage12</column></row><table>图5、图6为北京市部分区域地图精简后的不同Level的显示效果图。其中,图5的显示范围是10000米X10000米,Block的坐标单位是"十米",共包含Blockl6块,数据量是72934Bytes;图6的显示范围是1500米X1500米,Block的坐标单位是"米"共包含Block36块,数据量为11846Bytes。权利要求1.一种面向移动设备的地图数据精简方法,其步骤为1)根据移动应用中地图显示的需要,确定面向移动设备的地图显示级别数;2)根据地图显示级别,设定对应级别地图上所要显示的图层及其实体;3)对每一级别地图上所显示实体的几何属性进行精简;4)对精简后的每一级别地图上所显示的地图数据进行分块,并设定对应级别地图数据块的大小;5)将分块后的地图数据进行存储或传输。2.如权利要求l所述的方法,其特征在于根据所述实体的重要程度和地图显示级别大小,设定对应级别地图上所要显示的实体;所述地图显示级别越小,其上所要显示的实体重要程度越高。3.如权利要求2所述的方法,其特征在于所述实体的重要程度的标准包括实体长度、实体面积、实体的属性取值。4.如权利要求1所述的方法,其特征在于采用线平滑算法对线实体和面实体进行精简;所述线平滑算法的夹角参数和距离参数根据每一地图显示级别分别进行设置。5.如权利要求1所述的方法,其特征在于所述数据块的表示方法为以该数据块的左下角作为基点,实体的每个x和y坐标分别用一个Byte表示。6.如权利要求5所述的方法,其特征在于所述数据块的大小为255坐标单位X255坐标单位,通过设定所述数据块的分块坐标单位来设定对应级别地图数据块的大小。7.如权利要求6所述的方法,其特征在于所述实体在不同所述数据块中具有同一ID标识。8.如权利要求1所述的方法,其特征在于以所述数据块为存储单元,采用二进制数据流对所述分块后的数据进行存储或传输。9.如权利要求8所述的方法,其特征在于所述二进制数据流的组织格式为实体个数十实体数据;所述实体数据的组织格式为实体ID+实体所属图层+实体名称长度+实体名称+实体坐标个数+实体坐标。10.如权利要求9所述的方法,其特征在于所述组织格式的各字段长度可调,所述实体个数的字段长度为2Byte,所述实体ID的字段长度为3Byte,所述实体所属图层的字段长度为1Byte,所述实体名称长度的字段长度为1Byte,所述实体名称的字段长度等于在所述实体名称长度字段中该实体名称对应长度的实际值,所述实体坐标个数的字段长度为2Byte,所述实体坐标的字段长度由实体坐标个数决定,其中每一对实体坐标占用2Byte。全文摘要本发明公开了一种面向移动设备的地图数据精简方法,属于面向移动设备的地图服务领域。本发明的方法为1)根据移动应用中地图显示的需要,确定面向移动设备的地图显示级别数;2)根据地图显示级别,设定对应级别地图上所要显示的图层及其实体;3)对每一级别地图上所显示实体的几何属性进行精简;4)对精简后的每一级别地图上所显示的地图数据进行分块,分块的大小固定为255坐标单位×255坐标单位,但不同级别地图数据块的分块坐标单位大小可以调整;5)将分块后的地图数据采用二进制数据流进行存储或传输。与现有技术相比,本发明在保证较好的地图展示效果的基础上,数据量小、绘制性能高。文档编号H04W72/12GK101400138SQ20081022495公开日2009年4月1日申请日期2008年10月28日优先权日2008年10月28日发明者潇庞,汪小林,王海波,罗英伟申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1