一種在三維場景動態(tài)調(diào)度并顯示海量矢量數(shù)據(jù)的方法
【專利摘要】本發(fā)明涉及地理信息系統(tǒng)三維矢量領(lǐng)域,公開了一種在三維場景動態(tài)調(diào)度并顯示海量矢量數(shù)據(jù)的方法,包括以下步驟;第一步:建立緩存:緩存包括索引緩存與數(shù)據(jù)緩存;第二步:矢量數(shù)據(jù)的動態(tài)調(diào)度,包含確定顯示范圍索引值集以及矢量數(shù)據(jù)的動態(tài)增加與刪除,即矢量動態(tài)調(diào)度。本發(fā)明以網(wǎng)格索引機制為基礎(chǔ),分別生成網(wǎng)格索引緩存和矢量數(shù)據(jù)緩存,通過當前視點及人為規(guī)定的顯示距離確定顯示范圍,根據(jù)顯示范圍的變化實時增加或刪除矢量數(shù)據(jù),實現(xiàn)矢量數(shù)據(jù)的動態(tài)調(diào)度,從而實現(xiàn)海量矢量數(shù)據(jù)在三維場景中的動態(tài)顯示。
【專利說明】一種在三維場景動態(tài)調(diào)度并顯示海量矢量數(shù)據(jù)的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于地理信息系統(tǒng)三維矢量領(lǐng)域,涉及了一種在三維場景中通過對海量矢 量數(shù)據(jù)進行邏輯分塊,建立網(wǎng)格索引,根據(jù)網(wǎng)格索引調(diào)用與當前視點相關(guān)的數(shù)據(jù)塊,實現(xiàn) 對矢量數(shù)據(jù)的動態(tài)調(diào)度并顯示的方法,即一種在三維場景動態(tài)調(diào)度并顯示海量矢量數(shù)據(jù)的 方法。
【背景技術(shù)】
[0002] 傳統(tǒng)的三維場景對矢量數(shù)據(jù)的繪制是通過對矢量數(shù)據(jù)一次性解析完畢,將所有空 間數(shù)據(jù)加載到內(nèi)存進行顯示,但由于內(nèi)存大小是有限的,因此,當矢量數(shù)據(jù)為海量數(shù)據(jù)時, 這種處理方式則無能為力。因此,如何在三維場景中對海量矢量數(shù)據(jù)進行顯示,是當前亟需 解決的問題。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明針對現(xiàn)有技術(shù)中的不足,提供了一種在三維場景動態(tài)調(diào)度并顯示海量矢量 數(shù)據(jù)的方法。
[0004] 為了解決上述技術(shù)問題,本發(fā)明通過下述技術(shù)方案得以解決:
[0005] -種在三維場景動態(tài)調(diào)度并顯示海量矢量數(shù)據(jù)的方法,包括以下步驟;
[0006] 第一步:建立緩存:緩存包括索引緩存與數(shù)據(jù)緩存;
[0007] 第二步:矢量數(shù)據(jù)的動態(tài)調(diào)度,包含確定顯示范圍索引值集以及矢量數(shù)據(jù)的動態(tài) 增加與刪除,即矢量動態(tài)調(diào)度。
[0008] 作為優(yōu)選,建立索引緩存包括以下步驟:
[0009] Al、解析矢量要素數(shù)據(jù);
[0010] A2、以矢量要素數(shù)據(jù)的包圍盒和矢量圖層的包圍盒以及瓦片大小進行索引計算, 矢量要素數(shù)據(jù)的包圍盒信息:確定XFMin、XFMax、YFMin、YFMax以及矢量圖層的包圍盒信 息:XLMin、XLMax、YLMiruYLMax ;
[0011] XFMin表示矢量要素包圍盒X方向的最小值、XFMax表示矢量要素包圍盒X方向的 最大值、YFMin表示矢量要素包圍盒Y方向的最小值、YFMax表示矢量要素包圍盒Y方向的 最大值、XLMin表示矢量圖層包圍盒X方向的最小值、XLMax表示矢量圖層包圍盒X方向的 最大值、YLMin表示矢量圖層包圍盒Y方向的最小值、YLMax表示矢量圖層包圍盒Y方向的 最大值,
[0012] 計算瓦片大小的公式:
【權(quán)利要求】
1. 一種在三維場景動態(tài)調(diào)度并顯示海量矢量數(shù)據(jù)的方法,其特征在于包括以下步驟; 第一步:建立緩存:緩存包括索引緩存與數(shù)據(jù)緩存; 第二步:矢量數(shù)據(jù)的動態(tài)調(diào)度,包含確定顯示范圍索引值集以及矢量數(shù)據(jù)的動態(tài)增加 與刪除,即矢量動態(tài)調(diào)度。
2. 根據(jù)權(quán)利要求1所述的一種在三維場景動態(tài)調(diào)度并顯示海量矢量數(shù)據(jù)的方法,其特 征在于:建立索引緩存包括以下步驟: A1、解析矢量要素數(shù)據(jù); A2、以矢量要素數(shù)據(jù)的包圍盒和矢量圖層的包圍盒以及瓦片大小進行索引計算,矢量 要素數(shù)據(jù)的包圍盒信息:確定XFMin、XFMax、YFMin、YFMax以及矢量圖層的包圍盒信息: XLMin、XLMax、YLMin、YLMax ; XFMin表示矢量要素包圍盒X方向的最小值、XFMax表示矢量要素包圍盒X方向的最大 值、YFMin表示矢量要素包圍盒Y方向的最小值、YFMax表示矢量要素包圍盒Y方向的最大 值、XLMin表示矢量圖層包圍盒X方向的最小值、XLMax表示矢量圖層包圍盒X方向的最大 值、YLMin表示矢量圖層包圍盒Y方向的最小值、YLMax表示矢量圖層包圍盒Y方向的最大 值, 計算瓦片大小的公式: TileSize = ^j(YLMax- YLMin)x(XLMa.x - XLMin)/FeatureCount, FeatureCount指矢量要素的個數(shù), 矢量要素數(shù)據(jù)所占網(wǎng)格的起始終止行列值,其中行列值從〇開始: 起始行值:BegRow = (YLMax-YFMax)/TileSize 終止行值:EndRow = (YLMax-YFMin)/TileSize 起始列值:BegCol = (XFMin_XLMin)/TileSize 終止列值:EndCol = (XFMax_XLMin)/TileSize 整個矢量圖層的行列數(shù): 行數(shù):Rows = (YLMax-YLMin)/TileSize+1 列數(shù):Cols = (XLMax-XLMin)/TileSize+1 索引值:Index = RowXCols+Col, 其中 BegRow < Row < EndRow, BegCol < Col < EndCol ; A3、生成索引緩存;遍歷每一個矢量要素數(shù)據(jù),按公式計算每個要素所占的索引值集 合,根據(jù)索引值集合的每一個索引值,將索引值及對應的要素 ID數(shù)據(jù)寫到或追加到索引緩 存中。
3. 根據(jù)權(quán)利要求1所述的一種在三維場景動態(tài)調(diào)度并顯示海量矢量數(shù)據(jù)的方法,其特 征在于:數(shù)據(jù)緩存是通過遍歷每個矢量要素數(shù)據(jù),以要素 ID、部分個數(shù)(NumParts)、坐標點 數(shù)(NumPoints)、部分數(shù)組(Parts數(shù)組)、點數(shù)組(Points數(shù)組)、屬性記錄的組織方式生 成,其中要素 ID占8個字節(jié)。
4. 根據(jù)權(quán)利要求1所述的一種在三維場景動態(tài)調(diào)度并顯示海量矢量數(shù)據(jù)的方法其特 征在于:確定顯示范圍索引值集是根據(jù)當前視點eye (X,y,z)在XOZ平面的投影、人為規(guī)定 的顯示距離大小Range以及矢量圖層的包圍盒信息、視景體,步驟如下: BI、根據(jù)eye (X,y, z)在XOZ平面的投影eye (X,z),顯示距離大小Range確定當前的顯 示范圍; B2、對矢量圖層數(shù)據(jù)的包圍盒和Bl確定的顯示范圍進行求交計算; B3、通過求交得到的包圍盒信息計算出當前范圍起始終止行列值; B4、根據(jù)每一個行列值、瓦片大小以及矢量圖層的包圍盒反算出每個格網(wǎng)的大小,判斷 每個格網(wǎng)是否在視景體范圍內(nèi),若在視景體范圍內(nèi),計算出索引值,添加到索引值集合中。
5.根據(jù)權(quán)利要求1所述的一種在三維場景動態(tài)調(diào)度并顯示海量矢量數(shù)據(jù)的方法其特 征在于:矢量數(shù)據(jù)的增加與刪除步驟如下: C1、當前加載的矢量要素 ID的列表mldList,當前加載的緩存數(shù)據(jù)name的列 表mCurNameList,存儲加載緩存數(shù)據(jù)的索引號以及相應的矢量要素的ID集合,用 map〈int, vector〈int>> 存儲; C2、根據(jù)當前的索引值集合和上一次的索引值集合(mCurNameList)進行比較,計算出 增加的索引值集合addNameList和減少的索引值集合delNameList ; C3、根據(jù)要刪除的索引號delNameList在mCurNameList中刪除對應的索引號并獲取刪 除索引號對應的矢量要素 ID集合,即為(ID),將(ID)記錄在一個列表delList中,此時列 表delList集合中ID不重復存在; C4、遍歷mCurNameList,依次比較其中要素的ID是否在delList中存在,若存在,貝Ij刪 除delList中對應的要素 ID,遍歷結(jié)束后,deList中的ID即為要刪除矢量要素的ID ; C5、遍歷mldList中的ID值,如果ID值在deList中存在,則刪除此ID值,并刪除此 ID值對應的矢量要素數(shù)據(jù),然后再根據(jù)增加的索引號addNameList請求數(shù)據(jù),判斷增加 addNameList對應的矢量要素 ID值是否在mldList不存在,若不存在,則在mldList列表中 增加對應的ID值并相應的增加矢量要素的數(shù)據(jù)。
【文檔編號】G06F17/30GK104376050SQ201410603972
【公開日】2015年2月25日 申請日期:2014年10月31日 優(yōu)先權(quán)日:2014年10月31日
【發(fā)明者】俞蔚 申請人:杭州科瀾信息技術(shù)有限公司