矢量地图服务的处理方法和装置与流程

文档序号:12720287阅读:336来源:国知局
矢量地图服务的处理方法和装置与流程

本发明涉及地理信息技术领域,特别是涉及一种矢量地图服务的处理方法和一种矢量地图服务的处理装置。



背景技术:

随着以Web(World Wide Web,万维网)为中心的、全新的GIS(Geographic Information System,地理信息系统)应用模式的到来,地图服务的技术和内容也在发生深刻的变化。2005年,Google(谷歌)向世界介绍一种“光滑制图”的技术,依靠开发一种新的规则来提供地图图片切片,以及由AJAX(Asynchronous JavaScript And XML)提供驱动的浏览器功能,这大大改善了用户和电子地图的交互体验。这种栅格切片的格式和规范迅速被采用并且复制在很多地图技术上。随着技术的进步和提高,新出现的矢量切片使用一些新的技术来控制动态的可交互的地图展示方式,人们可以动态的赋予基础底图样式以及通过联合可交互的工作数据设计瓦片样式,根据内容进行智能制图和实时分析并展示在基础地图上。

无论是栅格切片还是矢量切片,目前采用的方法都是预先将空间数据以建立金字塔的方式,将原始数据分割成一个一个描述性文件,然后在前端根据显示需要按需请求不同的瓦片数据进行Web绘图。我们知道,在按照金字塔生成瓦片时,瓦片会按照金字塔的级别成几何倍数的增长,也是比例尺越大,需要生成瓦片的数量就越多。以常用的四分法切片来说,每下一级切片数是上一级的4倍,例如,第20级切片的瓦片数量是240之多。因此目前的方案不可避免地占用了大量的服务器存储空间。



技术实现要素:

基于此,有必要针对上述问题,提供一种矢量地图服务的处理方法和装置,能够有效节省服务器的存储空间。

一种矢量地图服务的处理方法,包括步骤:

获取请求绘制的第一瓦片的瓦片信息,所述瓦片信息包括层级和位置;

根据所述第一瓦片的瓦片信息确定所述第一瓦片是否在预先生成的静态瓦片内;所述静态瓦片的层级小于等于预设层级;

若所述第一瓦片不在所述静态瓦片内,按照层级从高到低的顺序查找所述静态瓦片,得到所述第一瓦片对应的第二瓦片;所述第二瓦片的层级低于所述第一瓦片的层级,且位置与所述第一瓦片的位置对应;

根据所述第二瓦片的瓦片信息对所述第二瓦片执行一分N切片操作,得到N个第三瓦片;所述第三瓦片的层级比所述第二瓦片的层级高一级,且位置与所述第二瓦片的位置对应;

若所述第三瓦片的层级低于所述第一瓦片的层级,根据所述第三瓦片的瓦片信息分别对各个第三瓦片执行一分N切片操作,并依次类推直到得到所述第一瓦片相应层级的瓦片;

获取所述第一瓦片相应层级的瓦片所关联的地图要素数据,以此绘制所述第一瓦片。

一种矢量地图服务的处理装置,包括:

瓦片信息获取模块,用于获取请求绘制的第一瓦片的瓦片信息,所述瓦片信息包括层级和位置;

第一瓦片检测模块,用于根据所述第一瓦片的瓦片信息确定所述第一瓦片是否在预先生成的静态瓦片内;所述静态瓦片的层级小于等于预设层级;

第二瓦片查找模块,用于在所述第一瓦片不在所述静态瓦片内时,按照层级从高到低的顺序查找所述静态瓦片,得到所述第一瓦片对应的第二瓦片;所述第二瓦片的层级低于所述第一瓦片的层级,且位置与所述第一瓦片的位置对应;

切片模块,用于根据所述第二瓦片的瓦片信息对所述第二瓦片执行一分N切片操作,得到N个第三瓦片;所述第三瓦片的层级比所述第二瓦片的层级高一级,且位置与所述第二瓦片的位置对应;在所述第三瓦片的层级低于所述第一瓦片的层级时,根据所述第三瓦片的瓦片信息分别对各个第三瓦片执行一分N切片操作,并依次类推直到得到所述第一瓦片相应层级的瓦片;

