CN106600523B - 一种三维模型数据的瓦片式快速加载方法 - Google Patents

一种三维模型数据的瓦片式快速加载方法 Download PDF

Info

Publication number
CN106600523B
CN106600523B CN201611104349.5A CN201611104349A CN106600523B CN 106600523 B CN106600523 B CN 106600523B CN 201611104349 A CN201611104349 A CN 201611104349A CN 106600523 B CN106600523 B CN 106600523B
Authority
CN
China
Prior art keywords
tile
mrow
data
time
size
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201611104349.5A
Other languages
English (en)
Other versions
CN106600523A (zh
Inventor
黄新
邵世维
肖立霞
刘辉
王京晶
王恒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Land Resources And Planning Information Center
Original Assignee
Wuhan Land Resources And Planning Information Center
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Land Resources And Planning Information Center filed Critical Wuhan Land Resources And Planning Information Center
Priority to CN201611104349.5A priority Critical patent/CN106600523B/zh
Publication of CN106600523A publication Critical patent/CN106600523A/zh
Application granted granted Critical
Publication of CN106600523B publication Critical patent/CN106600523B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种三维模型数据的瓦片式快速加载方法,首先将三维模型瓦片化,将三维瓦片按照八叉树结构进行组织,将索引文件和瓦片文件分别存储,考虑到三维瓦片数据的组织方式以及显示特点,从尽可能的减少实时瓦片请求加载次数和提高缓存有效性的角度出发,利用缓存置换、缓存预测算法来减少瓦片数据的加载与调用时间,使瓦片数据的显示更高效、流畅。此方法针对大场景三维数据加载速度慢的问题,提出了一种三维模型数据的瓦片式快速加载方法,对于提升三维场景的漫游速度、三维场景调度的流畅、人机交互体验有着重要意义。

Description

一种三维模型数据的瓦片式快速加载方法
技术领域
本发明属于地理空间信息系统技术领域,特别是涉及一种三维模型数据的瓦片式快速加载方法。
背景技术
三维GIS(Geographic Information System)是目前GIS的一个重要发展方向,它能进行多分辨率、多尺度和多时空的三维场景的直观表达,在精确建模和虚拟现实等高新技术的驱动下得到了稳步的发展。建立高精度、多分辨率、多时空、多细节层次模型的三维场景产生了海量、结构复杂和多尺度的三维模型数据,使得大范围三维场景的加载显示出现卡顿、缓慢的现象。而三维场景的高效加载是最为基础和关键的技术之一,直接影响着三维技术应用的发展前景。
为了加快三维场景的显示,提高渲染效率,将三维模型数据进行简化,按照一定的规则格网分割处理为三维瓦片虽然可以有效地减少内存消耗、计算量,但是随着三维模型的增长,其瓦片数量级十分庞大,通常可达到T甚至P数量级。面对如此庞大的数据,将其全部缓存到内存中是不现实的,因此进行大范围场景的高效可视化对计算机硬件和应用软件都提出了非常高的要求。
解决三维场景的快速加载难题,对于提升大范围三维场景的漫游速度、三维场景的流畅、逼真显示和人机交互体验有着重要意义。
目前,加快三维场景数据的加载可以通过提高缓存性能来实现:
(1)利用缓存置换算法剔除缓存中最不可能使用的瓦片。
良好的缓存置换策略可在很大程度上提高三维瓦片数据的访问与传输效率,缩短访问响应时间。三种最直接的置换策略是:第一种,最近最少使用LRU(Least RecentlyUsed),将最长时间未被访问的瓦片移除,但是可能将用户偶尔访问的瓦片保留在缓存中;第二种,最不经常使用LFU(Least Frequently Used),将总访问次数最少的瓦片移除,但是可能将前期经常访问但以后不经常访问的瓦片长期保留在缓存中;第三种,先进先出FIFO(First In First Out),将最先存储的瓦片移除,但是忽略了某一用户对特定区域长时间、高频度的访问,可能删除用户感兴趣的某一区域。此外,基于瓦片寿命和访问热度的缓存置换策略TCLEPR(Tile Cache Life TimeExcess and Popularity Replacement)将当前缓存中瓦片存活寿命超出平均缓存寿命最多的且访问热度最低的瓦片置换出缓存;面向网络GIS的最小价值空间数据缓存置换算法GDLVF(Lowest-Value First Cache Replacementfor Geospatial Data)依据,[时间、访问频率、文件大小、空间数据的空间位置特征计算数据价值,移除价值最小的瓦片。但是这些方法在三维场景中只考虑了访问过的瓦片,未能考虑到预缓存数据的置换处理(文献1、2、3);
(2)利用瓦片预测策略提高缓存数据的有效性。
最为常用的瓦片预测方法是邻近区域预取,即在空闲时下载与当前浏览区域相邻的瓦片,但是只考虑了平移操作,准确率低且容易导致网络拥塞。而Markov模型对用户的浏览进行预测,其准确率可以达到70%左右。采用一个Markov链描述所有用户的浏览特征,存储转移概率矩阵的复杂度是瓦片数量的平方,而且采用高阶转移矩阵所需的存储空间还会成倍增加。多Markov链将用户分为不同类别并用不同的马尔可夫链表示不同类别用户的浏览特征,减少存储空间、提高预测准确性。邻近选择Markov链(neighborselectionmarkovchain,NSMC)用前k次瓦片移动方向作为转移状态,假定所有瓦片具有相同的转移概率,模型简单,存储开销小,但是未充分考虑空间数据组织形式和空间地物的重要性。
[文献1]涂振发,孟令奎,张文.面向网络GIS的最小价值空间数据缓存替换算法研究.华中师范大学学报(自然科学版),2012.
[文献2]褚信,蔡阳军,杜震洪.用户行为选择参与的五层十五级瓦片缓存置换策略研究.浙江大学学报(理学版),2016.
[文献3]王浩,喻占武,曾武.基于瓦片寿命和访问热度的海量空间数据缓存置换策略.武汉大学学报信息科学版,2009.
发明内容
本发明目的在于针对三维模型数据由于贴图精度高、数据量大,在三维平台加载的过程中出现卡顿、显示不友好等现象,难以实现快速加载的难题,提出了一种三维模型数据的瓦片式快速加载方法,通过进行三维瓦片数据的及时、有效的缓存,提高了三维瓦片的加载效率。
本发明所采用的技术方案是:一种三维模型数据的瓦片式快速加载方法,其特征在于:包括以下步骤,
步骤1:将三维模型数据瓦片化;
步骤2:通过八叉树技术对瓦片数据进行空间组织,建立瓦片数据的空间八叉树索引,并分离瓦片的索引部分和数据部分,实现对瓦片数据的空间组织和分离存储,映射索引部分到内存以提高查询检索的性能;
步骤3:程序等待直到发生场景变换,则执行下述步骤4;若程序退出,则本流程结束;
步骤4:计算视场的锥体裁减范围,即由视场角定义的上下左右四个面和由投影矩阵定义的远近剪切平面;
步骤5:根据步骤4中的锥体裁减范围确定视锥体内部的地理范围,利用瓦片LOD原理,从八叉树根节点开始遍历,判断节点所指瓦片的精细程度是否满足分辨率的要求,确定当前视锥体范围内的八叉树节点;
步骤6:按层级从低到高遍历需要加载的瓦片信息;
步骤7:对视锥体中所需瓦片依次判断瓦片的缓存状态是否为true,缓存状态为true表明该瓦片在缓存中,为false则不在缓存中;
若是true,则请求数据在缓存中,请求数据命中,直接在缓存中读取数据,并同时更新最后访问时间、存储时间、访问次数和访问状态;
若为false,则添加对该瓦片的请求到请求队列,建立子线程加载请求的数据,并将返回的数据写入缓存,并更新该瓦片索引的访问状态、缓存状态、最后访问时间、访问次数、瓦片大小、地理范围、存储时间;
步骤8:判断是否完成遍历;
若否,并回转执行上述步骤6;
若是,则绘制并刷新视图,缓存置换删除部分瓦片,进行瓦片预测并加载,同时更新预测瓦片的索引信息;并回转执行上述步骤3。
本发明以三维场景的快速加载为目的,将三维模型进行瓦片化,通过进行八叉树组织建立索引并组成金字塔模型,提高了三维瓦片的检索效率;通过将八叉树索引映射到内存,提高三维瓦片的检索效率;通过对视场的范围进行计算,获取场景显示所需要的不同层级的三维瓦片信息;通过对缓存内的瓦片进行置换预缓存,使三维瓦片的可视化更流畅、高效。
附图说明
图1本发明实施例的总体流程图;
图2本发明实施例的八叉树组织结构图;
图3本发明实施例的瓦片索引以及数据文件结构图;
图4本发明实施例的三维瓦片加载流程图;
图5本发明实施例的三维瓦片的置换预缓存流程;
图6本发明实施例的三维瓦片的价值计算流程图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
参见图1,图4,本发明提供一种技术方案:首先将三维模型瓦片化,将三维瓦片按照八叉树结构进行组织,将索引文件和瓦片文件分别存储,本发明的重点是三维瓦片的快速加载方法,针对大量的三维瓦片的加载显示缓慢的现象探讨了利用缓存置换、缓存预测算法来减少瓦片数据的加载调用时间,使瓦片数据的显示更高效、流畅。
本发明实施例的实现过程采用计算机实现自动化处理,包括以下步骤,步骤1-步骤2属于三维模型瓦片化以及存储组织过程,步骤3-步骤8属于三维瓦片的快速加载过程。
步骤1,把三维模型数据按照全球格网剖分方法瓦片化;
步骤2,通过八叉树技术对瓦片数据进行空间组织,参见图2,每个节点指向相应的瓦片数据。通过建立瓦片数据的空间八叉树索引,并分离瓦片的索引部分和数据部分,实现对瓦片数据的空间组织和分离存储。将其索引映射到内存空间,可加速瓦片的查询检索。瓦片的查询检索通过索引数据块查询到瓦片数据在数据文件中的位置,然后由数据文件读取相应数据。索引文件由索引文件头和多个索引数据块组成,文件头包含文件标示字段和该瓦片的元信息:瓦片的地理范围、瓦片的最大层级和最小层级、瓦片的大小和0层瓦片的索引位置;索引数据块包含节点瓦片的地理范围、八个子节点的索引位置和节点瓦片数据在数据文件中的存储位置、瓦片大小、访问状态、缓存状态、最后访问时间、访问次数、存储时间。数据文件由数据文件头和多个瓦片数据块组成,文件头包含文件标示字段和关联索引文件字段等;瓦片数据块包含瓦片数据;参见图3;
步骤3:程序等待直到发生场景变换,则执行下述步骤4;若程序退出,则本流程结束;
步骤4,计算视场的锥体裁减范围,即由视场角定义的上下左右四个面和由投影矩阵定义的远近剪切平面;
步骤5,每个八叉树节点对应的瓦片有一个地理范围和层级,根据步骤4中的锥体裁减范围确定视锥体内部的地理范围,利用瓦片LOD原理,从八叉树根节点开始遍历,判断节点所指瓦片的精细程度是否满足分辨率的要求,确定当前视锥体范围内的八叉树节点。
步骤6:按层级从低到高遍历需要加载的瓦片信息;
步骤7:对视锥体中所需瓦片依次判断瓦片的缓存状态是否为true,缓存状态为true表明该瓦片在缓存中,为false则不在缓存中;
若是true,则请求数据在缓存中,请求数据命中,直接在缓存中读取数据,并同时更新最后访问时间、存储时间、访问次数和访问状态;
若为false,则添加对该瓦片的请求到请求队列,建立子线程加载请求的数据,并将返回的数据写入缓存,并更新该瓦片索引的访问状态、缓存状态、最后访问时间、访问次数、瓦片大小、地理范围、存储时间;
步骤8:判断是否完成遍历;
若否,并回转执行上述步骤6;
若是,则绘制并刷新视图,缓存置换删除部分瓦片,进行瓦片预测并加载,同时更新预测瓦片的索引信息;并回转执行上述步骤3。
本步骤通过对三维瓦片进行置换预缓存,可缩短三维瓦片的加载时间,具体流程参见图5。本发明在面向网络GIS的最小价值空间数据缓存置换算法GDLVF的基础上进行算法改进,对缓存中的瓦片数据分类并进行价值计算,流程参见图6。本发明综合考虑可视化范围与缓存中的数据对三维瓦片预测的影响进行三维瓦片预缓存。本发明置换预缓存的具体步骤如下;
步骤A.1:将缓存中的瓦片分为三类;第一类瓦片为访问过的不在视场中的瓦片,第二类瓦片为未被访问过的预缓存瓦片,第三类瓦片为视场中的正在显示的瓦片;
步骤A.2:对于第一类瓦片进行访问次数、已缓存时间、最后缓存时间,瓦片大小,与视点中心的距离的统计;本发明考虑时间、访问效率、文件大小、空间位置特征,使用价值函数计算缓存中第一类瓦片的数据价值V1(i),移除其中数据价值最小的三维瓦片;
V1(i)=Vspacial(i)*Vtime(i)*Vsize(i);
V1(i)为瓦片i的数据价值,Vspacial(i)为瓦片i的空间位置价值,Vtime(i)为瓦片i的时间价值,Vsize(i)为瓦片i的数据大小价值。
空间价值:数据距离是影响缓存置换算法的重要因素,指瓦片数据的中心点距离当前可视窗口中心点的距离,数据距离越小的数据被再次访问的可能性越大,瓦片i的空间位置价值的计算公式:
其中,D(i)为瓦片的数据距离,当0≤D(i)<1时,设定D(i)=1。
时间价值:通过假定越长时间未被访问的数据再次被访问的概率越小,越被频繁访问的数据其再次被访问的概率越大,瓦片再次被访问的概率与瓦片被访问时刻与当前时刻的时间间隔成反比,定义了瓦片i的时间价值的计算公式:
last_internal(i)=current_time-last_time;
式中,Vtime(i)为瓦片数据的时间价值,avg_access_time(i)为瓦片数据的平均访问间隔时间,last_internal(i)为瓦片的最后访问时刻与当前时刻的时间间隔;,current_time为系统当前时间,store_time(i)为瓦片首次存储时间,access_count(i)为瓦片被访问次数;current_time为系统当前时间,last_time为瓦片最后一次被访问的时间。
数据大小价值:缓存中瓦片数据大小能够影响缓存数据的数量,通常移除那些较大的数据以容纳更多的小数据,考虑到栅格影像金字塔瓦片的数据从几kb到几百kb不等,GDLVF算法使用加权数据大小代替数据大小,并提出瓦片i的数据大小价值的计算公式:
其中,Vsize(i)为瓦片数据大小价值,WDZ(i)为瓦片数据的加权数据大小,size(i)为瓦片数据大小,benchmark_size为基准数据,基准数据为缓存瓦片数据的平均值;
步骤A.3:第二类瓦片则通过获取访问次数、已缓存时间、最后缓存时间,瓦片大小,并分别计算与视点中心的距离;使用价值函数计算缓存中第二类瓦片的数据价值V2(i),移除其中数据价值最小的三维瓦片;
V2(i)=Vspacial(i)*Vsize(i),其中Vspacial(i)和Vsize(i)的计算与第一类瓦片的计算方法一致;
步骤A.4:设置预缓存前的内存临界值为maxCacheCapacity1,判断当前内存缓存的容量是否大于临界值maxCacheCapacity1,如果是,释放整个内存中瓦片缓存的N%的空间,其中0<N<100,对缓存中的第一类三维瓦片数据和第二类三维瓦片数据分别按照瓦片的数据价值从低到高提出各自N%的内存占用量,直到符合内存要求。
步骤A.5,当前缓存中的瓦片的范围以及当前可视化区域范围进行计算;
步骤A.6,以缓存中瓦片地理范围向外扩充,东、西、南、北方向分别扩大M%(根据预缓存的范围进行设置)作为缓冲区的边界;
步骤A.7,根据边界瓦片的层级以邻近原则设定所有缓冲区的瓦片层级,即以应预缓存瓦片距离最近的边界瓦片等级为该点的瓦片等级;
步骤A.8,计算缓冲区中所有应预缓存瓦片的数据价值V(i),本发明综合考虑预测瓦片的大小、空间位置特征,邻近边界瓦片特征,依据这些因素使用特定的价值函数计算数据价值,对这些瓦片进行价值计算:
V(i)=Vspacial(i)*Vsize(i)*Vnear(i)
V(i)为瓦片i的数据价值,Vspacial(i)为瓦片i的空间位置价值,Vsize(i)为瓦片i的数据大小价值,Vnear(i)为瓦片i的邻近边界瓦片的数据价值。其中,Vspacial(i)和Vsize(i)的计算方法与步骤8.3中的方法一致。
步骤A.9,对预测的瓦片以数据价值进行从大到小排序;
步骤A.10:设置预缓存后的内存临界值为maxCacheCapacity2;
步骤A.11:按照应预缓存瓦片的数据价值从高到低进行瓦片的请求加载并更新索引;
步骤A.12:判断内存量是否达到临界值maxCacheCapacity2;
否是,则退出,本流程结束;
若否,则执行下述步骤A.13;
步骤A.13:判断是否加载完成;
若是,则退出,本流程结束;
若否,则回转执行上述步骤A.11。
本发明考虑到现有的瓦片数据可视化方法、三维瓦片数据的组织方式以及显示特点,从尽可能的减少实时瓦片请求加载次数和提高缓存有效性的角度出发,提出的一种三维模型数据的瓦片式快速加载方法,对于解决大量三维场景数据加载缓慢的难题具有现实意义。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

Claims (5)

1.一种三维模型数据的瓦片式快速加载方法,其特征在于,包括以下步骤:
步骤1:将三维模型数据瓦片化;
步骤2:通过八叉树技术对瓦片数据进行空间组织,建立瓦片数据的空间八叉树索引,并分离瓦片的索引部分和数据部分,实现对瓦片数据的空间组织和分离存储,映射索引部分到内存以提高查询检索的性能;
步骤3:程序等待直到发生场景变换,则执行下述步骤4;若程序退出,则本流程结束;
步骤4:计算视场的锥体裁减范围;具体实现过程是由视场角定义的上下左右四个面和由投影矩阵定义的远近剪切平面;
步骤5:根据步骤4中的锥体裁减范围确定视锥体内部的地理范围,利用瓦片LOD原理,从八叉树根节点开始遍历,判断节点所指瓦片的精细程度是否满足分辨率的要求,确定当前视锥体范围内的八叉树节点;
步骤6:按层级从低到高遍历需要加载的瓦片信息;
步骤7:对视锥体中所需瓦片依次判断瓦片的缓存状态是否为true,缓存状态为true表明该瓦片在缓存中,为false则不在缓存中;
若是true,则请求数据在缓存中,请求数据命中,直接在缓存中读取数据,并同时更新最后访问时间、存储时间、访问次数和访问状态;
若为false,则添加对该瓦片的请求到请求队列,建立子线程加载请求的数据,并将返回的数据写入缓存,并更新该瓦片索引的访问状态、缓存状态、最后访问时间、访问次数、瓦片大小、地理范围、存储时间;
步骤8:判断是否完成遍历;
若否,并回转执行上述步骤6;
若是,则绘制并刷新视图,缓存置换删除部分瓦片,进行瓦片预测并加载,同时更新预测瓦片的索引信息;并回转执行上述步骤3;
所述缓存置换删除部分瓦片,其具体实现包括以下子步骤:
步骤A.1:将缓存中的瓦片分为三类;第一类瓦片为访问过的不在视场中的瓦片,第二类瓦片为未被访问过的预缓存瓦片,第三类瓦片为视场中的正在显示的瓦片;
步骤A.2:对于第一类瓦片进行访问次数、已缓存时间、最后缓存时间,瓦片大小,与视点中心的距离的统计;使用价值函数计算缓存中第一类瓦片的数据价值V1(i),移除其中数据价值最小的三维瓦片;
V1(i)=Vspacial(i)*Vtime(i)*Vsize(i);
<mrow> <msub> <mi>V</mi> <mrow> <mi>s</mi> <mi>p</mi> <mi>a</mi> <mi>c</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mi>D</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>;</mo> </mrow>
<mrow> <msub> <mi>V</mi> <mrow> <mi>t</mi> <mi>i</mi> <mi>m</mi> <mi>e</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mi>a</mi> <mi>v</mi> <mi>g</mi> <mo>_</mo> <mi>a</mi> <mi>c</mi> <mi>c</mi> <mi>e</mi> <mi>s</mi> <mi>s</mi> <mo>_</mo> <mi>t</mi> <mi>i</mi> <mi>m</mi> <mi>e</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>*</mo> <mi>l</mi> <mi>a</mi> <mi>s</mi> <mi>t</mi> <mo>_</mo> <mi>int</mi> <mi>e</mi> <mi>r</mi> <mi>n</mi> <mi>a</mi> <mi>l</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>;</mo> </mrow>
<mrow> <mi>a</mi> <mi>v</mi> <mi>g</mi> <mo>_</mo> <mi>a</mi> <mi>c</mi> <mi>c</mi> <mi>e</mi> <mi>s</mi> <mi>s</mi> <mo>_</mo> <mi>t</mi> <mi>i</mi> <mi>m</mi> <mi>e</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>c</mi> <mi>u</mi> <mi>r</mi> <mi>r</mi> <mi>e</mi> <mi>n</mi> <mi>t</mi> <mo>_</mo> <mi>t</mi> <mi>i</mi> <mi>m</mi> <mi>e</mi> <mo>-</mo> <mi>s</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mi>e</mi> <mo>_</mo> <mi>t</mi> <mi>i</mi> <mi>m</mi> <mi>e</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mi>a</mi> <mi>c</mi> <mi>c</mi> <mi>e</mi> <mi>s</mi> <mi>s</mi> <mo>_</mo> <mi>c</mi> <mi>o</mi> <mi>u</mi> <mi>n</mi> <mi>t</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>;</mo> </mrow>
last_int ernal(i)=current_time-last_time(i);
<mrow> <msub> <mi>V</mi> <mrow> <mi>s</mi> <mi>i</mi> <mi>z</mi> <mi>e</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mi>W</mi> <mi>D</mi> <mi>Z</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>;</mo> </mrow>
<mrow> <mi>W</mi> <mi>D</mi> <mi>Z</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>s</mi> <mi>i</mi> <mi>z</mi> <mi>e</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mi>b</mi> <mi>e</mi> <mi>n</mi> <mi>c</mi> <mi>h</mi> <mi>m</mi> <mi>a</mi> <mi>r</mi> <mi>k</mi> <mo>_</mo> <mi>s</mi> <mi>i</mi> <mi>z</mi> <mi>e</mi> </mrow> </mfrac> <mo>+</mo> <mn>1</mn> <mo>;</mo> </mrow>
其中V1(i)为第一类瓦片i的数据价值,Vspacial(i)为瓦片i的空间位置价值,Vtime(i)为瓦片i的时间价值,Vsize(i)为瓦片i的数据大小价值;D(i)为瓦片的数据距离,当0≤D(i)<1时,设定D(i)=1;avg_access_time(i)为瓦片数据的平均访问间隔时间,last_int ernal(i)为瓦片的最后访问时刻与当前时刻的时间间隔;current_time为系统当前时间,store_time(i)为瓦片首次存储时间,access_count(i)为瓦片被访问次数;last_time为瓦片最后一次被访问的时间;WDZ(i)为瓦片数据的加权数据大小,size(i)为瓦片数据大小,benchmark_size为基准数据,基准数据为缓存瓦片数据的平均值;
步骤A.3:第二类瓦片则通过获取访问次数、已缓存时间、最后缓存时间,瓦片大小,并分别计算与视点中心的距离;使用价值函数计算缓存中第二类瓦片的数据价值V2(i),移除其中数据价值最小的三维瓦片;
V2(i)=Vspacial(i)*Vsize(i),其中Vspacial(i)和Vsize(i)的计算与第一类瓦片的计算方法一致;
步骤A.4:设置预缓存前的内存临界值为maxCacheCapacity1,判断当前内存缓存的容量是否大于临界值maxCacheCapacity1,如果是,释放整个内存中瓦片缓存的N%的空间,其中0<N<100,对缓存中的第一类三维瓦片数据和第二类三维瓦片数据分别按照瓦片的数据价值从低到高提出各自N%的内存占用量,直到符合内存要求。
2.根据权利要求1所述的三维模型数据的瓦片式快速加载方法,其特征在于:步骤1中是按照全球格网剖分方法将三维模型数据瓦片化。
3.根据权利要求1所述的三维模型数据的瓦片式快速加载方法,其特征在于:步骤2中,索引文件由索引文件头和若干个索引数据块组成;所述索引文件头包含文件标示字段和该瓦片的元信息,所述瓦片的元信息包括瓦片的地理范围、瓦片的最大层级和最小层级、瓦片的大小和0层瓦片的索引位置;所述索引数据块包含节点瓦片的地理范围、八个子节点的索引位置和节点瓦片数据在数据文件中的存储位置、瓦片大小、访问状态、缓存状态、最后访问时间、访问次数、存储时间。
4.根据权利要求1所述的三维模型数据的瓦片式快速加载方法,其特征在于:步骤2中,数据文件由数据文件头和若干个瓦片数据块组成;所述数据文件头包含文件标示字段和关联索引文件字段;所述瓦片数据块包含瓦片数据。
5.根据权利要求1所述的三维模型数据的瓦片式快速加载方法,其特征在于:步骤8中所述瓦片预测并加载,其具体实现包括以下子步骤:
步骤B.1:计算当前缓存中的瓦片的范围以及当前可视化区域范围;
步骤B.2:以缓存中瓦片地理范围向外扩充,东、西、南、北方向分别扩大M%作为缓冲区的边界,其中M值根据预缓存的范围进行设置;
步骤B.3:根据边界瓦片的层级以邻近原则设定所有缓冲区的瓦片层级;
步骤B.4:计算缓冲区中所有应预缓存瓦片的数据价值V(i):
V(i)=Vspacial(i)*Vsize(i)*Vnear(i);
<mrow> <msub> <mi>V</mi> <mrow> <mi>s</mi> <mi>p</mi> <mi>a</mi> <mi>c</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mi>D</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>;</mo> </mrow>
<mrow> <msub> <mi>V</mi> <mrow> <mi>s</mi> <mi>i</mi> <mi>z</mi> <mi>e</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mi>W</mi> <mi>D</mi> <mi>Z</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>;</mo> </mrow>
<mrow> <mi>W</mi> <mi>D</mi> <mi>Z</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <mi>s</mi> <mi>i</mi> <mi>z</mi> <mi>e</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mi>b</mi> <mi>e</mi> <mi>n</mi> <mi>c</mi> <mi>h</mi> <mi>m</mi> <mi>a</mi> <mi>r</mi> <mi>k</mi> <mo>_</mo> <mi>s</mi> <mi>i</mi> <mi>z</mi> <mi>e</mi> </mrow> </mfrac> <mo>+</mo> <mn>1</mn> <mo>;</mo> </mrow>
V(i)为应预缓存瓦片i的数据价值,Vspacial(i)为瓦片i的空间位置价值,Vsize(i)为瓦片i的数据大小价值,Vnear(i)为瓦片i的邻近边界瓦片的数据价值;D(i)为瓦片的数据距离,当0≤D(i)<1时,设定D(i)=1;WDZ(i)为瓦片数据的加权数据大小,size(i)为瓦片数据大小,benchmark_size为基准数据,基准数据为缓存瓦片数据的平均值;
步骤B.5:对预测的瓦片以数据价值进行从大到小排序;
步骤B.6:设置预缓存后的内存临界值为maxCacheCapacity2;
步骤B.7:按照应预缓存瓦片的数据价值从高到低进行瓦片的请求加载并更新索引;
步骤B.8:判断内存量是否达到临界值maxCacheCapacity2;
若是,则退出,本流程结束;
若否,则执行下述步骤B.9;
步骤B.9:判断是否加载完成;
若是,则退出,本流程结束;
若否,则回转执行上述步骤B.7。
CN201611104349.5A 2016-12-05 2016-12-05 一种三维模型数据的瓦片式快速加载方法 Expired - Fee Related CN106600523B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611104349.5A CN106600523B (zh) 2016-12-05 2016-12-05 一种三维模型数据的瓦片式快速加载方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611104349.5A CN106600523B (zh) 2016-12-05 2016-12-05 一种三维模型数据的瓦片式快速加载方法

Publications (2)

Publication Number Publication Date
CN106600523A CN106600523A (zh) 2017-04-26
CN106600523B true CN106600523B (zh) 2018-03-13

Family

ID=58595059

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611104349.5A Expired - Fee Related CN106600523B (zh) 2016-12-05 2016-12-05 一种三维模型数据的瓦片式快速加载方法

Country Status (1)

Country Link
CN (1) CN106600523B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107292960A (zh) * 2017-06-30 2017-10-24 浙江科澜信息技术有限公司 一种三维场景中大规模地形渲染的局部刷新方法
CN109241368B (zh) * 2018-07-03 2022-02-22 北京道亨软件股份有限公司 一种海量poi数据存储方法
CN109299548B (zh) * 2018-09-28 2023-09-01 中航安贞(浙江)信息科技有限公司 一种面向网络的建筑信息模型数据发布与可视化方法
CN109544650B (zh) * 2018-11-07 2020-05-05 苏州工业园区格网信息科技有限公司 基于三维空间剖分的地理坐标压缩编解码方法
CN110276820B (zh) * 2019-06-24 2022-12-23 重庆梅安森科技股份有限公司 基于lod组织与调度方法的gis模型优化方法及系统
CN110543716B (zh) * 2019-08-29 2023-12-15 中国南方电网有限责任公司 三维架空电缆层级电网优化方法、装置和计算机设备
CN110647541A (zh) * 2019-09-26 2020-01-03 武汉市珞珈俊德地信科技有限公司 一种高效的自适应三维模型瓦片生产方法
CN111581323A (zh) * 2020-05-18 2020-08-25 中国科学院自动化研究所 二/三维地理空间显示方法及系统
CN111785353B (zh) * 2020-06-29 2022-07-08 平安国际智慧城市科技股份有限公司 数字病理切片的处理方法、装置、存储介质及电子设备
CN112417029B (zh) * 2020-12-04 2024-02-27 广东广宇科技发展有限公司 基于gis的2.5维空间数据可视化方法、介质和设备
CN112989079B (zh) * 2021-04-22 2021-08-03 北京电信易通信息技术股份有限公司 一种新型图像数据检索的方法及系统
CN113506378B (zh) * 2021-07-29 2023-03-17 和舆图(北京)科技有限公司 一种在mr设备上动态加载三维模型的方法
CN113656514A (zh) * 2021-08-12 2021-11-16 煤炭科学研究总院 矿山三维模型可视化方法和装置
CN114648607B (zh) * 2022-02-23 2024-03-29 中国电建集团昆明勘测设计研究院有限公司 基于cad平台的倾斜三维模型重建与动态调度方法
CN115984457A (zh) * 2022-12-02 2023-04-18 北京百度网讯科技有限公司 三维模型显示方法、装置和电子设备
CN116433863A (zh) * 2023-04-08 2023-07-14 北京联横科创有限公司 一种地形数据模型的数据管理方法及装置
CN116091526B (zh) * 2023-04-10 2023-06-20 北京飞渡科技股份有限公司 一种智慧城市三维场景瓦片化加速方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104867174B (zh) * 2015-05-08 2018-02-23 腾讯科技(深圳)有限公司 一种三维地图渲染显示方法及系统

Also Published As

Publication number Publication date
CN106600523A (zh) 2017-04-26

Similar Documents

Publication Publication Date Title
CN106600523B (zh) 一种三维模型数据的瓦片式快速加载方法
CN105261066B (zh) 一种三维地理信息系统实时绘制多线程分配与控制方法
CN101441779B (zh) 一种海量数字化地形的快速动态绘制方法
CN100468461C (zh) 逼真三维地形几何模型的实时绘制方法
CN110738721B (zh) 基于视频几何分析的三维场景渲染加速方法及系统
CN101261743B (zh) 一种基于规则网格的大规模地形漫游模拟方法
CN101692229B (zh) 基于数据内容的三维空间数据自适应多级缓存系统
CN101615191B (zh) 海量点云数据的存储与实时可视化方法
CN105760529B (zh) 一种移动端矢量数据的空间索引和缓存构建方法
KR102147356B1 (ko) 캐시 메모리 시스템 및 그 동작방법
CN107171961B (zh) 基于内容流行度的缓存方法及其装置
CN105718480B (zh) 一种基于地理信息的海量三维数据调度的方法
CN105701851B (zh) 一种基于地理信息的三维渲染引擎系统
CN103268221B (zh) 一种基于web技术的气象数据体三维显示方法及装置
CN108520557A (zh) 一种图形图像融合的海量建筑绘制方法
CN107479871A (zh) 一种海量的矢量数据的访问和渲染方法、电子设备及存储介质
CN101221660B (zh) 数据处理装置和数据处理方法
CN106373175A (zh) 一种地形高度图数据的加载方法
CN103164440B (zh) 面向虚拟现实的空间数据引擎方法
CN106202175B (zh) 面向大图分割的分布式动态图管理系统
CN112906125A (zh) 铁路固定设施bim模型轻量化加载方法
CN116563453A (zh) 一种加速渲染的精细化污染扩散可视化方法
CN103714192B (zh) 基于自适应r-树的大数据量铁路三维设计模型渲染方法
Bao et al. SMART: An Efficient Technique for Massive Terrain Visualization from Out-of-core.
CN109118422A (zh) 一种嵌入式移动图形处理器的纹理Cache及处理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180313

Termination date: 20211205

CF01 Termination of patent right due to non-payment of annual fee