一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种海量GIM模型优化显示的方法与流程

2022-05-26 14:40:15 来源:中国专利 TAG:

一种海量gim模型优化显示的方法
技术领域
1.本发明涉及输变电技术领域,具体涉及一种海量gim模型优化显示的方法。


背景技术:

2.目前,输变电工程建设领域,目前三维建模信息化常见的技术方案为根据矢量图形图纸连接关系将对应的二维图纸、符号化的成品图快速转换为输电线路三维模型,显示精度较高,gim文件数据中的模型信息通常会产生大量模型的数据。对于海量模型的数据处理上一直存在效率低的问题,在一开始加载显示时会出现很长时间的加载时间,甚至时在平台运行时,出现电脑卡顿问题。
3.如中国专利cn109783886a,公开日2019年5月21日,一种用于gim模型与ifc模型间的融合系统和方法,分别读取电网工程模型中的gim模型文件、ifc模型文件,进行完整性检查;分别对gim模型文件、ifc模型文件进行文件解析,得到解析结果以json或xml文件形式存储;分别将gim模型、ifc模型的描述方案与统一参考模型的描述方案建立映射关系并转换后以json或xml文件形式存储;通过分析统一参考模型中的几何数据,生成多种空间关系;基于多种空间关系,将gim转换结果和ifc转换结果进行差异对比,得到版本差异结果。其将一个工程在其生命周期多个阶段多个版本的ifc和gim模型融合在同一个统一参考模型中,为电网工程的设计开发提供便捷,有效节省工程项目的沟通成本。但其存在海量模型的数据处理效率低的问题。


技术实现要素:

4.本发明要解决的技术问题是:目前的gim模型显示方法存在海量模型的数据处理效率低导致显示加载时间过长的技术问题。提出了能够提升场景变换后的模型显示效率的一种海量gim模型优化显示的方法。
5.为实现上述目的,本发明所采取的技术方案为:一种海量gim模型优化显示的方法,包括如下步骤:s1:构建坐标系:针对不同的模型构建多个坐标系以及不同坐标系之间的关系;s2:坐标转换:实现坐标转换,计算瓦片切换的层数;s3:绘制显示:根据计算公式和映射关系,绘制显示gim模型图;s4:预调取处理:将原有的模型数据构建瓦片金字塔数据进行预调取。对可视范围内的模型进行筛选、分组、变换处理,以达到减少运算数据量,进一步提高绘制效率和性能,最后再进行预调取方法对下次场景变换后的模型数据进行缓存,提升场景变换后模型显示的效率。
6.作为优选,所述步骤s1中的构建的坐标系包括实际模型图坐标系、透视模型图坐标系、瓦片模型图坐标系和可视模型坐标系。
7.实际模型图坐标系,给定正方形范围,在该范围内能够绘制所有的gim模型,该范围称为实际模型图,用f表示;透视模型图坐标系,按给定的缩放等级将实际模型投影,投影
边界范围所构成的矩形称为透视模型图,用p表示;瓦片模型图坐标系,给定瓦片尺寸,用tile.size表示,将给定缩放等级的透视模型切分成瓦片,以瓦片为单元表示透视模型的坐标系称为瓦片模型图坐标系;可视模型坐标系,计算机绘制模型的区域,称为可视模型图,用view表示。
8.作为优选,所述步骤s2中坐标转换过程涉及的参数包括:实际图尺寸、每级的瓦片数、瓦片尺寸、分辨率和可视模型图中心坐标代表的实际图坐标。
9.其中,实际图尺寸,用f.size表示该正方体边长;瓦片计算公式即金子塔模型,一般使用tilecount=4zoomlevel计算每级瓦片数;瓦片尺寸(tile.size);分辨率(r);可视模型图中心坐标代表的实际图坐标viewcenterfigure。
10.作为优选,所述分辨率与实际图尺寸、瓦片尺寸和瓦片数有关,公式为r=f.size/(tilecount
1/2
*tile.size)其中,r为分辨率;f.size为实际图尺寸;tilecount为瓦片数;tile.size为瓦片尺寸。
11.分辨率即是实际图的缩放比例。在某个缩放等级对应的透视图坐标系中,一个单位的长度所对应的实际坐标系的长度,称为分辨率。例如1:20,代表透视图的一个单位的长度等于实际坐标系中20个单位的长度。
12.作为优选,根据实际图坐标计算模型图形对应各个坐标系的坐标,各个坐标系的坐标的计算公式如下:透视图坐标的计算公式:p.x=(f.x

f.size/2)/rp.y=

