一种图层分级绘制方法与流程

文档序号:12465581阅读:777来源:国知局
一种图层分级绘制方法与流程

本发明属于计算机软件技术领域,具体涉及一种图层分级绘制方法。



背景技术:

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

以往由于数据更新慢,地图缓存数据的更新也很慢,从而导致地图缓存更新一直沿用手工实现方式。现今,随着经济社会的高度发展,人们对快速更新的数据需求变得越来越迫切,而这种由手工实现的地图缓存更新方式就成为了一大瓶颈,且急需得到突破。例如:MapGIS的缓存更新方式,只能实现全局地图的缓存更新而无法对数据更新的范围进行定义(使用1:500比例尺,市级数据的更新约需一天时间);ArcGIS的缓存更新方式,可以实现局部地图缓存更新,但需要人工对更新范围和级别进行定义,这对操作人员的素质也提出了更高的要求。

现有的BS端地图绘制都采用的预切片的技术,事先将大量的地图按照一定的规则制作为缓存,在前端依据缓存生产的规则,在显示不同范围的时候调用不同的缓存进行绘制。

根据以往地图缓存服务的更新方式及更新的实现原理,从数据更新到服务更新,人工操作的实现步骤如下:1.获取数据更新的范围;2.查找更新数据所对应的待更新的服务;3.人工选取需要更新的服务,在缓存更新方案中设置更新范围及更新级别;4.暂时停止对外提供服务。

针对以上4个步骤,有一些厂商已经可以提供局部范围的缓存服务更新、而另一些厂商则不能;在设置地图范围时,采用人工方式设置范围就不如采用计算机自动计算范围准确;在服务关联数据时,人工操作也容易出错。

基于以上原因,越来越多的国内厂商开始意识到图层分级绘制地图以及地图实时渲染的重要性,部分国内厂商已经开始着手研究图层分级绘制地图的功能,但是受制于以往的数据更新和数据处理流程的模式化,其自动缓存更新的流程也存在某种局限性。而国外厂商,尤其是一些平台提供商,其立足点仍放在国外,未充分认识到中国市场强烈的实际需求,仍在采用人工方式进行地图缓存更新。



技术实现要素:

为了克服上述背景技术的缺陷,本发明提供一种图层分级绘制方法,所采用的技术方案为:

一种图层分级绘制方法,包括:

步骤1,在数据中添加一个属性字段显示比例尺showscale属性;

步骤2,设置全图绘制画板显示的像素分辨率;

步骤3,判断当前的要素的showscale属性是否已经设置,如果没有设置,则进行步骤4;

步骤4,以当前像素比进行地图的绘制,并判断绘制的地图要素是否小于一个像素,若是,则进入步骤5,若否,则判断绘制的地图要素是否等于一个像素,若是,则数据预处理完成;

步骤5,将像素坐标相同且像素小于1的要素的showscale属性为当前像素值;

步骤6,判断当前地图绘制的像素是否等于1,若是,则当前数据预处理完成,若否,则需要将当前全图绘制画图板的显示像素分辨率除以2,且返回步骤3。

较佳地,在步骤6之后还包括:

步骤7,进行数据的计算处理,获取当前图层全图长LayerHeight和宽LayerWidth,显示长ViewHeight和宽ViewWidth,出图分辨率长PixelHeight和宽PixelWidth;

步骤8,根据步骤7中获取的数据,分别计算:

长=PixelHeight*ViewHeight/LayerHeight;

宽=PixelWidth*ViewWidth/LayerWidth;

取长、宽的最大值作为计算值CalcuValue;

步骤9,对于ScaleValue的属性值大于CalcuValue的要素取出构建为图层;如果CalcuValue大于最大的ScaleValue,则取所有的数据构建为图层。

较佳地,显示比例尺showscale属性字段用于根据比例尺进行绘制的过滤。

较佳地,步骤2中像素分辨率默认显示最大像素为2048*2048。

较佳地,步骤5不设置第一个要素的showscale属性。

较佳地,最大的ScaleValue预设为2048。

