生成电子地图的方法
技术领域
本发明涉及生成电子地图的方法,特别是生成机场、展厅、公园、商场等相对较小范围的电子地图的方法。
背景技术
电子地图(Electronic map)即数字地图,是利用计算机技术,以数字方式存储和查阅的地图。生成电子地图的方法的基本流程主要包括数据收集、数据存储、数据解析和显示等步骤。
目前主流的电子地图数据来源于地理信息系统(GIS,geographicinformation system)。GIS包含了地理数据的收集,处理,存储,解析,显示,空间分析等一系列复杂理论。
图1显示了传统的电子地图的生成原理的示意图。传统的生成电子地图的方法一般具有以下特点:
-基于分块,地图被切分为多个矩形图块存储。由于切块是固定大小的切割,划分后的每个块上可能有一个或者多个要显示的主体内容。
-基本图形以底图的形式存储,底图是图片格式,内容例如是底层显示地形和行政区域划分,可以以png、JPEG、TIFF等多种图像格式存储。其上再添加交通路线信息等矢量数据。如图1所示,传统的电子地图包括多层,每个层包含底图和上层对应的矢量多边形数据。与底图一样,上层矢量数据可能含有一个或者多个要显示的主体内容。
-分层结构存储,如图1所示,同一块地理矩形区域在放大率不同时对应层1至层3,根据实际的放大率决定要显示哪一层给用户。
当放大率由小到大变化时(反之亦然),地图的显示分两种情况:
-地图放大率变化程度较小,没有达到下一级层对应的放大率时,显示当前层的图层根据变化后放大率的缩放(或拉伸)结果。这一过程可参见图2中图2a到图2b的变化。
-当地图放大率变化达到下一级层对应的放大率时,切换层。显示切换后的层包含的底图和数据信息。比如,在显示中国全图时,用户看到的是整个中国的区域信息,北京在地图上只是一个区域形状;而在用户查看北京市地图时,就可以看到北京详细的环线,地铁路线,基本建筑等信息。这一过程参考图2中从图2b到图2c的变化。
基于上述传统的电子地图存储方法,在电子地图的数据收集、存储、解析和显示方面存在以下问题。
数据收集方面:
分层数据的信息没有主体元素对应,只能每层根据坐标标注。主体元素的属性信息只能根据坐标做二次映射,即录入属性数据时必须通过专门的工具做到数据和原始底图同步。
每一层都有单独的底图,但是同样地理区域的地图(如存储结构图中的层1、层2和层3)对应于同样的地理区域,主体图像信息数据要重复收集和存储。
存储方面:
由于基于分块存储,每块底图上可能有多个要显示的主体对象,每块底图对应的矢量数据可能是多个主体对象对应的数据,所以有以下问题:
底图上的某个主体数据与矢量图上的某个主体数据需要通过复杂的算法匹配,并且容易出错。开发和维护成本较大。
当底图上某个主体数据更新时,整张底图都需要更新。长期来说维护和更新代价较大。
底图以图片形式存储,所以有以下问题:
存储数据量消耗偏大。一张1024X1024的16色png图片大小约为2M,即使压缩为其他图片格式,对于移动网络和移动终端来说,网络传输和终端存储的压力都较大。
底图上的图像元素本身不能变化。图片上的地形区域如果想变个颜色,只能在数据中添加另外一张颜色的图片。而实际上在应用于室内地图时,底图的元素可能不是地形区域,而是商场中的一间间店铺,这些店铺可能在不同情况下显示的颜色等属性有所变化。同时底图的元素可能还需要动态变化,如转动,这个在以图片为底图的传统电子地图上无法做到。
数据显示方面:
由于底图是图片,所以在放大比率超过图片实际大小的时候会有不清晰的现象。
当放大率由小到大变化时,有以下问题:
放大缩小地图时,在由一个缩放等级跳跃到下个缩放等级时更换图片是硬性的图片更换,没有平滑过度。在PC上由于鼠标滚轮引发的放大缩小是一个级别一个级别变化的,所以用户感觉不明显,如果拿到触摸屏的手机终端上随意缩放时,可以看出图片的跳跃性更换。用户体验有需要优化之处。
地图缩放时,底图的上层显示数据有一系列数据需要调整,这些调整只能在底图切换时触发,而底图不切换时只有底图和上层数据的统一缩放,不能自动调整。如附图2、图2a到图2b的拉伸变化时,“东城区”、“朝阳区”以及二环线等上层数据不能自动调整,只能随着底图放大;只有在图2c底图切换之后才触发调整。
发明内容
由上文可知,传统的生成电子地图的方法由于存在上述问题,并不适用于生成例如机场、展厅、公园、商场等相对较小,细节较多,需要长期更新和维护以及根据用户的需求提供各种显示模式的场所的电子地图。
本发明致力于机场、展厅、公园、商场等较小场所的电子地图的生成,做到以最小的数据量完成地图数据存储,并使地图能平滑,快捷的显示。同时通过分层技术做到地图中各类元素的动态变换,支持各层元素的动态调整。
根据本发明的一方面,提出了一种生成电子地图的方法,该方法包括:
数据收集步骤,收集矢量数据和与所述矢量数据相对应的附加数据,其中所述矢量数据包含与所述电子地图相对应的场所的多个主体元素的形状、位置、类别、主体元素ID,所述附加数据包含各个所述主体元素的多个属性,所述主体元素是与所述电子地图相对应的场所的各个组成部分;所述附加数据与每个所述主体元素的主体元素ID相关联;
数据存储步骤,将收集到的所述矢量数据和附加数据存储在服务器数据库中,其中将不同类型的主体元素的对应的矢量数据存储为多个层,使得每一种类型的主体元素的矢量数据保存为一层;
电子地图显示步骤,电子地图显示端从服务器获取所述矢量数据和所述附加数据,逐层地根据每一层的矢量数据绘制对应于该层的矢量图,并添加与该层的矢量数据中的各个主体元素ID相关联的附加数据,从而在显示装置上生成了所述电子地图。
优选地,其中收集矢量数据的过程包括:
1)获取数据源,即获取与所述电子地图所相对应的场所的实际地图;
2)确认要收集的多个主体元素,并对所述多个主体元素进行分类;
3)将各个主体元素根据其形状和位置按照实际地图等比例绘制在图形文件中,在绘制主体元素的同时,标注每个主体元素的类别和主体元素ID;
4)使用图形文件到矢量数据的转换工具将上述图形文件转换为所述矢量数据。
优选地,其中收集附加数据的过程包括:根据所述主体元素ID添加所述附加数据,每一条附加数据包含一个主体元素ID,使得该条附加数据与对应于该条附加数据所包含的主体元素ID的主体元素相关联。
优选地,其中在绘制主体元素的同时,还标注每个主体元素属于电子地图的哪个区块的分块信息,在电子地图显示步骤中,仅显示部分区块的主体元素。
优选地,包括根据用户的输入,显示其中一部分层和一部分附加数据。
优选地,所述矢量数据为W3C标准SVG的变体,即矢量图数据加标注数据格式,其中矢量图数据描述了主体元素的形状和位置,标注数据描述了主体元素的类别和主体元素ID。
优选地,通过代码逻辑动态改变矢量数据。
优选地,在放大缩小电子地图时,根据分层存储的矢量数据重绘整张地图,在放大缩小的过程中各层均按照缩放比率基于矢量数据重新绘制。
优选地将附加数据分别组合到与附加数据的主体元素ID相对应的矢量数据中。
优选地,将所述附加数据保存为数据表的格式。
本发明提出的生成电子地图的方法,具体实现如下优点:
-电子地图的信息以矢量数据和附加数据存储,所有要显示的其它信息都是直接或间接根据主体元素的类别和主体元素ID控制,使得该方法生成的电子地图数据逻辑清楚,易于维护。主体元素的某个属性变化可以通过服务器直接更新,不会需要更新其它数据,不会影响整个地图。
-在数据存储方面,由于整个存储结构都是矢量数据,而且没有分层图片存储带来的信息冗余,所以存储代价较小。例如应用到商场室内地图中,平均每张商场地图仅需10K~20K。
-由于整个存储结构都是矢量数据,所以理论上可以无限度缩放(实际受限于显示设备内存和绘图能力),缩放不会出现不清晰的情况。
-由于不再有以图片格式存储和显示的“底图”,因此各个层的矢量图均可变,根据显示程序需要可以旋转、变色、选中、包含附加数据,也可以进行复杂变化。
-放大缩小地图时不会出现图3所示的底图跳变。如图7所示,每个主体元素都保存为矢量数据,可以任意拉伸而没有失真,因此,图7中的地图从左到右放大时文字信息和上层弹出窗口可以自动调整。
-每个主体元素都有属性,可以通过服务器实时修改而不需要修改地图形状本身,使得地图数据修改开销小。对于机场、展厅、公园、商场等场所的这种可变性大,精准度要求高的小型电子地图来说,非常适合长期数据维护。
-每个主体元素都是一个对象,具备可操作性。支持交互设计。比如用户点击这个对象,就可以查看详细信息,报告错误等。
-附加数据的显示可以根据主体元素的变化自动调整,例如图7,地图从左到右放大时文字信息和上层弹出窗口可以自动调整适配到最合适比例,文字粗细并没有等比例拉伸,而弹出窗口保持了位置和大小的恒定。
附图说明
通过以下结合附图的详细说明,本发明的优点和特征将更加明显。其中附图包括:
图1显示了传统的电子地图的生成原理的示意图;
图2a-图2c显示了传统的电子地图的缩放过程的示意图;
图3显示了根据本发明的一个实施例的生成电子地图的方法的流程图;
图4显示了根据本发明的方法的一个实施例的数据收集过程的流程图;
图5a-图5c显示了根据图4的数据收集过程绘制的图形文件;
图6a-图6e显示了根据本发明的方法的电子地图显示步骤绘制的电子地图的一个示例;
图7显示了根据本发明的电子地图的缩放过程的示意图。
具体实施方式
本发明提出了一种生成电子地图的方法,图3显示了该方法的流程图,其中该方法包括:
-数据收集步骤,收集矢量数据和与所述矢量数据相对应的附加数据,其中所述矢量数据包含与所述电子地图相对应的场所的多个主体元素的形状、位置、类别、主体元素ID,所述附加数据包含各个所述主体元素的多个属性,所述主体元素是与所述电子地图相对应的场所的各个组成部分;所述附加数据与每个所述主体元素的主体元素ID相关联;
-数据存储步骤,将收集到的所述矢量数据和附加数据存储在服务器数据库中,其中将不同类型的主体元素的对应的矢量数据存储为多个层,使得每一种类型的主体元素的矢量数据保存为一层;-电子地图显示步骤,电子地图显示端从服务器获取所述矢量数据和所述附加数据,逐层地根据每一层的矢量数据绘制对应于该层的矢量图,并添加与该层的矢量数据中的各个主体元素ID相关联的附加数据,从而在显示装置上生成了所述电子地图。
以下将结合具体实施例,详细地介绍本发明的方法的各个步骤的具体实施方式。
数据收集
本发明的要收集的电子地图的数据可以分为两类:一类是矢量数据;一类是对应于矢量数据的附加数据。矢量数据包含电子地图所对应的场所的多个主体元素的形状和位置信息。附加数据包含各个主体元素的多个属性,可与矢量数据分开录入。本文所说的“主体元素”是指电子地图所描绘的场所的各个组成部分,例如商场中的边界轮廓、挑空区域、店铺、路径、公共设施等等,其在电子地图所表现的场所中具有一定的形状和位置,本文所说的“附加数据”是指包括各个主体元素所具有的多个属性的数据,例如店铺的名称、显示颜色、所在楼层、店铺编号、营业时间、关联品牌、详细介绍等等。
图4显示了根据本发明的方法的一个实施例的数据收集过程的流程图,图5以商场的电子地图为例,显示了根据图4的收集过程绘制的图形文件。
矢量数据的收集过程包括:
步骤一:获取数据源,即获取电子地图所对应的场所的实际地图,该地图可以是例如商场的建筑图,公园的地形图等,可为照片,图片、纸件等任意形式。为便于描述,在下文中我们以商场地图为例,首先获取商场建筑图,如图5a所示。
步骤二:将矢量数据信息录入图形文件中。矢量数据信息是指要转换为矢量数据的各种信息,包括各个主体元素的位置、所述类别、主体元素ID等等,其中主体元素ID可作为主体元素的唯一标识符。将矢量数据信息录入图形文件中的过程包括:首先确认要收集的主体元素,并按照实际需要,根据主体元素的功能、变动是否频繁等原则对主体元素进行分类。接下来,将各个主体元素根据其形状和位置按照实际地图等比例按类绘制在图形文件中。在绘制主体元素的同时,标注每个主体元素的所属类别和主体元素ID。例如,在本发明的一实施例中,确认要收集的主体元素包括商场的边界轮廓、挑空区域、各个店铺、通道、公共设施(服务台,ATM等)等等,将这些主体元素按功能分为边界和挑空类、店铺类、通道类、公共设施类等(也可按其他原则分类,例如按照是否主体元素变动的频率分为固定区域类、临时区域类等),在图形化编辑界面上按该商场的实际建筑图的比例逐类地按照其各自形状和位置绘制以上边界和挑空类、店铺类、通道类、公共设施类中的各个主体元素,如图5b所示,并在绘制的同时标注每个主体元素所属的类别和ID,主体元素绘制并标注完成后的示意图如图5c所示。优选地,还可标注主体元素的分块信息,即表示主体元素在场所中所属的区块的信息,以在后续绘图时减小时间损耗,但是对于商场等较小场所来说,本发明的方法中并不一定需要这种分块信息。可利用本领域已知的多种图形化编辑工具来绘制主体元素并标注其类别和ID,因此这里不再详细介绍。
步骤三:使用图形文件到矢量数据的转换工具(如InkScape等软件工具)将包含矢量数据信息的上述图形文件转换为矢量数据。所述矢量数据包括对应于各个主体元素的矢量数据,矢量数据的格式可以为例如W3C标准SVG的变体,即矢量图数据+标注数据,矢量图数据描述了主体元素的形状和位置,标注数据描述了主体元素的类别、ID,还可包括分块信息。同时矢量数据本身在不同条件下可以通过代码逻辑动态改变,其中如本领域技术人员所知,SVG即可缩放矢量图形(Scalable Vector Graphics,SVG)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。SVG由W3C制定,是一个开放标准。
以下是转换得到的矢量数据的片段的示例:
每一个path节点都包含一个主体元素的矢量数据,每个主体元素的矢量数据都包含有之前录入的主体元素的位置、形状以及主体元素的类别和主体元素ID。以以上矢量数据片段为例,字段id=″STR-F3-06″包含了主体元素的类型“STR”,即实体店,以及主体元素ID“F3-06”,在商场的实施例中,“F3-06”可以是商铺编号。字段d=″m447.04961,192.64734 h -68.68536 v 5.82631 l -11.60226,0.23305-6.1492,19.80944 h 86.43682 v-25.8688z″表示绘制该主体元素的路径信息。路径信息的解析参考W3C给出的SVG国际标准。
数据收集的过程还可包括:根据主体元素ID添加附加数据。该附加数据的录入可以与矢量数据的录入完全分开,并保存为例如数据表的格式,每一条附加数据包含一个主体元素ID,使得该附加数据与对应于该主体元素ID的主体元素相关联。附加数据可由不同资格的录入人员,在不同的时间完成,对数据的同步录入要求很低。
表1是不同主体元素与其附加数据的示例:
表1
其中“编号”一栏即为本实施例中的主体元素ID,通过该主体元素ID可将每一行所表示的每一条附加数据与上文中的每个主体元素的矢量数据关联在一起。
可选地,还可通过进一步的数据转换,将附加数据分别组合到与其主体元素ID相对应的主体元素的矢量数据中,以便于后续的存储和显示。以下面的矢量数据为例,结合该主体元素ID“1240147”对应的附加数据,可得到新的添加了附加数据的矢量数据:
<unit id=″1240147″name=″K-BOXING″type=″STR″rno=″F3-06″rect=″379.201,216.899,67.3174,23.4684,0″d=″M 447.05,192.647 H 378.364 V198.474 L 366.762,198.707 360.613,218.516 H 447.05 V 192.647 z″/>
可以看到这家店铺的店名″K-BOXING″已经作为附加数据被加了进来。
数据存储
在获得了上述矢量数据和附加数据之后,将获得的所有数据存储在服务器数据库中。
不同于传统的电子地图数据存储方式,根据本发明的方法,每张地图可以是完整的,不做分块存储。优选地,矢量数据也可以包含分块信息,即每个主体元素的矢量数据中包含这个主体元素属于哪个区块这样的信息,这样可以在绘图时减少时间损耗,即不在当前显示范围内的主体元素不需要显示。
将不同类型的主体元素的对应的矢量数据分层存储,这里的“分层”对应于数据收集过程中的主体元素的“分类”,也就是说,每一种类型的主体元素的矢量数据保存为“一层”。例如,在本发明的一个实施例中,商场的边界及挑空类主体元素的矢量数据保存为层1,店铺类主体元素的矢量数据保存为层2,通道类主体元素的矢量数据保存为层3,公共设施类主体元素的矢量数据保存为层4,等等。这种分层存储没有重复存储,不会有现有技术中的图片分层的数据冗余问题。
附加数据可以以数据表的形式存储,这样,就得到了以矢量数据形式存储的主体元素的矢量数据,以及以数据表的形式存储的附加数据,矢量数据和附加数据通过主体元素ID关联在一起。矢量数据和附加数据在录入、存储和显示上是完全分离的,附加数据只要关联到主体元素ID即可,不用考虑坐标等因素。
电子地图显示
电子地图显示端在从服务器获取矢量数据和附加数据后,就可以绘制到显示装置的相应的区域以显示电子地图,图6以商场地图为例,显示了根据电子地图显示步骤绘制的电子地图。
电子地图显示过程主要包括:获取上述矢量数据和附加数据,基于各主体元素的类别和主体元素ID信息在电子地图的显示端进行逐层绘制。例如,在本发明的一个实施例中,提取存储为“层1”的矢量数据,绘制对应于商场的边界轮廓及挑空区域的第一层矢量图(如图6a所示),再依次提取对应于“层2”、“层3”、“层4”的矢量数据,依次绘制对应于店铺的第二层矢量图,对应于通道的第三层矢量图,和对应于公共设施的第四层矢量图等,图6b描述了根据矢量数据逐层绘制的矢量图的示意图。在基于每一层的矢量数据绘制每一层矢量图时,可根据附加数据的内容,在所显示的矢量图上为每个主体元素添加与其主体元素ID对应的附加数据,图6c显示了添加附加数据之后的电子地图的示意图。其中附加数据中的名称区域可以根据对应的主体元素自身的形状数据算出内接矩形。
在本发明的另一实施例中,也可以仅根据用户的需要,显示其中一部分层和一部分附加数据。例如,当用户仅需要了解店铺的分布情况时,可在输入设备中输入店铺所对应的主体元素的类别,从而仅提取并显示店铺层的主体元素,而不显示其他层的主体元素。再例如,当用户点击电子地图时,可根据点击坐标判断用户点击的对象,并做出相应高亮,弹出该对象包含的主体元素的附加数据,如图6d所示。
当用户放大缩小地图时,根据分层存储的矢量数据重绘整张地图,由于各类主体元素对应的层都是以矢量数据存储的,因此在放大缩小的过程中各层均按照缩放比率基于矢量数据重新绘制,到因此没有任何像素丢失和缩放失真,如图6e所示。由于在绘制电子地图时,是逐个绘制每个主体元素,并逐个添加每个主体元素的各个属性(附加数据),因此可以决定是否绘制这个主体对象,是否绘制这个主体对象的某个属性。每一层的主体元素可以根据放大率在重绘时决定是否显示,以哪些属性(颜色,转角等)显示,名字,图标等附加数据根据主体元素的变化动态改变。比如说,在绘制某个店铺的文字的步骤中,可以判断当前的缩放比率,如果比率过小,则不绘制文字,以免整个地图上看起来都是密密麻麻的文字。
在本发明的又一优选实施例中,可利用标准SVG支持弧线绘制的功能,在电子地图显示的过程中绘制平滑的圆弧和曲线,相较于传统的基于GIS的仅能描绘多边形和折线的方案,以及未充分利用SVG中的弧线绘制功能的方案来说,本实施例能够显示更加准确美观的电子地图。
尽管以上主要以商场为例,介绍了根据本发明的生成电子地图的方法,本领域技术人员应理解,以上方法同样适用于公园、机场、展厅等其他场所。
上述实施例是用于例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修改。因此本发明的保护范围,应如本发明的权利要求书所列。