(f.y

f.size/2)/r瓦片图坐标的计算公式:tile.z=缩放等级tile.c=p.x/tile.size=((f.x

f.size/2)/r)/tile.sizetile.r=p.y/tile.size=(

(f.y

f.size/2)/r)/tile.size视图坐标的计算公式:view.x=view.size.width/2 (f.x

viewcenterfigure.x)/rview.y=view.size.height/2

(f.y

viewcenterfigure.y)/r其中,p.x和p.y代表透视图坐标系的各坐标轴参数;tile.z、tile.c和tile.r代表瓦片图坐标系的各坐标轴参数;view.x和view.y代表视图坐标系的各坐标轴参数。
13.根据该坐标可以确定可视模型图当前显示范围对应的透视图范围。准备好必要参数后,即可按照上述公式计算模型图形对应各个坐标系的坐标。
14.作为优选,所述步骤s3包括如下步骤:s31:根据实际模型图坐标系计算实际模型范围;s32:根据当前可视模型图的缩放等级、当前可视模型范围和当前可视模型范围中心点对应的矢量图坐标,计算出当前可视模型范围内可视瓦片集;根据瓦片金字塔存储数据模型得到对应的数据,得到与可视瓦片集有交集的矢量图形;s33:计算矢量图形的可视模型图坐标,由可视模型坐标绘制矢量模型图,将gim模型图绘制显示出来;
s34:当对可视模型进行平移和缩放操作时,重新计算可视模型范围中心点对应的实际模型坐标。根据计算公式和映射关系,按照上述流程显示模型。
15.作为优选,所述步骤s4中预调取处理的方法包括深度优先预调取和广度优先预调取。
16.在构建加载瓦片金字塔中的数据时,由于数据量庞大,将占用大量的计算机资源,使得系统反应非常迟缓,因此通过预测用户的下一次操作,将下一次操作所需要的数据在这段空闲时间内进行缓存,即预调取处理。
17.作为优选,所述深度优先预调取的过程包括:优先预调取目前视角下的可视模型图瓦片切换的层数,以及需要预取的范围下包含的任意层级瓦片的列数和行数,需要预取的范围的计算式为:ncviewcenterfigure.x=viewcenterfigure.x/2;ncviewcenterfigure.y=viewcenterfigure.y/2;其中:ncviewcenterfigure表示需要预取的范围;viewcenterfigure表示当前可视模型范围。ncviewcenterfigure.x和ncviewcenterfigure.y为深度优先预调取的范围边界对应的坐标轴参数。viewcenterfigure.x和viewcenterfigure.y为当前可视模型范围对应的坐标轴参数。
18.各级瓦片以四叉树的形式存储,假设当前所显示的瓦片层数为n,那么所要预取的瓦片层数就可能是上一层n-1或下一级层n 1。可根据坐标转换求得可视模型图参数,将需要预取的范围下的数据预先加载到缓存中。
19.作为优选,所述广度优先预调取的过程包括:进行平移操作前,预先缓存可视范围一定相邻区域的模型图瓦片数据,预调取的范围的计算式为:exviewcenterfigure.x=viewcenterfigure.x δxexviewcenterfigure.y=viewcenterfigure.y δy其中:exviewcenterfigure表示预调取的范围;viewcenterfigure表示当前可视模型范围;δx和δy为当前瓦片层数扩展系数。exviewcenterfigure.x和exviewcenterfigure.y为广度优先预调取的范围边界对应的坐标轴参数。
20.本发明的实质性效果是:本发明主要采用矢量图形算法和金字塔规则对gim模型进行优化处理,对可视范围内的模型进行筛选、分组、变换处理,以达到减少运算数据量,进一步提高绘制效率和性能,最后再进行预调取方法对下次场景变换后的模型数据进行缓存,提升场景变换后模型显示的效率。
附图说明
21.图1为本实施例主要实施步骤的流程示意图;图2为本实施例瓦片金字塔结构示意图;图3为本实施例深度瓦片预调取中的缓存流程图;图4为本实施例广度瓦片预调取中的缓存流程图。
22.其中:1、扩展区域,2、显示区域。
具体实施方式
23.下面通过具体实施例,并结合附图,对本发明的具体实施方式作进一步具体说明。
24.一种海量gim模型优化显示的方法,如图1所示,包括如下步骤:s1:构建坐标系:针对不同的模型构建多个坐标系以及不同坐标系之间的关系;s2:坐标转换:实现坐标转换,计算瓦片切换的层数;s3:绘制显示:根据计算公式和映射关系,绘制显示gim模型图;s4:预调取处理:将原有的模型数据构建瓦片金字塔数据进行预调取。
25.对模型数据信息数据根据金字塔规则获取模型图数据并进行处理得到最后显示模型图。如图2,瓦片金字塔结构图,下面的瓦片层是从原始数据中切图所得小比例尺瓦片,越向上比例尺越大。与人的视觉原理相同,当人眼距离物体越近时,看到的物体细节也就越明显,精度越高;当可视模型范围中心点离物体越近时,就将比例尺大、经度低的瓦片替换为比例尺小、经度高的瓦片。当建立好了模型图金字塔后,瓦片按层级存放。当请求模型图数据时,根据当前视角范围判断所需要哪个层级的瓦片,然后调取该层级的瓦片数据。最后将调取到的瓦片数据拼接出来,便可以快速得到显示的gim模型,最后再根据当前数据,对数据预调取,对后续视角的转变而能将模型快速显示出来。
26.本实施例的具体实施步骤如下:1、构建坐标系。
27.针对不同的常见模型构建多个坐标系,以及不同坐标系之间的关系。
28.(1)实际模型图坐标系。给定正方形范围,在该范围内能够绘制所有的gim模型,该范围称为实际模型图,用f表示。实际模型图对应的坐标系称为实际模型图坐标系,实际模型的中心为坐标原点,原点向右和向上为正,用f表示坐标。模型都以该坐标系的数值表示和存储。
29.(2)透视模型图坐标系。按给定的缩放等级将实际模型投影,投影边界范围所构成的矩形称为透视模型图,用p表示。透视模型图范围内的坐标系称为透视模型坐标系,投影图左上角为坐标系的原点,原点向右和向下为正,用p表示坐标。
30.(3)瓦片模型图坐标系。给定瓦片尺寸(用tile.size表示),将给定缩放等级的透视模型切分成瓦片,以瓦片为单元表示透视模型的坐标系称为瓦片模型图坐标系;透视模型图的左上角为坐标系的原点,原点向右和向下为正,用tile(z,c,r)分别表示缩放等级、列数和行数,且均为正整数。
31.(4)可视模型坐标系。计算机绘制模型的区域,称为可视模型图,用view表示。可视模型对应的坐标系称为可视模型坐标系,可视模型图左上角为坐标系的原点,原点向右和向下为正,用view表示坐标。可视模型坐标系相当于对透视图坐标系的原点进行了平移。
32.2、坐标转换。
33.为了实现坐标转换和计算瓦片切换的层数,需要确定以下参数:(1)实际图尺寸。通常情况下,约定实际模型为一个正方体,其尺寸包含全部的矢量图形,用f.size表示该正方体边长。
34.(2)瓦片计算公式。瓦片计算公式即金子塔模型,一般使用tilecount=4zoomlevel计算每级瓦片数。
35.(3)瓦片尺寸(tile.size)。瓦片一般用正方体表示。
36.(4)分辨率(r)。分辨率即是实际图的缩放比例。在某个缩放等级对应的透视图坐标系中,一个单位的长度所对应的实际坐标系的长度,称为分辨率。例如1:20,代表透视图的一个单位的长度等于实际坐标系中20个单位的长度。分辨率与实际图尺寸(f.size)、瓦片尺寸和瓦片数有关,公式为:r=f.size/(tilecount
1/2
*tile.size)(5)可视模型图中心坐标代表的实际图坐标viewcenterfigure。根据该坐标可以确定可视模型图当前显示范围对应的透视图范围。准备好必要参数后,即可按照以下公式计算模型图形对应各个坐标系的坐标。
37.a、已知实际图坐标f(x,y),计算透视图坐标p(x,y)p.x=(f.x

f.size/2)/rp.y=