本发明的有益效果在于:采用设置属性的方式来缓解计算量:在发明此专利前尝试过,实时的计算方式来进行地图的绘制,此尝试会导致在绘制过程中计算量急剧增加,从而使得整个渲染过程变得更慢;按照绘制信息进行计算绘制量:根据之前设置的属性,在绘制的时候经过Sql语句的过滤,将每次绘制的内容降到最低。本发明提供的图层分级绘制方法很好的解决了前端显示的压力,地图分级绘制实时渲染图层的这种机制是采用设置属性的方式来缓解计算量,并且能够按用户的要求进行实时的渲染。提高了地图数据的实时渲染效率的方法。能够很好地解决前端显示的压力,并且能够按用户的要求进行实时的渲染。

附图说明

图1为本发明实施例数据预处理的方法流程图;

图2为本发明实施例计算处理的方法流程图。

具体实施方式

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

无论采用人工的方式构建缓存信息,还是采用自动的方式构建缓存信息,其都存在的问题在于都要预先生成缓存,那么以现有的技术缓存是否是必须的,能否不生成缓存就可以快速的显示地图数据。

同时,地图分级绘制实时渲染图层的这种机制是采用设置属性的方式来缓解计算量:若实时的计算方式来进行地图的绘制,会导致在绘制过程中计算量急剧增加,从而使得整个渲染过程变得更慢;而且这种机制也是按照绘制信息进行计算绘制量:根据之前设置的属性,在绘制的时候经过Sql语句的过滤,将每次绘制的内容降到最低。

本实施例提供的图层分级绘制方法很好的解决了前端显示的压力,并且能够按用户的要求进行实时的渲染。

本发明的目的在于提供一种采用图层分级绘制来提高地图数据的实时渲染效率的方法。能够很好地解决前端显示的压力,并且能够按用户的要求进行实时的渲染。同时,地图分级绘制实时渲染图层的这种机制是采用设置属性的方式来缓解计算量。

下面通过具体的实施例并结合附图对本发明做进一步的详细描述,如图1所示,本实施例的数据预处理部分包括:

步骤1,在数据中添加一个属性字段显示比例尺showscale,此属性字段的主要目的是用于根据比例尺进行绘制的过滤,从而保证每次绘制取数据的规范性和正确性;

步骤2,设置全图绘制画板显示的像素分辨率,一般默认显示最大像素为2048*2048,一般情况下现有的电脑的分辨率为1920,以2048为限构建的图一般为数据的最大显示图;

步骤3,判断当前的要素的showscale属性是否已经设置,如果没有设置,则进入步骤4;

步骤4,以当前像素比去进行地图的绘制,同时要判断绘制的地图要素是否小于一个像素。

如果绘制的地图要素等于一个像素,那么当前数据预处理完成;如果绘制的地图要素小于一个像素,则进入步骤5;

步骤5,根据像素坐标对于像素坐标相同,并且其像素小于1个像素的,设置其showscale的属性为当前像素值,且本步骤不对第一个要素进行处理;

步骤6,判断上述设置完成后,当前地图绘制的像素是否等于1。如果是,则当前数据预处理完成;如果不是,则需要将当前全图绘制画图板的显示像素分辨率除以2(返回至步骤3),直到画图板的像素为1*1为止;

本实施例还包括计算处理的部分,如图2所示,在步骤6之后还包括:

步骤7,进行数据的计算处理,首先要获取当前图层全图长、宽(LayerHeight、LayerWidth)、显示长、宽(ViewHeight、ViewWidth)、出图分辨率长、宽(PixelHeight、PixelWidth);

步骤8,根据步骤7中获取的数据,分别计算:

长=PixelHeight*ViewHeight/LayerHeight;

宽=PixelWidth*ViewWidth/LayerWidth;

取长、宽的最大值作为计算值CalcuValue;

步骤9,对于ScaleValue的属性值大于CalcuValue的要素取出构建为图层;如果CalcuValue大于最大的ScaleValue,最大的ScaleValue预设为2048,则取所有的数据构建为图层。

本发明采用设置属性的方式来缓解计算量:在发明此专利前尝试过,实时的计算方式来进行地图的绘制,此尝试会导致在绘制过程中计算量急剧增加,从而使得整个渲染过程变得更慢;按照绘制信息进行计算绘制量:根据之前设置的属性,在绘制的时候经过Sql语句的过滤,将每次绘制的内容降到最低;

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

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