一种按时序实时动态缓存的方法与流程

文档序号:12465583阅读:356来源:国知局

本发明属于软件方法技术领域,具体涉及一种按时序实时动态缓存的方法。



背景技术:

随着网络技术的发展,网络环境中的地理信息系统(WebGIS)应用越来越广泛,诸如日常生活中的Google地图、MapBar地图等都广泛影响着公众的生活。与以往传统WebGIS方式不同的是,这些现代地图不再在客户端动态地生成地图图片(即客户每产生一次新的地图请求,服务器就需重新生成地图图片并发送至客户端),而是采用了地图缓存服务机制。自从GoogleMap推出Tile Map Image(瓦片式地图)方式后,这种地图缓存服务机制便成为提高地图应用系统性能的关键技术。地图缓存技术中,网络运输代价和数据库存取代价一直是影响系统效率的主要因素。JPEG格式以其超强的压缩能力以及卓越的图像品质,在地图缓存服务机制中被广泛使用。

以往由于数据更新慢,地图缓存数据的更新也很慢,从而导致地图缓存更新一直沿用手工实现方式。现今,随着经济社会的高度发展,人们对快速更新的数据需求变得越来越迫切,而这种由手工实现的地图缓存更新方式就成为了一大瓶颈,且急需得到突破。现有的一些技术也可以解决现在的问题,例如:arcgis的地图数据的缓存局部更新技术,以及一些公司根据业务流程进行定制的数据更新后自动触发缓存数据更新的技术。

但是以上的所有技术都存在一个问题,即:都需要等待数据每次更新后都需要花费专门的时间去等待缓存的生成,一旦缓存生产环节出现问题就可能导致整个地图浏览都出现问题。

现有的WebGIS的做法都是提供缓存数据来进行地图的浏览,缓存的是一个中间产物其优势有:通过缓存的方式减少数据的实时计算性,特别是对图层的数据量比较大的时候,可以减少服务端的绘制压力;增强服务端的并发能力,因为是预先生成的缓存,所以并发的时候只要读取缓存的数据库或文件;虽然现有的缓存技术有以上的优势,但是它的劣势同样比较明显:缓存生产时间长:每次缓存的生产需要根据金字塔生成不同级别的缓存数据,一般一个市的数据生产如果到20级基本需要等待4个小时以上,而且一旦出错可能需要重新运行一遍;更新麻烦,更新分为两种:人工更新,人工更新需要停止服务,按照数据更新的内容将所有的缓存重新生产一遍;程序自动更新,程序获取更新的范围,自动更新缓存;无论是哪种更新方式,都是需要暂时停止提供服务,并且等待缓存更新完成之后才能启动服务。



技术实现要素:

为了克服上述背景技术的缺陷,本发明提供一种按时序实时动态缓存的方法。

为了解决上述技术问题本发明的所采用的技术方案为:

一种按时序实时动态缓存的方法:

步骤1,获取当前地图显示分辨率和范围;

步骤2,计算需要获取的缓存编号;

步骤3,判断缓存库中是否有对应的缓存数据,若是,则进入步骤4,若否,则进入步骤6;

步骤4,判断缓存生产的时间是否晚于数据录入时间,若是,则进入步骤6,若否,则进入步骤5;

步骤5,读取缓存库的缓存,根据之前获取的缓存路径找到对应的缓存数据从而在缓存库中获得对应的缓存数据;

步骤6,绘制地图数据;

步骤7,生成缓存返回,并且存储到缓存库。

较佳地,步骤1包括:

步骤101,获取当前数据的入库时间,并且将入库时间作为一个属性存储下来,便于在进行缓存的时序比较的时候进行使用;

步骤102,获取当前的范围坐标;

步骤103,获取当前的分辨率,根据当前的分辨率和构建缓存的金字塔的信息进行比对。

较佳地,在构建缓存的金字塔时,每一级金字塔都对应一个地图比例尺和分辨率。

较佳地,步骤2包括:

步骤201,根据步骤1获取的分辨率比对金字塔,得到金字塔的级别;

步骤202,根据步骤1获取的范围,比对金字塔设置的起始位置,对应级别,计算对应范围内应该获取的缓存的编号。

较佳地,每一级的金字塔都有其对应的编号规则和存储位置。

较佳地,步骤3判断缓存库中是否有对应的缓存数据的方法包括:根据上一步计算得到的缓存编号到对应的缓存库的缓存路径下查找对应的缓存数据是否已经存在。

较佳地,步骤4包括:

步骤401,获取缓存的生产时间,根据缓存的路径获取对应的缓存,查询缓存的生产时间;

步骤402,获取数据生产时间,在数据库中查询数据的入库时间;

步骤403,比较数据的入库时间和缓存的生产时间,如果数据的入库时间晚于缓存的生产时间则进入步骤6,如果数据的入库时间早于缓存的生产时间则进入步骤5;

较佳地,步骤6包括:

步骤601,单个图层采用分布式或集群的方式快速绘制图层的信息;

步骤602,针对地图信息,构建整体的绘制机制。

较佳地,步骤7包括:

步骤701,读取当前设置的金字塔信息,根据当前获取的范围和分辨率信息,得到需要所需要生成的缓存的路径、名称信息;

步骤702,根据步骤701的信息对当前的地图进行生产,生产对应的缓存数据并且将对应的缓存数据传输到请求端;

步骤703,将生成的缓存数据放到缓存库中。

本发明的有益效果在于:根据当前的显示范围去生产缓存数据,按需分配的原则,每次根据当前的请求范围去生产对应的缓存数据,当缓存数据存在的时候直接获取缓存数据,减少缓存数据生产的等待环节。按时序实时缓存;在数据更新后可以及时的更新缓存数据从而保证每次用户看到的地图都是最新的地图数据。实时显示更新数据,以往的更新缓存的方式,无论采用人工或自动的其实时更新的效率都比较低,一般都会涉及将对应的服务停止而去更新缓存信息;而采用按时序动态缓存的方式,则可以让用户实时看到最新的数据。

附图说明

图1为本发明实施例的方法流程图。

具体实施方式

下面结合附图和实施例对本发明做进一步的说明。

如图 1 所示,本发明实施例所述的一种按时序动态缓存方法包括如下步骤:

步骤1:获取当前地图显示分辨率和范围。

步骤101,获取当前数据的入库时间,并且将入库时间作为一个属性存储下来,便于在进行缓存的时序比较的时候进行使用;

步骤102,获取当前的范围坐标;

步骤103,获取当前的分辨率,根据当前的分辨率和构建缓存的金字塔的信息进行比对,在构建缓存的金字塔时,每一级金字塔都对应一个地图比例尺和分辨率。

步骤2:计算需要获取的缓存编号。

步骤201,根据步骤1获取的分辨率比对金字塔,得到金字塔的级别,每一级的金字塔都有其对应的编号规则和存储位置;

步骤202,根据步骤1获取的范围,比对金字塔设置的起始位置,对应级别,计算对应范围内应该获取的缓存的编号。

步骤3:判断缓存库中是否有对应的缓存数据,根据上一步计算得到的缓存编号到对应的缓存库的缓存路径下查找对应的缓存数据是否已经存在;如果存在则进入步骤4,如果不存在则进入步骤6。

步骤4:判断缓存生产的时间是否晚于数据录入时间。

步骤401,获取缓存的生产时间,根据缓存的路径获取对应的缓存,查询缓存的生产时间;

步骤402,获取数据生产时间,在数据库中查询数据的入库时间;

步骤403,比较数据的入库时间和缓存的生产时间,如果数据的入库时间晚于缓存的生产时间则进入步骤6,如果数据的入库时间早于缓存的生产时间则进入步骤5。

步骤5,读取缓存库的缓存,根据之前获取的缓存路径找到对应的缓存数据从而在缓存库中获得对应的缓存数据。

步骤6,快速的绘制地图数据。

步骤601,单个图层采用分布式或集群的方式快速绘制图层的信息;

步骤602,针对地图信息,构建整体的绘制机制,加强实时绘制效果。

步骤7,生成缓存返回,并且存储到缓存库。

步骤701,读取当前设置的金字塔信息,根据当前获取的范围和分辨率信息,得到需要所需要生成的缓存的路径、名称等信息;

步骤702,根据“步骤701”的信息对当前的地图进行生产,生产对应的缓存数据并且将对应的缓存数据传输到请求端;

步骤703,将生成的缓存数据放到缓存库中。

本实施例基于现有缓存技术的劣势,提出了按时序实时动态缓存的方案,其主要解决的问题是:减少缓存生产的等待时间:采用实时缓存数据生产的方式,不需要专门预留时间在生产缓存数据;提高数据更新的实时性:在数据更新之后,用户可以通过WebGIS看到最新的数据,而不需要专门等待更新的数据内容重新生产完成后才启动对应的缓存服务。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

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