(f.y

f.size/2)/rb、已知实际图坐标f,计算瓦片图坐标tile(z,c,r)tile.z=缩放等级tile.c=p.x/tile.size=((f.x

f.size/2)/r)/tile.sizetile.r=p.y/tile.size=(

(f.y

f.size/2)/r)/tile.sizec、已知实际图坐标f,计算视图坐标view(x,y)view.x=view.size.width/2 (f.x

viewcenterfigure.x)/rview.y=view.size.height/2

(f.y

viewcenterfigure.y)/r3、绘制显示。
38.根据计算公式和映射关系,按照以下流程显示模型:(1)根据实际模型图坐标系可计算实际模型范围;(2)根据当前可视模型图的缩放等级、当前可视模型范围以及当前可视模型范围中心点对应的矢量图坐标,可以计算出当前可视模型范围内可视瓦片集,根据瓦片金字塔存储数据模型可快速得到对应的数据,以及与可视瓦片集有交集的矢量图形;(3)计算矢量图形的可视模型图坐标,再由可视模型坐标绘制矢量模型图,从而将gim模型图绘制显示出来;(4)如果对可视模型进行平移和缩放操作,需要重新计算可视模型范围中心点对应的实际模型坐标。
39.4、预调取处理。
40.将原有的模型数据构建瓦片金字塔数据进行预调取方法。在构建加载瓦片金字塔中的数据时,由于数据量庞大,将占用大量的计算机资源,使得系统反应非常迟缓,因此每次都等用户操作才进行调取数据往往也是需要等待小段时间。当进行放大、缩小这样的操作后,一般会考察当前显示的模型图数据,然后开始下一次的操作,这期间会有一段的空闲时间段。因此我们可以预测用户的下一次操作,将下一次操作所需要的数据在这段空闲时间内进行缓存,即预调取处理。在预调取时,已知当前显示瓦片级数,只需要在该瓦片基础上进行预调取即可。
41.(1)深度优先预调取目前视角下的可视模型图瓦片切换的层数,以及该范围下包含的任意层级瓦片的列数和行数。各级瓦片以四叉树的形式存储,假设当前所显示的瓦片层数为n,那么所要预取的瓦片层数就可能是上一层n-1或下一级层n 1。
42.假设目前用户显示的瓦片为图3(中),显示瓦片数据都已经缓存完毕,那么接下来需要缓存的就是图3(右)的瓦片数据。设下一级瓦片模型图缩放等级1/2,那么根据当前可视模型范围viewcenterfigure计算需要预取的范围ncviewcenterfigure:ncviewcenterfigure.x=viewcenterfigure.x/2;ncviewcenterfigure.y=viewcenterfigure.y/2;由此,可根据上述步骤3坐标转换求得可视模型图参数,并预先加载到缓存中(2)广度优先预调取此方法是减少进行平移时所消耗的时间。与深度优先预调取类似,当进行平移操作前,预先缓存可视范围一定相邻区域的模型图瓦片数据。如图4所示,包括显示区域2和扩展区域1,显示区域2是当前已经缓存完毕显示的瓦片,扩展区域1为可能平移显示的区域,即是预先缓存的区域。
43.通过当前可视模型范围viewcenterfigure设置扩展的屏幕坐标范围,即预调取的范围exviewcenterfigure,在当前瓦片层数扩展系数为δx和δy:exviewcenterfigure.x=viewcenterfigure.x δxexviewcenterfigure.y=viewcenterfigure.y δy由此,可根据上述步骤3坐标转换求得可视模型图参数,并预先加载到缓存中。
44.本实施例可适应于gim数据文件包含有海量gim模型需要显示,根据构建的瓦片金字塔数据可快速获取对应的图形数据,再通过实际场景中需要获取到可视模型图范围对应的实际模型图坐标,并将对应的模型绘制出来。在含有海量gim模型数据显示时,能快速渲染模型的多样化,能够快速成图显示,提升用户体验感。
45.以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献