第一瓦片绘制模块,用于获取所述第一瓦片相应层级的瓦片所关联的地图要素数据,以此绘制所述第一瓦片。

上述矢量地图服务的处理方法和装置,预先生成低层级的静态瓦片,这部分数据量较少,可以预先保存起来,当请求高级别的瓦片数据时,先找到静态瓦片中与请求的瓦片有关联关系的瓦片,然后基于查找到的该瓦片动态生成请求的瓦片数据。由于只需要存储低层级的静态瓦片,高层级的瓦片根据静态瓦片动态生成,所以有效避免了大比例尺下瓦片占用大量的存储空间,节省了服务器的存储空间。

附图说明

图1为一实施例的矢量地图服务的处理方法的流程示意图;

图2为一实施例的对地图要素数据进行预处理的流程示意图;

图3为一实施例的静态瓦片数据生成的流程示意图;

图4为一具体实施例的请求的瓦片动态生成的流程示意图;

图5为一实施例的地图要素数据更新的流程示意图;

图6为一实施例的矢量地图服务的处理装置的结构示意图。

具体实施方式

为更进一步阐述本发明所采取的技术手段及取得的效果,下面结合附图及较佳实施例,对本发明的技术方案,进行清楚和完整的描述。

如图1所示,一种矢量地图服务的处理方法,包括步骤:

S110、获取请求绘制的第一瓦片的瓦片信息,所述瓦片信息包括层级和位置;

S120、根据所述第一瓦片的瓦片信息确定所述第一瓦片是否在预先生成的静态瓦片内;所述静态瓦片的层级小于等于预设层级;

S130、若所述第一瓦片不在所述静态瓦片内,按照层级从高到低的顺序查找所述静态瓦片,得到所述第一瓦片对应的第二瓦片;所述第二瓦片的层级低于所述第一瓦片的层级,且位置与所述第一瓦片的位置对应;

S140、根据所述第二瓦片的瓦片信息对所述第二瓦片执行一分N切片操作,得到N个第三瓦片;所述第三瓦片的层级比所述第二瓦片的层级高一级,且位置与所述第二瓦片的位置对应;

S150、若所述第三瓦片的层级低于所述第一瓦片的层级,根据所述第三瓦片的瓦片信息分别对各个第三瓦片执行一分N切片操作,并依次类推直到得到所述第一瓦片相应层级的瓦片;

S160、获取所述第一瓦片相应层级的瓦片所关联的地图要素数据,以此绘制所述第一瓦片。

上述矢量地图服务的处理方法可以通过相应的程序实现,程序可以运行在后台地图服务的设备中,例如服务器中。该方法预先生成小比例尺的静态瓦片,大比例的瓦片则根据请求动态生成,因此有效节省了存储空间。

在地图服务的实际应用场景中,在小比例尺情况下,通常并不需要了解每个地图要素的细节,而在大比例尺的情况下,通常并不需要显示全部的要素。因此,在处理地图服务时,在比例尺较小时采用预先生成的办法,得到简化抽稀的数据,这部分数据量较少,可以预先保存起来;在比例尺较大时,则基于前期预生成的数据动态生成小范围的瓦片数据。这样即能满足在小比例尺快速显示的全部要素的特征,也能避免大比例尺下瓦片占用大量存储空间的要求。基于该发明构思,下面对矢量地图服务的处理方法的技术方案进行详细介绍。

为了优化后续瓦片数据生成时的效率等,需要对地图服务中每个图层的地图要素数据进行预处理,因此,在一个实施例中,矢量地图服务的处理方法还可以包括步骤S100:对瓦片所关联的地图要素数据进行预处理。

对地图要素数据进行预处理有多种实现方式,例如,在一个实施例中,步骤S100可以包括:

S1001、按层级对地图要素数据进行简化处理;

为了更好地对地图要素数据进行简化处理,在一个实施例中,如图2所示,按层级对地图要素数据进行简化处理之前,还包括步骤:对地图图层中的地图要素数据进行标准化。坐标数据标准化即将坐标数据标准化为预设区间的数据,例如,将图层的坐标数据标准化为[0,1]区间的数据。标准化可以根据地图服务所定义的最大范围来实现。

