陸剛蘭
(廣西機電職業(yè)技術學院計算機與信息工程系,廣西 南寧 530007)
隨著人類城市信息化逐步地向數字化和立體化方向發(fā)展,以Google Earth為代表的數字地球和數字城市三維應用不僅開啟了城市數字化表達與地理信息的新時代,同時也面臨著巨大的挑戰(zhàn)[1]。三維GIS的一個重要功能就是高效流暢地實現城市模型的三維可視化,但是隨著并發(fā)用戶數越來越多,有限的硬件條件與高速大容量的多層次細節(jié)模型的傳輸之間的矛盾變得越來越突出。
傳統(tǒng)網絡電子地圖的研究對象始于二維平面矢量數據,逐漸擴展到由遙感數據、三維點云模型等組成的三維模型數據,呈現出復雜化、海量化的趨勢,因此如何組織、管理、存儲與繪制大數據量的三維城市模型已成為地圖學中的一個熱點研究內容[2]。目前,三維數據模型的組織與管理方法多數是具有“Layer-Feature”特點的管理模式,在該模式下,城市數據模型被劃分為道路、建筑模型等多個圖層,且每個圖層管理不同的要素對象,但該模式并不對不同分辨率的模型進行區(qū)分,而是按照相同的方式進行統(tǒng)一管理、調度和繪制[3]。由于這種模式并不考慮用戶的視覺感知、數據的類型、數據的層次,使得其具有如下缺點:存儲粒度過大,調度繪制效率低下,并且對用戶操作習慣和感知特征沒有任何針對性考慮。因此,本文根據用戶的視覺感知特點與操作習慣,設計了一種顧及用戶體驗的適用于大數據的復雜三維城市模型的組織方法。該方法可以根據用戶的體驗進行數據調度,以減少數據的無效傳輸。
用戶體驗是指在人機交互時,用戶的主觀心理感受。其中,系統(tǒng)的友好性、軟件的可操作性、系統(tǒng)的流暢性等因素都影響著用戶體驗[4]。而在三維可視化應用環(huán)境下,三維模型的數據組織方式也影響用戶體驗,尤其在硬件資源有限的條件下,如何有效地組織數據,以便能夠向海量并發(fā)用戶提供良好的體驗,保證他們能夠流暢地瀏覽三維場景,已成為亟須解決的問題。本文通過分析用戶操作特點及歸納視覺感知特點進行數據的組織,從而最終實現良好的用戶體驗。
在三維可視化應用環(huán)境下,用戶操作呈現出大范圍漫游和小范圍聚焦的特點。用戶瀏覽的過程會產生眾多無意義的漫游和拖拽,經過許多與目標范圍無關的區(qū)域,從而造成大量無效數據的調度,這些調度會消耗大量有限的軟硬件資源,導致目標范圍模型數據得不到及時傳輸,從而造成目標范圍可視化的滯后。為了解決上述問題,針對海量三維模型數據,其組織方式一定要能夠快速地做到宏觀粗略模型到微觀精細模型的檢索,因此,模型被分成索引元數據和實體數據兩部分[5]。不同LOD模型可以對應著同一個索引元數據,而根據內在關聯(lián)關系,索引元數據又能夠映射到不同LOD的實體模型。同時,打包存儲技術的使用也能夠減少傳輸次數。而三維城市模型作為構筑在地形之上的城市景觀,其表達依附于地形的展現,而地形普遍采用格網劃分[6],因此利用相同的格網劃分方法和格網劃分粒度,并使用相同的格網編碼方式對地形和模型進行編碼,就能夠很好地解決模型和地形的同步調用問題。同時,為了更好地解決小體積模型拉近顯示問題,在綜合考慮模型、視覺權重以及場景的可視范圍的情況下,模型元數據可以采用多層瓦片中重復存儲的策略[7]。此外,為了提高用戶的請求響應速度,可以把小數據量的低精細程度模型和元數據進行打包存儲,并采用低精細模型的快速傳輸和繪制,從而提高操作反饋性,增加用戶的認同感,減少用戶的心理等待時間,為精細模型的調度和可視化提供等待時間。
索引元數據使用定位點信息完成格網塊的映射,而模型包圍盒的地面中心點或左下角點是常用的定位點之一。然而,諸如道路交通網絡模型、地下管網模型等大跨度模型具有覆蓋范圍廣和跨越多個瓦片塊的特點,如果按照傳統(tǒng)定位點計算其所在瓦片,并且大跨度模型的定位點不在這些瓦片內時,就會出現“鏤空”現象,如果把大跨度模型所覆蓋的所有瓦片都存儲所有元數據,即使瀏覽經過了模型的局部,也需要對整個模型進行調度和繪制。對于城市模型而言,其大跨度的空間會產生大量的幾何和紋理數據,因此其傳輸和繪制壓力會比較大。此外,在繪制完整模型時,如果瀏覽沒有經過遠處地形,就可能進入模型“懸空”狀態(tài)。而為了平衡大跨度模型的傳輸和繪制壓力,往往將大跨度模型切割為多個小段,這樣一方面降低了傳輸和繪制壓力,另一方面也便于元數據管理,但是這種方法卻破壞了模型的完整性,因此大跨度模型的生產需要平衡模型的表達粒度和完整性之間的矛盾[8]。
為了避免不同數據類型和不同LOD模型實體對象傳輸數據量大與粒度不均勻的現象發(fā)生,在考慮用戶視覺感知特點的情況下,可以首先把表達輪廓的幾何、材質紋理、細節(jié)屬性等數據進行離散存儲,然后采用幾何操作減少傳輸和繪制的時間,最終實現城市模型的位置、形狀、道路走向等的顯示。而用戶根據當前顯示的內容判斷是否繼續(xù)瀏覽當前區(qū)域還是進行切換。如果用戶停頓時間大于設定閾值或者幾何數據已經傳輸完畢,那么將進行多級紋理數據的傳輸與繪制。同時,為了有效地減少傳輸的次數,每一級紋理都被烘焙成單張。此外,為了能夠提高用戶請求的響應速度,首先傳輸和繪制最粗的一級紋理,而且客戶端還會根據相應的策略進行更精細紋理數據的傳輸和調度。
在進行三維城市模型數據存儲時,使用了多層次的混合空間索引結構以統(tǒng)一多個對象的粒度大小,并進行相應的磁盤數據布局。在本文中,顧及用戶體驗的索引被分成格網索引和基于對象的索引[9]。在格網索引中,利用格網對城市的空間范圍進行分區(qū)。本文將根據城市的行政區(qū)域劃分建立最上層的空間索引。在基于對象的索引中,格網索引被用于管線模型和道路網絡模型;四叉樹索引被用于地形和正射影像圖;LOD-R樹空間索引被用于建筑模型和其他設施模型;八叉樹被用于地質體模型。
由于不同的數據內容使用了不同的空間索引,為了便于管理,需要對不同空間索引樹的生成過程進行一定的限制,即設立數據的粒度以控制混合空間索引結構的生成,如四叉樹、八叉樹的剖分節(jié)點終止條件,R樹空間索引中節(jié)點數量的設置等。同時,針對各類型空間索引的特點,選擇一定的粒度標準生成場景的組織,進而使用此粒度統(tǒng)一內存管理對象、繪制緩存對象以及磁盤存儲對象的大小。在使用四叉樹空間索引時,考慮到紋理的層次,以紋理的大小作為是否進行粒度選擇的約束條件。在使用八叉樹空間索引時,則把地質體的多邊形數量作為分割的約束粒度。而在使用LOD-R樹空間索引時,不僅要限制節(jié)點中的對象數量,還要限定R樹中每個節(jié)點中的多邊形數量總和,從而最終生成混合的空間索引結構。
格網塊劃分完成后,模型元數據按照格網進行打包存儲。模型元數據是模型實體表現之外的索引信息,其不隨模型精細程度的增加而改變,描述了模型概念層次的特征信息,包括定位信息、旋轉信息、縮放信息、包圍盒范圍和LOD層數,如表1所示。通過定位、旋轉和縮放信息可以確定模型所在的位置及形狀,包圍盒范圍可以進行可視范圍對象過濾和范圍查詢。為了改善用戶體驗,增加模型的響應速度,對分辨率較低的LOD層次幾何和紋理與模型元數據進行打包存儲,并通過最粗一級模型的快速傳輸,實現目標區(qū)域最粗一級的模型數據的快速繪制,表現地物輪廓,從而能夠做到第一時間響應用戶的請求,為精細數據的調度提供等待時間。
此外,把模型元數據按瓦片范圍進行聚類,并按照二進制形式進行打包。打包數據分文件頭和文件體兩部分,文件頭負責對象的索引,存儲了對象ID和對象偏移量,文件體存儲了每個模型元數據的實際信息。用戶通過檢索文件頭,既可以遍歷獲取模型元信息,又可以根據對象偏移量,直接定位到目標模型元數據所在地址,獲取模型元數據。
在本文城市模型組織的數據庫設計中,并沒有采用傳統(tǒng)數據庫的單項ID結構,而是使用了顧及用戶體驗的多層次ID結構(圖1)。該ID結構的第0字節(jié)是管理字節(jié);第1~4字節(jié)存放著隨機變量;第5~7字節(jié)存放著自增序列。其中,第0字節(jié)負責元數據的管理,該字節(jié)的1~3位代表著該模型LOD的數目。第1~4字節(jié)中的隨機變量代表著不同的工作區(qū),即當出現新工作區(qū)時,首先把新工作區(qū)的隨機變量與庫中的隨機變量進行比較,如果兩者相等,那么,該隨機變量重新生成,重復上述過程,直到無重復。同理,材質中存儲的紋理ID第0字節(jié)的1~3位,存儲了紋理的LOD級數j。這種ID結構不僅較好地體現出了數據之間的關聯(lián)關系,還增加了存儲空間的利用率,從而能夠滿足三維模型生產的需要。
內存管理對象、磁盤存儲對象和繪制緩存對象之間的對應關系是由其粒度決定的,同時,根據數據在不同層次間的傳輸與交換,可得最小的數據交換輸入/輸出(I/O)次數。然而,無論在哪一層次中,數據只用一個一維的線性數據序列表示。如果不考慮結構的統(tǒng)一,當相應粒度的數據塊從磁盤取出后,通過一次I/O操作進入內存管理對象時,需要磁盤數據塊中的數據序列經過相應的重新排序與表達,才能成為內存管理對象中所能進行分析與應用的對象;同樣,同一粒度的數據傳輸到繪制緩存時,也需要將磁盤中的數據粒度中的線性序列轉化為繪制緩存所需要的數據序列。隨著數據量的增加,數據序列的變化代價變得越來越高,進而影響到用戶的體驗。因此,為了減少數據交換次數,提升用戶體驗,本文針對磁盤、內存與顯存中同一粒度的數據單元,提出一種顧及用戶體驗的分布式數據庫存儲結構,在該結構中,以最終應用端所采用的數據序列的數據結構為基礎,統(tǒng)一了其余各層次中粒度數據單元的數據結構,圖2展示了存儲的邏輯模型。例如,在進行實時繪制的應用中,以繪制緩存中的數據描述列表為基本組織結構,統(tǒng)一內存與磁盤中的數據組織結構。此外,考慮到MongoDB的存儲采用鍵值對,因此數據按照二進制塊打包存儲。
圖2 存儲邏輯模型Fig.2 Logical model of storage
(1)文件系統(tǒng)存儲管理方法。在對城市中的各類對象進行三維建模時,由于對象精度的不同造成了對象表達數據量的差異,因此,如何高效地組織與存儲大范圍城市中的各類模型數據,成為各種基于城市實時應用系統(tǒng)的難點與不可回避的問題。現有的組織方法在內存管理中使用面向對象的方法進行數據的表達,而磁盤采用基于圖元列表的文件存儲,繪制緩存中則使用多個頂點數組、紋理對象生成繪制圖像。通過研究三維城市模型的應用、組織與存儲結構發(fā)現,如果對象的數據組織粒度不一致,那么,單一的數據請求將會占用多個磁盤I/O操作。為了解決這個難題,本文使用了顧及用戶體驗的分布式數據庫存儲結構,實現了磁盤、內存、顯存中數據結構的統(tǒng)一,從而有效地減少了I/O操作次數,能夠實現更快的用戶響應,達到改善用戶體驗的目的。
(2)基于多線程的動態(tài)調度機制。線程可以分為粗粒度與細粒度兩個層次。其中細粒度多線程可以在每個時鐘周期的多個線程中進行上下文切換,從而有效地減少了垂直開銷,提高了總的吞吐率,但這會影響到單個線程的執(zhí)行性能。當線程遇到長延遲操作時,粗粒度多線程可以對線程進行上下文切換,有助于提高處理器執(zhí)行資源的利用率。本文使用基于多線程的動態(tài)調度機制實現線程粒度的動態(tài)控制,有助于提高執(zhí)行效率和資源利用率,有助于縮短任務執(zhí)行時間和提升模型繪制效率。
(3)基于流水線的多線程協(xié)同機制。本文針對應用處理、數據加載、模型繪制這3個階段,建立了基于流水線的多線程協(xié)同機制,即根據三維城市模型數據的特點建立多線程分配機制和控制機制,以實現基于CPU與GPU聯(lián)合處理的線程處理方法與協(xié)同方法。通過采用不同的線程處理加載任務和繪制任務,能夠有效地減少數據加載對繪制的阻塞。例如,在大規(guī)模三維城市環(huán)境下,模型數據被存儲在多磁盤系統(tǒng)中,使得數據散布于多個磁盤系統(tǒng)中,如果采用多線程從多個磁盤系統(tǒng)并行讀取數據,能夠更好地利用多磁盤系統(tǒng)并行I/O能力,實現數據并行加載與傳輸,縮短模型數據的整體加載時間和傳輸時間。
(4)以用戶為中心的自適應可視化策略。本文所采用的以用戶為中心的自適應可視化策略能夠根據場景的不同選擇合適的繪制周期,并選擇相應的場景數據表達,從而確保系統(tǒng)的流暢性,還能夠對用戶交互與感興趣區(qū)域進行重點可視化。多用戶模式的自適應可視化系統(tǒng)有兩個重要特征:一是具有不同背景的用戶通常會提出個性化的信息需求,這就要求系統(tǒng)具備多種可視化表現形式;二是系統(tǒng)需要能夠根據用戶信息自適應地選取可視化表現形式。例如,在虛擬環(huán)境中,能夠滿足不同用戶所特有的視覺需求,即要根據用戶的交互動作及與場景中其他對象的相對位置,決定顯示哪些對象、每個對象的顯示方式、場景的顯示風格和速度等。在用戶為中心的自適應可視化過程中,系統(tǒng)首先從人機交互中得到當前視點位置,并根據當前視點位置確定視景體可見范圍大?。唤又{度模塊根據視景體參數,使用場景的組織索引結構計算得到可見場景節(jié)點,并將可見節(jié)點送入數據調度模塊;然后數據調度模塊根據空間組織節(jié)點與存儲文件的映射關系,得到磁盤存儲數據并開啟磁盤I/O,同時將數據加載到內存緩存中;最后,繪制的API接口(如OpenGL)根據內存緩存中的數據進行圖元的組裝、狀態(tài)的設置與場景繪制環(huán)境的設置,并把數據與圖元繪制命令、繪制控制語句等傳輸到圖形繪制設備緩存中完成圖像的顯示,其過程如圖3所示。
圖3 實時繪制過程流水線Fig.3 Workflow of physical model of storage
(5)多模式路徑漫游機制。本文設計的多模式路徑漫游方式主要包括人機交互漫游和路徑漫游。人機交互漫游是傳統(tǒng)的各系統(tǒng)漫游方式,又被稱為交互式漫游,即通過操作鍵盤和鼠標等終端設備實現任意漫游;路徑漫游則是通過選擇預先設定的路徑進行漫游。通常交互式漫游的命令包括左轉、右轉、前進、后退、上升、下降、仰視、俯視、左平移、右平移等,而人機交互漫游還包括左旋、右旋、上旋、下旋、放大視景體角度、縮小視景體角度等命令。路徑漫游中也包含了許多交互操作和切換特效。通過使用多模式路徑漫游機制,能夠改進現有的路徑設計方法和漫游方式,增加路徑切換特效,方便用戶的漫游操作,讓用戶獲得一個更加舒適的漫游環(huán)境和享受漫游過程,達到更好的用戶體驗。
實驗場景設為武漢市,該市由武昌區(qū)、青山區(qū)、洪山區(qū)、漢陽區(qū)、硚口區(qū)、江岸區(qū)和江漢區(qū)組成。數據中包括地上建筑、市政設施、管道以及道路網絡模型數據,而地下數據則主要包括管線數據、地下構造、地質體數據等。通過相關合并后,7個行政區(qū)包含87個小繪制工作單元,當把這87個小工作區(qū)的相關數據輸入數據庫中,其幾何數據量為6.8 GB,而紋理數據達62.9 GB,工程總數據量達70.7 GB。軟硬件配置情況為:操作系統(tǒng)為 Windows 2003,中央處理器為Intel Core i7 8核處理器,硬盤為單個希捷7 200轉/min,500 GB容量硬盤,內存大小為4 GB,DDR2 667 MHz,顯示卡為Geforce GTS 250,512 MB緩存大小。采用19寸寬屏顯示,顯示分辨率為1 440×900。
為了驗證本文提出方法的性能,本節(jié)將從響應時間、數據傳輸量、場景調度三方面對其進行測試。利用gDebugger測試工具對Layer-Feature組織方法、基于R樹索引的組織方以及本文所提方法的響應時間進行了測試,測試結果如表2所示。從表2中可以看出,對于同一個場景,本文方法能夠極大地減少首次傳輸數據規(guī)模,從而實現響應速度的提高。同時,由表2可見,與其他兩種方法相比,本文所提方法的響應時間最短,緩存數據最少。這是因為在對三維模型索引元數據和最粗一級模型LOD打包組織后,并不需要將場景格網內模型對象完整取出,只需將場景范圍內格網塊取出并快速繪制最粗一級模型,從而實現了緩存數據及響應時間的減少。其次,設計了實驗2對同一個實驗場景在不同組織方法下(圖4)的無效數據傳輸量,即在視景體中并不可見的幾何與紋理細節(jié)的數據量進行對比,結果如表3所示。從表3中可看出,本文方法能夠有效地減少無效數據傳輸量。使用本文所提方法在3 s、5 s、10 s進行場景切換時,分別能夠減少73.3%、56.1%、15.8%的無效數據傳輸。
大數據是各種應用的主流特點,其中,三維城市的可視化應用分析無疑是大數據時代的典型案例,三維城市模型的復雜性、粒度差異和傳輸特點導致多用戶并發(fā)訪問是重要的瓶頸問題。本文針對以上問題,提出了一種顧及用戶體驗的三維城市模型組織方法,并給出了相關的設計與實現。在顧及用戶體驗的三維城市模型組織方法中,分別對數據的建模和組織以及最終的高效繪制進行了詳細地介紹。實驗表明,本文提出的方法能夠增加數據傳輸的效率,平衡調度的粒度,減少無效數據的傳輸,提高響應速度,改善用戶體驗。
[1] 周東波,朱慶,杜志強,等.粒度與結構統(tǒng)一的多層次三維城市模型數據組織方法[J].武漢大學學報(信息科學版),2011,36(12):1406-1409.
[2] 龔俊,朱慶,章漢武,等.基于R樹索引的三維場景細節(jié)層次自適應控制方法[J].測繪學報,2011,40(4):531-534.
[3] 胡昌平,鄧勝利.基于用戶體驗的網站信息構建要素與模型分析[J].情報科學,2012,24(3):321-325.
[4] 劉群,馮丹.基于層次結構的元數據動態(tài)管理方法的研究[J].計算機研究與發(fā)展,2011,46(z2):78-82.
[5] 孫敏,薛勇,馬藹乃.基于格網劃分的大數據集DEM三維可視化[J].計算機輔助設計與圖形學學報,2012,14(6):566-570.
[6] 萬剛,高俊,劉穎真.基于閱讀實驗方法的認知地圖形成研究[J].遙感學報,2013,12(2):339-346.
[7] 胡金星,馬照亭,吳煥萍,等.基于格網劃分的海量地形數據三維可視化[J].計算機輔助設計與圖形學學報,2011,16(8):1164-1168.
[8] ANDUJAR C,BRUNET P,Ayala D.Topology-reducing surface simplification using a discrete solid representation[J].ACM transactions on Graphics,2002,21(2):88-105.
[9] PARK K.Location-based grid-index for spatial query pro-cessing[J].Expert Systems with Applications,2014,41(4):1294-1300.