[发明专利]一种在三维场景动态调度并显示海量矢量数据的方法有效
申请号: | 201410603972.X | 申请日: | 2014-10-31 |
公开(公告)号: | CN104376050B | 公开(公告)日: | 2017-11-24 |
发明(设计)人: | 俞蔚 | 申请(专利权)人: | 浙江科澜信息技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 浙江永鼎律师事务所33233 | 代理人: | 王梨华 |
地址: | 310051 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 三维 场景 动态 调度 显示 海量 矢量 数据 方法 | ||
1.一种在三维场景动态调度并显示海量矢量数据的方法,其特征在于包括以下步骤;
第一步:建立缓存:缓存包括索引缓存与数据缓存;
第二步:矢量数据的动态调度,包含确定显示范围索引值集以及矢量数据的动态增加与删除,即矢量动态调度;
矢量数据的增加与删除步骤如下:
C1、当前加载的矢量要素ID的列表mIdList,当前加载的缓存数据name的列表mCurNameList,存储加载缓存数据的索引号以及相应的矢量要素的ID集合,用map<int,vector<int>>存储;
C2、根据当前的索引值集合和上一次的索引值集合{mCurNameList}进行比较,计算出增加的索引值集合addNameList和减少的索引值集合delNameList;
C3、根据要删除的索引号delNameList在mCurNameList中删除对应的索引号并获取删除索引号对应的矢量要素ID集合,即为{ID},将{ID}记录在一个列表delList中,此时列表delList集合中ID不重复存在;
C4、遍历mCurNameList,依次比较其中要素的ID是否在delList中存在,若存在,则删除delList中对应的要素ID,遍历结束后,deList中的ID即为要删除矢量要素的ID;
C5、遍历mIdList中的ID值,如果ID值在deList中存在,则删除此ID值,并删除此ID值对应的矢量要素数据,然后再根据增加的索引号addNameList请求数据,判断增加addNameList对应的矢量要素ID值是否在mIdList不存在,若不存在,则在mIdList列表中增加对应的ID值并相应的增加矢量要素的数据。
2.根据权利要求1所述的一种在三维场景动态调度并显示海量矢量数据的方法,其特征在于:建立索引缓存包括以下步骤:
A1、解析矢量要素数据;
A2、以矢量要素数据的包围盒和矢量图层的包围盒以及瓦片大小进行索引计算,矢量要素数据的包围盒信息:确定XFMin、XFMax、YFMin、YFMax以及矢量图层的包围盒信息:XLMin、XLMax、YLMin、YLMax;
XFMin表示矢量要素包围盒X方向的最小值、XFMax表示矢量要素包围盒X方向的最大值、YFMin表示矢量要素包围盒Y方向的最小值、YFMax表示矢量要素包围盒Y方向的最大值、XLMin表示矢量图层包围盒X方向的最小值、XLMax表示矢量图层包围盒X方向的最大值、YLMin表示矢量图层包围盒Y方向的最小值、YLMax表示矢量图层包围盒Y方向的最大值,
计算瓦片大小的公式:FeatureCount指矢量要素的个数,
矢量要素数据所占网格的起始终止行列值,其中行列值从0开始:
起始行值:BegRow=(YLMax-YFMax)/TileSize
终止行值:EndRow=(YLMax-YFMin)/TileSize
起始列值:BegCol=(XFMin-XLMin)/TileSize
终止列值:EndCol=(XFMax-XLMin)/TileSize
整个矢量图层的行列数:
行数:Rows=(YLMax-YLMin)/TileSize+1
列数:Cols=(XLMax-XLMin)/TileSize+1
索引值:Index=Row×Cols+Col,
其中BegRow≤Row≤EndRow,BegCol≤Col≤EndCol;
A3、生成索引缓存;遍历每一个矢量要素数据,按公式计算每个要素所占的索引值集合,根据索引值集合的每一个索引值,将索引值及对应的要素ID数据写到或追加到索引缓存中。
3.根据权利要求1所述的一种在三维场景动态调度并显示海量矢量数据的方法,其特征在于:数据缓存是通过遍历每个矢量要素数据,以要素ID、部分个数NumParts、坐标点数NumPoints、部分数组Parts数组、点数组Points数组、属性记录的组织方式生成,其中要素ID占8个字节。
4.根据权利要求1所述的一种在三维场景动态调度并显示海量矢量数据的方法其特征在于:确定显示范围索引值集是根据当前视点eye(x,y,z)在XOZ平面的投影、人为规定的显示距离大小Range以及矢量图层的包围盒信息、视景体,步骤如下:
B1、根据eye(x,y,z)在XOZ平面的投影eye(x,z),显示距离大小Range确定当前的显示范围;
B2、对矢量图层数据的包围盒和B1确定的显示范围进行求交计算;
B3、通过求交得到的包围盒信息计算出当前范围起始终止行列值;
B4、根据每一个行列值、瓦片大小以及矢量图层的包围盒反算出每个格网的大小,判断每个格网是否在视景体范围内,若在视景体范围内,计算出索引值,添加到索引值集合中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江科澜信息技术有限公司,未经浙江科澜信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410603972.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种信息处理方法及电子设备
- 下一篇:一种推送网络内容的方法、装置及系统