简化处理包括对要素坐标点的简化和要素的过滤,下面对要素坐标点的简化和要素的过滤进行简单介绍。

根据瓦片的层级来简化各个要素,要素的简化可以根据现有技术中已有的方式实现。例如,首先确定初始层级0的容限阈值为R,对于标准四分瓦片的后续容限阈值,则为R*2^zoom,zoom表示层级。又例如,对于不同的要素采用不同的算法,如:对于线和面要素可以采用修正Ramer–Douglas–Peucker算法;对于点要素可以采用简单的点聚合算法。

过滤要素有多种实现方式,例如,在当前层级中,对于线要素而言,当线要素的周长小于容限(R*2^zoom)时,则过滤到该要素,又例如,对于面要素而言,当面要素的面积小于容限(R*4^zoom)时,则可过滤掉该要素。

S1002、对简化处理后的地图要素数据进行层级标记,所述层级标记用于在生成/绘制瓦片时确定所需的地图要素数据,且所需的地图要素数据的层级标记小于等于当前待生成/绘制瓦片的层级。

对各个要素简化后,将简化后的数据保存起来。相较于现有技术中简化后直接删除数据的方式,本发明为了避免多次计算,并不删除任何数据,而是在每个坐标点添加被简化所在层级的标记,即层级标识,这样可以大大优化后续瓦片数据生成时效率,仅通过简单的比较就可以过滤掉不需要的数据。例如,某一坐标点的层级标识为4,则当层级小于4时,该坐标点将被忽略,即该坐标点不参与生成4以下层级的要素图形。

同样也可记录该要素可被过滤的层级,即添加层级标识,并不移除该要素。例如,某一要素的层级标识为4,则当层级小于4时,该要素将被忽略,即该要素不参与生成4以下层级的瓦片。

由于本发明需要根据小比例尺的静态瓦片数据动态生成请求的大比例尺的瓦片数据,所以需要先根据地图服务中图层的描述,确定图层的静态瓦片的保留级别,即需要存储的瓦片的层级,也即是确定预设层级。兼容各种不同的处理器,如果将每个瓦片的点数降到10000以下,则以后层级采用动态生成。根据数据量的情况,在一个实施例中,静态瓦片数据的保留级别为6-8级,这样最多的瓦片数也只有65536个,能够做到快速生成。需要说明的是,本发明并不对保留级别的具体层级做出限定,用户还可以根据处理器的具体情况确定其它保留级别,例如9级等。

设置好静态瓦片的保留级别后,可以预先生成静态瓦片,即在一个实施例中,矢量地图服务的处理方法还可以包括步骤:生成静态瓦片。可以根据上述实施例中所预处理后的地图要素数据生成静态瓦片,以提高静态瓦片的生成效率,也可以根据其它方式预处理后的地图要素数据生成静态瓦片,本发明并不对此做出限定。

在一个实施例中,生成静态瓦片的步骤可以包括:

根据层级最小的地图要素数据生成底层静态瓦片;对底层静态瓦片执行一分N切片操作,得到N个第四静态瓦片;所述第四静态瓦片的层级比底层静态瓦片的层级高一级,且位置与底层静态瓦片的位置对应;

若所述第四静态瓦片的层级低于预设层级,对各个第四静态瓦片执行一分N切片操作,并依次类推直到得到预设层级的静态瓦片。

底层静态瓦片为初始层级的瓦片,即一般所述的第0层级的瓦片。另外,也可以在生成第0层级的瓦片之后先检测第0层级是否低于预设层级,然后再对底层静态瓦片执行一分N切片操作,依次循环,参照上一层级数据生成本层级的瓦片,直至生成预设层级的瓦片。

如图3所示,从第0层级开始,先生成第0层级的静态瓦片数据,假设静态瓦片数据的保留条件为6级,则接着在第0层级的静态瓦片数据的基础上,按照预设切片方式生成第1层级的静态瓦片数据,例如将第0层级的静态瓦片数据一分为四,产生4个第1层级的静态瓦片数据。依次循环,只到最后生成静态瓦片数据的保留条件的所有瓦片,即最后生成第6层级的静态瓦片数据。如果前面已经对地图要素数据进行了预处理,所以此时生成的静态瓦片数据已经没有被过滤掉的要素和点。

