专利名称:条带状gis地图要素的缓存更新方法
技术领域:
本发明涉及地理信息系统(GIS)地图要素的缓存更新技术领域,特别是涉及一种条带状GIS地图要素的缓存更新方法。
背景技术:
做地图发布时,为了提升浏览性能,通常会使用现时比较流行的地图缓存技术(俗称“瓦片技术”)。即将地图设定为多个比例尺,按照一定的数学规则,把相应比例尺的地图切成一定规格的图片保存到计算机硬盘里。当用户通过客户端浏览器访问地图服务时,月艮务器直接返回当前地图坐标区域所对应的“瓦片”,而不需要根据每个请求实时地渲染地图,并创建出一幅图片来送到客户端。这样可以达到降低服务器负担,极大程度的提升地图浏览响应速度的效果。地图缓存是一个目录,包含了在特定比例尺级别下,地图范围内的图片块。服务器通过缓存返回图片块比返回实际的地片要快许多。如图1所示,地图被缓存成两个比例尺,服务器可以直接将这些块返回给客户端,而不需要根据每个请求实时地渲染地图。创建一个融合缓存后,地图服务缓存的目录结构如图2所示。目录的下一级目录是根据比例尺创建的,如LOO表示第一级比例尺,LOl表示第二级比例尺。每一级比例尺目录的下一级目录表示的是每个块的“行”,用“Rxxxxxxxx”即R加8位编码表示,如“R00000000”表示第一行,其他依次类推。再往下目录表示每个块的“列”的图片,用“Cxxxxxxxx”即C加8位编码表示,如“C00000000”表示第一列的图片,其他依次类推。由此可以看出,地图服务名称、地图数据组名称、地片的比例尺级数和地片在该级地图下的行列号生成唯一索引号,作为地图显示以及地图缓存的标识。conf.xml文件是缓存配置文件,描述了缓存的完整信息,包括组织机构、空间参考、图块比例尺等。地图缓存技术一般针对相对稳定的数据,因为地图切为“瓦片”以后,以图片的形式存在,对于数据的变化(这里指的是数据的几何形状变化)则不能及时的反应。要想地图的变化得到及时的反映,那就必须重建地图缓存。而重建地图缓存所花费的时间要视地图的区域范围和缓存的比例尺而定,为几分钟到几十个小时不等。现有的缓存更新方法通过重建地图缓存实现,主要从地图的区域范围和比例尺两个方面考虑进行更新,即按照全图、区域、要素范围进行更新,以及按照制定或推荐的比例尺创建缓存。而对于铁路、道路、河流等呈条带状分布的GIS地图要素,若按照区域或要素范围更新缓存,势必将更新范围之内且条带之外的内容,如图3所示,而这部分是没有变化的,不需要更新,这样一来必然增加了不必要的计算成本及时间开销。
发明内容
(一)要解决的技术问题本发明首先要解决的技术问题是如何实现GIS全局性地图缓存的快速更新。(二)技术方案
为了解决上述技术问题,本发明提供一种条带状GIS地图要素的缓存更新方法, 包括以下步骤
S1、利用GIS中条带状的地图要素,将备份的历史矢量数据,与编辑更新后的矢量 数据进行比较,识别出地图数据变化部分;
S2、以瓦片为单元,确定所述地图数据变化部分所覆盖的缓存区域,GIS中的地图 缓存数据以瓦片为单元进行存储;
S3、按照所述地图数据变化部分所覆盖的缓存区域,生成新的瓦片;
S4、将生成的新的瓦片替换所述地图数据变化部分所覆盖缓存区域的旧的瓦片。
优选地,步骤SI具体为利用GIS中条带状的地图要素,将备份的历史矢量数据, 与编辑更新后的矢量数据进行比较,识别出地图数据之外新增的、被取消掉的,以及编辑修 改部分的地图数据。
优选地,步骤S2具体为以所述地图数据变化部分为中心,以瓦片为单元框向所 述条带状GIS地图要素的两侧,一直延伸至覆盖所述地图数据变化部分的所有区域,然后 计算覆盖所述地图数据变化部分的所有区域的瓦片的数量及每个瓦片的对角坐标,从而确 定所述地图数据变化部分所覆盖的缓存面域。
优选地,步骤S3具体为使用地图缓存技术生成新的瓦片。
优选地,所述条带状GIS地图要素包括铁路、道路和河流。
(三)有益效果
上述技术方案具有如下优点本发明1.根据条带状GIS地图要素的特点,实现 了 GIS全局性地图缓存的快速更新;2.现有的缓存更新方法需要通过人工输入判别数据更 新,易出错,效率低,通过比较备份数据与编辑后的数据,识别图层数据更新变化的部分,有 针对性的只更新地图数据有变化部分的地图缓存,可以智能辨别数据变化更新部分,增加、 减少、编辑变化的部分不会遗漏或冗余,待更新的数据量比较清晰,能实现快速更新。3.以 数据更新变化的部分为中心,依次用瓦片的大小框向线路两侧,覆盖数据变化的范围区域, 从而计算出比较精确的且面积最小的缓存更新面域。
图1是分级比例尺的地图服务缓存示意图2是缓存文件夹及文件构成示意图3是本发明的方法流程图4是瓦片框向线路两侧覆盖数据变化区域示意图5是条带区域内地图缓存更新示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。以下实施 例用于说明本发明,但不用来限制本发明的范围。
本发明针对铁路、道路、河流等条带状地理信息系统GIS地图要素,提供一种在地 图更新变化比较频繁的情况下,将已经建立的地图存缓进行快速更新的方法。
创建地图缓存之前先要设计地图,在实际应用中Web地图包含底图和功能性的专题图层。底图的信息不需要经常更新,需要创建地图缓存;专题图层的信息往往需要实时更新,可以根据需要创建地图缓存及更新。因此要将底图和专题图层分开管理,需要在ArcMap中创建两个或更多的地图文档(*. mxd/*. msd),然后分别发布成独立的地图服务,再对底图的地图服务创建地图缓存,最后在Web地图中组成叠加的两个或多个地图服务层。根据铁路工程建设不同类型数据的需求,可以采用融合缓存、多图层缓存、以及按需缓存等多种方法创建地图缓存。融合缓存把所有图层群组在一起生成切片块。多图层缓存则为每个图层建立切片块,可以支持客户端控制图层显示、标注和要素选取。按需缓存则不是事先生成切片,而是根据客户端首次访问请求创建切片,可以节省空间和缓存创建时间。在建立地图缓存的过程中,需要对地图进行切片,切片结构包括比例尺等级、切片尺度以及缓存的切片原点。在创建切片结构时,可以自定义比例尺。切片结构原点是切片结构格网的左上角,大多数情况下,保持系统选择的原点,如果地图文档没有定义坐标参考,系统将选择地图最大范围的两倍范围作为地图原点。默认的切片宽度和高度是512像素块,可以选择它的倍数,如256或128,Windows磁盘最小块大小是4k,即同样图片,采用256需要16k空间,采用512只需要4k空间,因此使用512x512。在切片时还采用了反锯齿图像处理技术,利用前景和背景的像素接近边缘,让图像的边缘显示的更加光滑。地图缓存技术一般针对相对稳定的数据,因为地图切为“瓦片”以后,以图片的形式存在,对于数据的变化(这里指的是数据的几何形状变化)不能及时的反应,这就是地图缓存技术不足之处。要想地图的变化得到及时的反映,那就必须重建地图缓存。而重建地图缓存要视地图的区域范围和缓存的比例尺而定,时间为几分钟到几十个小时不等。因此,缓存的管理是一件相对麻烦的事情。对实时性要求比较高的系统来说,一般不建议使用地图缓存技术。但地图缓存带来的性能的体验非常良好,因此可以在此基础上进行一些改动,使其适应地图的更新操作十分必要。某些Web GIS系统由于涉及数据的编辑,数据更新频率较大,不适用缓存的方式发布,数据的实时性非常好,但地图的浏览和刷新性能非常差(刷新性能与数据的大小和图层的渲染复杂度有关),大量占用服务器资源,多用户连接的时候导致服务器不稳定等。经过反复的试验,针对上述的需求,本发明提出了以下的一种方案,以解决数据频繁变动和地图性能低下的问题。方案的基本思路根据铁路条带状的特点,GIS地图数据的更新主要在线路条带中,通过条带状缓存更新方法,实现铁路GIS全局性缓存的快速更新。如图3所示,本发明的方法具体步骤包括S0、在GIS中为地图服务生成地图缓存数据;S1、利用GIS中条带状的地图要素,将备份的历史矢量数据,与编辑更新后的矢量数据进行比较,识别出地图数据变化部分;具体为识别地图数据编辑变化的部分;识别备份数据之外新增的地图数据;识别备份数据中取消掉的地图数据。本步骤实现了有针对性的只更新地图数据有变化部分的缓存。S2、以瓦片为单元,确定所述地图数据变化部分所覆盖的缓存区域,GIS中的地图缓存数据以瓦片为单元进行存储;具体为以所述地图数据变化部分为中心,以瓦片为单元框向所述条带状GIS地图要素的两侧,一直延伸至覆盖所述地图数据变化部分的所有区域,然后计算覆盖所述地图数据变化部分的所有区域的瓦片的数量及每个瓦片的对角坐标,从而确定所述地图数据变化部分所覆盖的缓存面域。
一般来说,如果是点图形,对应的是一张瓦片,线、面图形一个图形有可能落在多张瓦片上面,如图4、图5所示。可以使用地图服务提供的API接口来获取瓦片的相关信息。 然后可以找到图形对应的瓦片的地图范围,并通过计算找到地图范围所对应的各级缓存的 “瓦片”的路径(根据切片原理和命名规则算出来)。
S3、按照所述地图数据变化部分所覆盖的缓存区域,生成新的瓦片;
使用地图缓存技术,按照更新面域内每个瓦片的路径(包括坐标和尺寸等),在后台重新生成相应的瓦片(一个或多个)。
S4、将所生成的新的瓦片替换所述地图缓存数据更新部分所覆盖区域的旧的瓦片。
通过传入单张瓦片对应的对角坐标去定义一个区域,输出这个区域的图片,并替换掉对应的瓦片。
在更新地图缓存的过程中需要注意的地方这种方法更新瓦片,涉及到修改服务器端文件的操作,因此必须要给地图缓存所在的文件夹设定用户可控制的权限(NTFS磁盘格式下必须设定)。
以上更新方法中,如果只涉及到点的更新操作,由于一个点在某一比例下只对应一张瓦片,因此,尽管有十几个级别的缓存,也只是更换十几张图片,出图和替换的时间不长,不会占用服务器太长的时间去处理(包括连接地图服务大约20s左右);如果涉及到线和面的更新,鉴于只是在线路条带区域的范围内,区域范围相对比较小,处理时间相对也比较快。
本发明以条带状的方式更新地图缓存,计算量显著减少。例如I公里Xl公里的区域内一条铁路呈45°穿过,设瓦片大小为I米Xl米,按照现有的方法(即按要素区域范围)更新地图缓存,计算量为1000X1000 = IO6个瓦片更新;若按照本发明的方法更新缓存,计算量为λ/ XIOOOx3 4242个瓦片更新,约为以前计算量的O. 4%。
由以上实施例可以看出,本发明1.根据条带状GIS地图要素的特点,实现了 GIS 全局性地图缓存的快速更新;2.现有的缓存更新方法需要通过人工输入判别数据更新,易出错,效率低,通过比较备份数据与编辑后的数据,识别图层数据更新变化的部分,有针对性的只更新地图数据有变化部分的地图缓存,可以智能辨别数据变化更新部分,增加、减少、编辑变化的部分不会遗漏或冗余,待更新的数据量比较清晰,能实现快速更新。3.以数据更新变化的部分为中心,依次用瓦片的大小框向线路两侧,覆盖数据变化的范围区域,从而计算出比较精确的且面积最小的缓存更新面域。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本发明的保护范围。
权利要求
1.一种条带状Gis地图要素的缓存更新方法,其特征在于,包括以下步骤51、利用GIS中条带状的地图要素,将备份的历史矢量数据,与编辑更新后的矢量数据进行比较,识别出地图数据变化部分;52、以瓦片为单元,确定所述地图数据变化部分所覆盖的缓存区域,GIS中的地图缓存数据以瓦片为单元进行存储;53、按照所述地图数据变化部分所覆盖的缓存区域,生成新的瓦片;54、将生成的新的瓦片替换所述地图数据变化部分所覆盖缓存区域的旧的瓦片。
2.如权利要求1所述的方法,其特征在于,步骤SI具体为利用GIS中条带状的地图要素,将备份的历史矢量数据,与编辑更新后的矢量数据进行比较,识别出地图数据之外新增的、被取消掉的,以及编辑修改部分的地图数据。
3.如权利要求1所述的方法,其特征在于,步骤S2具体为以所述地图数据变化部分为中心,以瓦片为单元框向所述条带状GIS地图要素的两侧,一直延伸至覆盖所述地图数据变化部分的所有区域,然后计算覆盖所述地图数据变化部分的所有区域的瓦片的数量及每个瓦片的对角坐标,从而确定所述地图数据变化部分所覆盖的缓存面域。
4.如权利要求1所述的方法,其特征在于,步骤S3具体为使用地图缓存技术生成新的瓦片。
5.如权利要求f4中任一项所述的方法,其特征在于,所述条带状GIS地图要素包括铁路、道路和河流。
全文摘要
本发明涉及地理信息系统(GIS)地图要素的缓存更新技术领域,公开了一种条带状GIS地图要素的缓存更新方法,包括以下步骤S1、利用GIS中条带状的地图要素,将备份的历史矢量数据,与编辑更新后的矢量数据进行比较,识别出地图数据变化部分;S2、以瓦片为单元,确定所述地图数据变化部分所覆盖的缓存区域,GIS中的地图缓存数据以瓦片为单元进行存储;S3、按照所述地图数据变化部分所覆盖的缓存区域,生成新的瓦片;S4、将生成的新的瓦片替换所述地图数据变化部分所覆盖缓存区域的旧的瓦片。本发明实现了GIS全局性地图缓存的快速更新。
文档编号G06F17/30GK102999573SQ20121044870
公开日2013年3月27日 申请日期2012年11月9日 优先权日2012年11月9日
发明者王富章, 李平, 王英杰, 卢文龙, 梁策, 封博卿, 吴艳华, 邹丹 申请人:中国铁道科学研究院电子计算技术研究所, 北京经纬信息技术公司