另外,在生成静态瓦片数据时,在处理图层要素坐标点数据分隔时,可以先根据外包矩形来判断是否需要将这些数据是否包含在当前瓦片中,只需处理包含在当前瓦片中的数据点。

生成静态瓦片数据后,则可以根据请求动态生成所需的瓦片数据。地图服务的前端根据显示需要请求瓦片数据进行绘图,地图服务的后端获取请求瓦片的瓦片信息,瓦片信息包括层级和位置等,位置为行和列,然后根据该瓦片信息确定当前请求的瓦片是否在预先生成的静态瓦片数据内。

为了更好的检索瓦片,本发明采用容器技术来存储单个瓦片的数据。因此,在一个实施例中,矢量地图服务的处理方法还可以包括步骤:为每一个瓦片分配一个容器,用于存储该瓦片对应的瓦片信息和地图要素数据;容器的编号根据对应瓦片的层级和位置生成;每一个容器包括未分配空间以及若干独立空间,所述独立空间与瓦片所关联的图层一一对应,用于存储相应图层的地图要素数据,所述未分配空间用于在瓦片更新时,缓存新插入图层的地图要素数据。

将瓦片的层级和位置(行和列)根据特定的Hash(哈希)算法(也可以是MapQuest或者GeoHash等)将其组合成容器的唯一编号,这样就可以通过高效的字典索引方式来检索容器。这类Hash算法的特点是不仅能生成容器的唯一编号,而且能够反算容器的层级、行、列,快速找到瓦片的上一层级或下一层级的瓦片编号。

另外,对于具有业务底图性质的地图服务,通常都有动态移除或添加某个图层的需求,传统技术中的预先生成所有瓦片的方式则不能满足这样的需求。因此,针对该缺陷,本发明在单个容器中给不同的图层建立独立的空间,每个图层的数据单独存放在独立的空间中,同时预留一定的未分配空间。独立空间的大小可以以一次读取的缓存为限,保证只读一次就能将所有数据读到内存中。由于预留有未分配空间,所以在某一图层更新时,可以方便插入新的图层数据至对应容器的未分配空间。同时,由于不同图层数据的分开存储,在瓦片读取时,可以直接过滤掉不需要的图层数据,也可以直接移除某一个图层。

在一个实施例中,根据所述第一瓦片的瓦片信息确定所述第一瓦片是否在预先生成的静态瓦片内的步骤可以包括:

将所述第一瓦片对应的第一容器的编号和所述静态瓦片对应的容器的编号进行匹配;

若匹配,确定所述第一瓦片在预先生成的静态瓦片内,若不匹配,确定所述第一瓦片不在预先生成的静态瓦片内。

需要说明的是,本发明并不限定于采用容器编号的方式检索瓦片,本领域技术人员还可以采用其它方案,例如,根据瓦片的行列以及切片方式等对瓦片进行检索。

若在静态瓦片数据内,则可以直接调用对应的瓦片数据进行绘图,即在一个实施例中,矢量地图服务的处理方法还可以包括步骤:若所述第一瓦片在所述静态瓦片内,获取所述第一瓦片对应的静态瓦片所关联的地图要素数据,并根据该地图要素数据绘制所述第一瓦片,从而满足在小比例尺下快速显示全部要素的特征。若不在静态瓦片数据内,则需要进行后续的处理。

由于初始已经确定了静态瓦片数据的保留级别,而且保留级别已经包含了所有的细节数据。当需要更高级别的瓦片数则快速找到静态切片保留级别的数据。以此数据为基础按照静态瓦片数据生成的算法,动态生成的所需的瓦片。查找时按照从高到低的顺序进行,若静态瓦片的高层级中查找到关联的瓦片,则不再执行查找,直接根据该查找到的瓦片生成请求的瓦片。例如,静态瓦片的保留级别为6,若在第6层级查找到关联的瓦片,则直接根据该瓦片生成请求的瓦片,不再继续查找。

查找静态切片保留级别的数据有多种实现方式,例如,在一个实施例中,按照层级从高到低的顺序查找所述静态瓦片,得到所述第一瓦片对应的第二瓦片的步骤包括:

S1301、根据所述第一容器的编号获取第二容器的编号;所述第二容器对应瓦片的层级比所述第一瓦片的层级低一级,且位置与所述第一瓦片的位置对应;

当前层级与当前层级的上一层级的瓦片的关联关系是确定的,例如,在采用四分法切片时,上一层级的一个瓦片生成当前层级的4个瓦片,则上一层级的瓦片与当前层级的4个瓦片关联。根据请求的瓦片可以知道上一层级中与请求的瓦片关联的瓦片的信息,根据该信息得到上一层级中对应容器的编号。

S1302、若所述第二容器的编号和所述静态瓦片对应的容器的编号不匹配,根据所述第二容器的编号获取第三容器的编号,并以此类推直到得到和所述静态瓦片对应的容器的编号匹配的容器的编号;

当上一层级的容器存在时,则找到静态切片所保留的级别的容器编号。当容器不存在时,则通过容器编号继续查找再上一层级的容器编号,并对再上一层级容器进行快速定位,以此类推,最终必然能找到静态切片所保留级别的容器编号,从而快速定位到保留级别的容器。

S1303、获取匹配的容器的编号对应的瓦片,作为所述第一瓦片对应的第二瓦片。

根据查询到的静态瓦片保留级别的瓦片的编号取出保留级别的瓦片的数据,以此数据为基础按照静态瓦片数据生成的算法,动态生成的所需的瓦片。另外,在具体实施中通常缓存所需瓦片的上一层级的数据,这样就可以快速生成该瓦片相邻的瓦片。

如图4所示,在一个具体实施例中,动态生成请求的瓦片的数据的步骤包括:根据当前请求的瓦片,查找静态瓦片保留级别的瓦片;将查找到的瓦片进行一分四切片;判断是否得到请求的瓦片,若未得到,对上述一分四切片后的瓦片继续进行一分四切片,依次循环,直至得到所需的瓦片数据。

在地图服务中的某个图层中数据可能发生变化,需要更新时,传统技术中的方案需要更新整个地图服务的瓦片,这又需要大量耗时的操作,导致不能及时更新,也使该类地图服务的应用局限与业务底图服务。针对该缺陷,本发明提供了一种在某要素更新时可以仅对部分数据进行更新的方法。在一个实施例中,如图5所示,矢量地图服务的处理方法还可以包括步骤:

S170、当检测到地图要素数据更新时,获取更新的地图要素数据,对更新的地图要素数据进行预处理;

当某个地图服务的某个要素发生了更新,则需要重新对该要素进行预处理。预处理有多种实现方式,例如,在一个实施例中,对更新的要素进行预处理的步骤包括:将更新的要素的各个坐标点进行标准化;对标准化后的更新的要素进行简化,并在每个坐标点中添加被简化所存在层级的标记;对标准化后的更新的要素进行过滤,并在更新的要素添加被过滤所在层级的标记。即对更新的要素预处理的方式可以采用图2相同的预处理方式。本领域技术人员也可以采用现有技术中其它的方式对更新的要素进行预处理。

S180、根据更新的地图要素数据的层级标记和位置确定预处理后的地图要素数据影响的静态瓦片的范围;

范围包括层级、行和列。计算更新的要素影响的静态瓦片的范围有多种实现方式,本发明优选为粗略匹配方式,例如,瓦片为三角形,采用外包矩形来计算更新要素影响的静态切片范围,相较于采用三角形来精确计算更新要素影响的静态切片范围,粗略匹配方式大大提高了计算的效率。

S190、用更新的地图要素数据对所述范围的静态瓦片进行更新。

例如,更新的元素影响第4层级至第8层级,第4层级具体为第2行第3列,则从第4层级开始,对第4层级第2行第3列的要素进行更新,然后对更新的要素进行一分四切片,得到第5层级更新的数据,以此类推,直至得到第8层级更新的数据。

由于仅需预处理改变的要素,和重新生成受影响的瓦片,对原有的数据更新流程不会增加太多的工作量,能够快速、及时地反映数据更新的情况。

基于同一发明构思,本发明还提供一种矢量地图服务的处理装置,下面结合附图对本发明装置的具体实施方式做详细描述。

如图6所示,一种矢量地图服务的处理装置,包括:

瓦片信息获取模块110,用于获取请求绘制的第一瓦片的瓦片信息,所述瓦片信息包括层级和位置;

第一瓦片检测模块120,用于根据所述第一瓦片的瓦片信息确定所述第一瓦片是否在预先生成的静态瓦片内;所述静态瓦片的层级小于等于预设层级;

第二瓦片查找模块130,用于在所述第一瓦片不在所述静态瓦片内时,按照层级从高到低的顺序查找所述静态瓦片,得到所述第一瓦片对应的第二瓦片;所述第二瓦片的层级低于所述第一瓦片的层级,且位置与所述第一瓦片的位置对应;

切片模块140,用于根据所述第二瓦片的瓦片信息对所述第二瓦片执行一分N切片操作,得到N个第三瓦片;所述第三瓦片的层级比所述第二瓦片的层级高一级,且位置与所述第二瓦片的位置对应;在所述第三瓦片的层级低于所述第一瓦片的层级时,根据所述第三瓦片的瓦片信息分别对各个第三瓦片执行一分N切片操作,并依次类推直到得到所述第一瓦片相应层级的瓦片;

第一瓦片绘制模块150,用于获取所述第一瓦片相应层级的瓦片所关联的地图要素数据,以此绘制所述第一瓦片。

上述矢量地图服务的处理装置可以运行在后台地图服务的设备中,例如服务器中。该装置预先生成小比例尺的静态瓦片,大比例的瓦片则根据请求动态生成,因此有效节省了存储空间。

为了优化后续瓦片数据生成时效率等,需要对地图服务中每个图层的地图要素数据进行预处理,因此,在一个实施例中,矢量地图服务的处理装置还可以包括预处理模块,所述预处理模块对瓦片所关联的地图要素数据进行预处理。

预处理模块对地图要素数据进行预处理有多种实现方式,例如,在一个实施例中,预处理模块可以包括:

要素简化单元,用于按层级对地图要素数据进行简化处理;简化处理的过程可以根据现有技术中已有的方式实现。

在一个实施例中,预处理模块还可以包括与要素简化单元相连的标准化单元,标准化单元用于将瓦片所关联的地图要素数据中的坐标点进行标准化。要素简化单元根据瓦片的层级对标准化后的地图要素数据进行简化。

标记设置单元,用于对简化处理后的地图要素数据进行层级标记,所述层级标记用于在生成/绘制瓦片时确定所需的地图要素数据,且所需的地图要素数据的层级标记小于等于当前待生成/绘制瓦片的层级。

由于本发明需要根据小比例尺的静态瓦片数据动态生成请求的大比例尺的瓦片数据,所以需要先根据地图服务中图层的描述,确定图层的静态瓦片的保留级别,也即是确定预设层级。设置好静态瓦片的保留级别后,可以预先生成静态瓦片,即在一个实施例中,矢量地图服务的处理装置还可以包括静态瓦片生成模块,所述静态瓦片生成模块用于生成静态瓦片。

在一个实施例中,所述静态瓦片生成模块根据层级最小的地图要素数据生成底层静态瓦片;对底层静态瓦片执行一分N切片操作,得到N个第四静态瓦片;所述第四静态瓦片的层级比底层静态瓦片的层级高一级,且位置与底层静态瓦片的位置对应;若所述第四静态瓦片的层级低于预设层级,对各个第四静态瓦片执行一分N切片操作,并依次类推直到得到预设层级的静态瓦片。另外,所述静态瓦片生成模块在生成静态瓦片数据时,在处理图层要素坐标点数据分隔时,可以先根据外包矩形来判断是否需要将这些数据是否包含在当前瓦片中,只需处理包含在当前瓦片中的数据点。

生成静态瓦片数据后,则可以根据请求动态生成所需的瓦片数据。地图服务的前端根据显示需要请求瓦片数据进行绘图,瓦片信息获取模块110获取请求瓦片的瓦片信息,瓦片信息包括层级和位置等,位置为行和列,然后第一瓦片检测模块120根据该瓦片信息确定当前请求的瓦片是否在预先生成的静态瓦片数据内。

为了更好的检索瓦片,本发明采用容器技术来存储单个瓦片的数据。因此,在一个实施例中,矢量地图服务的处理装置还可以包括容器分配模块,所述容器分配模块用于为每一个瓦片分配一个容器,用于存储该瓦片对应的瓦片信息和地图要素数据;容器的编号根据对应瓦片的层级和位置生成;每一个容器包括未分配空间以及若干独立空间,所述独立空间与瓦片所关联的图层一一对应,用于存储相应图层的地图要素数据,所述未分配空间用于在瓦片更新时,缓存新插入图层的地图要素数据。

在一个实施例中,第一瓦片检测模块120将所述第一瓦片对应的第一容器的编号和所述静态瓦片对应的容器的编号进行匹配;在匹配时,确定所述第一瓦片在预先生成的静态瓦片内,在不匹配时,确定所述第一瓦片不在预先生成的静态瓦片内。

需要说明的是,本发明并不限定于采用容器编号的方式检索瓦片,本领域技术人员还可以采用其它方案,例如,根据瓦片的行列以及切片方式等对瓦片进行检索。

若在静态瓦片数据内,则可以直接调用对应的瓦片数据进行绘图,即在一个实施例中,矢量地图服务的处理装置还可以包括绘图模块,所述绘图模块在所述第一瓦片在所述静态瓦片内时,获取所述第一瓦片对应的静态瓦片所关联的地图要素数据,并根据该地图要素数据绘制所述第一瓦片,从而满足在小比例尺下快速显示全部要素的特征。若不在静态瓦片数据内,则需要进行后续的处理。

第二瓦片查找模块130查找静态切片保留级别的数据有多种实现方式,例如,在一个实施例中,第二瓦片查找模块130根据所述第一容器的编号获取第二容器的编号;所述第二容器对应瓦片的层级比所述第一瓦片的层级低一级,且位置与所述第一瓦片的位置对应;在所述第二容器的编号和所述静态瓦片对应的容器的编号不匹配时,根据所述第二容器的编号获取第三容器的编号,并以此类推直到得到和所述静态瓦片对应的容器的编号匹配的容器的编号;获取匹配的容器的编号对应的瓦片,作为所述第一瓦片对应的第二瓦片。

根据查询到的静态瓦片保留级别的瓦片的编号取出保留级别的瓦片的数据,切片模块140以此数据为基础按照静态瓦片数据生成的算法,动态生成的所需的瓦片。第一瓦片绘制模块150获取所述第一瓦片相应层级的瓦片所关联的地图要素数据,以此绘制所述第一瓦片。另外,在具体实施中通常缓存所需瓦片的上一层级的数据,这样就可以快速生成该瓦片相邻的瓦片。

在地图服务中的某个图层中数据可能发生变化,需要更新时,传统技术中的方案需要更新整个地图服务的瓦片,这又需要大量耗时的操作,导致不能及时更新,也使该类地图服务的应用局限与业务底图服务。针对该缺陷,本发明提供了一种在某要素更新时可以仅对部分数据进行更新的方案。在一个实施例中,矢量地图服务的处理装置还可以包括数据更新模块,所述数据更新模块当检测到地图要素数据更新时,获取更新的地图要素数据,对更新的地图要素数据进行预处理;根据更新的地图要素数据的层级标记和位置确定预处理后的地图要素数据影响的静态瓦片的范围;用更新的地图要素数据对所述范围的静态瓦片进行更新。

上述矢量地图服务的处理装置的其它技术特征与上述矢量地图服务的处理方法相同,在此不予赘述。

上述矢量地图服务的处理方法和装置,与现有技术相互比较时,具备以下优点:

1、本发明预先生成小比例尺的静态瓦片,大比例尺的瓦片则根据请求动态生成,即保留了矢量瓦片数据的优势,又能避免越高层级瓦片占用的存储空间呈指数增长的问题,大大节省了存储空间。同时动态瓦片能够充分依据上一层级的少量数据快速生成,能够适应高并发网络环境。

2、相较于传统技术中在生成相关的瓦片数据时通常需要耗费大量的时间的缺陷,本发明降低了生成相关的瓦片数据时所耗费的时间。

3、本发明能够动态移除或添加某个图层,且在要素更新时仅重新生成受影响的静态瓦片,使得瓦片的更新能与要素的更新及时保持同步。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1