曾 波,霍 亮,朱王璋
(1.山西省測繪工程院,山西太原030002;2.北京建筑工程學(xué)院測繪與城市空間信息學(xué)院,北京100044;3.現(xiàn)代城市測繪國家測繪地理信息局重點實驗室,北京100044;4.武漢大學(xué)測繪學(xué)院,湖北武漢430079)
隨著各行業(yè)應(yīng)用的不斷發(fā)展,衛(wèi)星遙感、航拍、雷達(dá)等影像數(shù)據(jù)及各種矢量數(shù)據(jù)已經(jīng)大量積累。而隨著時間的推移,數(shù)據(jù)的積累數(shù)量會越來越龐大,數(shù)據(jù)的種類也會越來越豐富。經(jīng)過對多個部門的調(diào)查發(fā)現(xiàn),很多部門的遙感影像數(shù)據(jù)已經(jīng)達(dá)到了數(shù)十TB,甚至上百 TB的量級,而且還在不斷增長[1]。如此巨量的數(shù)據(jù),給影像的快速傳輸、存儲、管理和數(shù)據(jù)共享、數(shù)據(jù)分發(fā)等方面帶來了巨大的困難,在數(shù)據(jù)管理和使用方面都存在著較為突出的問題。主要表現(xiàn)為數(shù)據(jù)存儲不規(guī)范、假丟失、重復(fù)存儲、查找障礙、使用效率低等方面。一方面,傳統(tǒng)的文件存儲方式給影像的查詢檢索帶來了極大的不便;另一方面,處理海量數(shù)據(jù)的關(guān)系數(shù)據(jù)庫技術(shù)采用的是傳統(tǒng)的關(guān)系型DBMS對遙感影像數(shù)據(jù)這種非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行存儲,其效率并不高,使得系統(tǒng)的存儲能力受制于所依賴的DBMS的能力,對影像數(shù)據(jù)的管理與發(fā)布也支持較弱,從而影響整個系統(tǒng)的性能。因此,如何科學(xué)有效地管理龐大的影像數(shù)據(jù),實現(xiàn)對影像高效的查詢、檢索、顯示和處理,使之能更好地為應(yīng)用提供服務(wù),已經(jīng)成為一個急需思考的重要課題[2]。
針對目前影像數(shù)據(jù)相關(guān)部門的數(shù)據(jù)存儲現(xiàn)狀,以及國內(nèi)外在海量影像數(shù)據(jù)管理方面的研究情況,本文的研究目標(biāo)為:
1)實現(xiàn)海量數(shù)據(jù)的有序、規(guī)范存儲和管理。不僅能夠有效地組織和管理好現(xiàn)在與將來入庫的數(shù)據(jù),同時還能夠管理好歷史存檔數(shù)據(jù),從而避免數(shù)據(jù)假丟失和重復(fù)存儲現(xiàn)象的發(fā)生。
2)提高數(shù)據(jù)的查詢效率。通過建立數(shù)據(jù)索引,提供屬性查詢和空間查詢等多種手段,實現(xiàn)海量影像的快速查詢。
3)提高數(shù)據(jù)的使用效率。通過快視圖、金字塔等多種技術(shù)手段,實現(xiàn)大幅影像的快速瀏覽和處理。
4)提高數(shù)據(jù)的安全性和保密性,保證涉密數(shù)據(jù)不被泄露和遺失。同時,在保密的前提下,提高影像數(shù)據(jù)發(fā)布的快捷性和便利性。
針對以上的目標(biāo),本論文主要完成以下幾方面的研究內(nèi)容:
1)由于各類數(shù)據(jù)的元數(shù)據(jù)結(jié)構(gòu)肯定存在差異,所以在數(shù)據(jù)庫統(tǒng)一存儲時,需要設(shè)計合理的元數(shù)據(jù)表結(jié)構(gòu),以使各種元數(shù)據(jù)結(jié)構(gòu)既能實現(xiàn)統(tǒng)一查詢檢索,又能夠表現(xiàn)各自的特點。
2)由于要管理海量的影像數(shù)據(jù),所以需要研究設(shè)計高效的空間索引。通過各種索引的建立,來提高數(shù)據(jù)的查詢檢索效率。
3)對于單幅數(shù)據(jù)量較大的影像,為了實現(xiàn)其快速的瀏覽顯示,需要研究設(shè)計有效的數(shù)據(jù)調(diào)度方法。
(1)解決思路
根據(jù)研究區(qū)域的實際情況,已有的數(shù)據(jù)不僅數(shù)據(jù)量大,而且分布比較零散,有存儲在各臺服務(wù)器上的,也有存儲在CD、DVD等各種光盤上的,還有一些是存儲在磁帶、膠片上的。所以,如由人工整理這些數(shù)據(jù),然后再集中存入數(shù)據(jù)庫,需要花費(fèi)很多的人力物力。因此,需要研究一種省時省力又能有效管理數(shù)據(jù)的方法。傳統(tǒng)的基于文件系統(tǒng)管理影像數(shù)據(jù)的方法和基于數(shù)據(jù)庫管理影像數(shù)據(jù)的方法都存在著一些缺陷。在多數(shù)情況下,需要對影像快速入庫和快速查詢、快速讀取,所以可以把占用大量存儲空間和I/O時間的影像數(shù)據(jù)體從數(shù)據(jù)庫分離出來,以文件方式單獨存儲管理,而僅把影像元數(shù)據(jù)和快視圖提取出來存儲在數(shù)據(jù)庫中。
本文研究影像數(shù)據(jù)管理的思路是:原始影像數(shù)據(jù)不移動,只提取影像數(shù)據(jù)的元數(shù)據(jù)信息和快視圖,原始影像和影像元數(shù)據(jù)分離存儲。查詢數(shù)據(jù)時,可根據(jù)屬性條件和空間條件查找數(shù)據(jù)庫中的元數(shù)據(jù),并根據(jù)查詢結(jié)果來篩選和識別需要的影像;處理數(shù)據(jù)時,可根據(jù)查詢結(jié)果中的存儲路徑信息獲取原始數(shù)據(jù)來做相關(guān)的處理。由于原始影像不移動,所以避免了數(shù)據(jù)可能的丟失和損壞;由于數(shù)據(jù)庫中只存儲元數(shù)據(jù)和快視圖,只需要少量的存儲空間,所以避免了數(shù)據(jù)庫的膨脹;由于索引的存在,查詢數(shù)據(jù)的效率是非常高效的,并且只需要查詢索引數(shù)據(jù)庫就能夠知道存放在各處的影像信息,如存放路徑、屬性信息、快視圖等。通過這些信息就能夠辨別不同的數(shù)據(jù),從而得到所需要的影像數(shù)據(jù),進(jìn)而極大地提高了數(shù)據(jù)查詢的效率。
(2)基本流程
基于上面的思路,管理影像數(shù)據(jù)的基本流程如圖1所示。
圖1 基本管理流程圖
1)創(chuàng)建快視圖。根據(jù)原始影像數(shù)據(jù)的元數(shù)據(jù)信息,自動創(chuàng)建影像數(shù)據(jù)的快視圖,并將快視圖儲存在數(shù)據(jù)庫中。
2)提取元數(shù)據(jù)。在數(shù)據(jù)檢索的過程中,將根據(jù)數(shù)據(jù)種類自動識別影像數(shù)據(jù)的元數(shù)據(jù)文件,并從中提取相關(guān)的元數(shù)據(jù)信息,如拍攝時間、軌道號、空間范圍、分辨率、含云量等各種參數(shù)。同時,根據(jù)原始影像生成快視圖片,用于查詢和瀏覽。
3)建立數(shù)據(jù)索引。對符合條件的搜索結(jié)果數(shù)據(jù),根據(jù)其元數(shù)據(jù)、快視圖及存儲路徑等信息,自動建立數(shù)據(jù)的空間索引。
4)索引數(shù)據(jù)入庫。將各種索引數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫中進(jìn)行統(tǒng)一存儲。
通過上面4步的操作,就已經(jīng)建立了數(shù)據(jù)的索引結(jié)構(gòu),接下來就是查詢數(shù)據(jù)、瀏覽數(shù)據(jù)、處理數(shù)據(jù)。對于已經(jīng)建立索引的影像數(shù)據(jù),就可以通過屬性或空間位置對其進(jìn)行快速的查詢檢索,也能夠進(jìn)行原始影像的處理等各種操作。
(1)空間索引
為了能夠快速檢索查詢數(shù)據(jù),需要對存儲在磁盤、光盤、數(shù)據(jù)庫及網(wǎng)絡(luò)上的數(shù)據(jù)建立各種索引??赏ㄟ^掃描數(shù)據(jù)目錄,自動識別各種影像的數(shù)據(jù)類型,創(chuàng)建數(shù)據(jù)索引,實現(xiàn)影像數(shù)據(jù)的一體化高效管理[3]。
本文采用R-tree來創(chuàng)建數(shù)據(jù)的空間索引,實現(xiàn)數(shù)據(jù)的高效查詢。R-tree是一種用于處理多維數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),可用來訪問二維或更高維區(qū)域?qū)ο蠼M成的空間數(shù)據(jù)。R-tree是一棵平衡樹,如圖2所示。樹上有兩類結(jié)點:葉子結(jié)點和非葉子結(jié)點。每一個結(jié)點由若干個索引項構(gòu)成。對于葉子結(jié)點,索引項形如(Index,Obj_ID)。其中,Index記錄包圍影像數(shù)據(jù)的最小外接矩形MBR;Obj_ID用于標(biāo)識一個空間數(shù)據(jù)對象。對于一個非葉子結(jié)點,它的索引項形如(Index,Child_Pointer)。其中,Child_Pointer指向該結(jié)點的子結(jié)點;Index仍指一個矩形區(qū)域,該矩形區(qū)域包圍了子結(jié)點上所有索引項MBR的最小矩形區(qū)域[4]。
圖2 R-tree空間索引示意圖
(2)數(shù)據(jù)快速查詢
影像數(shù)據(jù)的查詢檢索是在已經(jīng)創(chuàng)建的索引基礎(chǔ)上,實現(xiàn)了空間查詢、屬性查詢、行政區(qū)劃查詢及各查詢之間交叉組合查詢等。
①空間查詢
為了能夠?qū)崿F(xiàn)對影像數(shù)據(jù)的空間查詢,需要提取影像自身的空間范圍。影像數(shù)據(jù)的空間范圍坐標(biāo)通常保存在數(shù)據(jù)文件的頭文件或者元數(shù)據(jù)文件中。因此在進(jìn)行數(shù)據(jù)索引的時候,可提取出影像的空間四角坐標(biāo)和坐標(biāo)系參數(shù),并將坐標(biāo)統(tǒng)一轉(zhuǎn)換到數(shù)據(jù)集的坐標(biāo)系上,以便影像能夠在數(shù)據(jù)集中正確顯示和查詢。影像的空間范圍則用矩形來表示。為了提高空間查詢的效率,筆者將同一數(shù)據(jù)集下的所有影像的空間范圍都寫入同一個多邊形矢量圖層中統(tǒng)一管理,并建立空間索引。在本系統(tǒng)中,提供了點選查詢、框選查詢和多邊形查詢3種空間查詢方式。
②屬性查詢
屬性查詢功能是最常用的查詢手段之一。在創(chuàng)建索引過程中,會提取影像的各種元數(shù)據(jù)信息(包括屬性元數(shù)據(jù)),并將元數(shù)據(jù)記錄到數(shù)據(jù)庫的相應(yīng)元數(shù)據(jù)表中。屬性查詢的主要查詢目標(biāo)就是數(shù)據(jù)庫中的各個元數(shù)據(jù)表。通過屬性查詢,可以快速而精確地查詢到感興趣的數(shù)據(jù)。
③行政區(qū)劃查詢
通常城市規(guī)劃、數(shù)字城市等GIS應(yīng)用中所使用的數(shù)據(jù),都會與行政區(qū)域有著密不可分的空間屬性關(guān)系。當(dāng)需要這類數(shù)據(jù)時,最先確定的就是所需要的數(shù)據(jù)是在哪個行政區(qū)域。通過行政區(qū)劃查詢,就可以很容易地定位到感興趣的影像數(shù)據(jù)。實現(xiàn)行政區(qū)劃查詢,首先是根據(jù)指定的行政區(qū)名稱,如省名、市名、縣名等查詢到行政區(qū)對應(yīng)的空間多邊形;其次,根據(jù)行政區(qū)多邊形,采用空間查詢的方式查找影像數(shù)據(jù)。
遙感影像的數(shù)據(jù)量是非常龐大的,即使是單幅影像數(shù)據(jù),也很容易達(dá)到數(shù)百GB的數(shù)據(jù)量。如果需要對這些影像進(jìn)行實時的漫游和瀏覽,如采用常規(guī)的方法把整個影像數(shù)據(jù)加入內(nèi)存并渲染顯示已不可行。因此需要尋找更有效的方法[5]。首先對影像進(jìn)行重采樣、分層切割,建立影像金字塔;然后為了節(jié)省存儲空間,對數(shù)據(jù)進(jìn)行壓縮;在影像瀏覽和漫游時,采用調(diào)度算法實現(xiàn)快速顯示。此外,很多情況下只需要查看影像數(shù)據(jù)的概括,因此需要從原始影像中單獨抽取快視圖,供用戶查詢?yōu)g覽。下面分別根據(jù)影像快速瀏覽的幾個方面進(jìn)行探討和研究。
(1)影像快視圖提取
在數(shù)據(jù)查詢時,通常只需要瀏覽影像的快視圖來進(jìn)行粗略的判斷,而不用打開影像的原始文件。因此影像快視圖在影像數(shù)據(jù)查詢過程中,會頻繁使用。因此,在數(shù)據(jù)入庫的時候就提取影像快視圖,并存儲在數(shù)據(jù)庫中。作為快速瀏覽的一部分,本節(jié)將討論影像快視圖提取的步驟。
首先需要確定快視圖的大小、格式和RGB取值??煲晥D的寬高采用按原始圖像16∶1縮小的比例來獲取,最大值設(shè)為512像素。如果寬或高大于512像素,則將其轉(zhuǎn)換為512像素。由于影像圖本身不附帶顏色信息,在影像文件內(nèi)部保存的是每個像元值,像元值的數(shù)值類型可能是字節(jié)型、短整型、長整型、單精度、雙精度等,則需要將影像中的像元值映射到0~255區(qū)間。本文采用的是線性拉伸的方法,通過線性變換的方式來調(diào)整影像的數(shù)值范圍。其次,影像數(shù)據(jù)是由多波段組成,一張影像的波段數(shù)為1~N,如何選擇出3個波段分別來代表R、G、B 3種顏色值也是要考慮的。如果影像中只有1個波段,則生成的快視圖為灰度圖像,即RGB三原色都從同一個波段中取得,且3個值都一樣。如果波段數(shù)大于1個,則首先判斷元數(shù)據(jù)表中是否有配圖的設(shè)置,如果有,則根據(jù)元數(shù)據(jù)中的定義來設(shè)置;如果沒有,還需要進(jìn)一步處理。如果波段數(shù)為2,則R值取第1個波段值,G值、B值都取第2個波段的值。如果波段數(shù)為3或者大于3個,則RGB分別取前3個波段中的值[6]。
(2)影像顯示調(diào)度
采用快視圖、金字塔、空間索引技術(shù)來組織影像數(shù)據(jù)在一定程度上克服了影像漫游、數(shù)據(jù)調(diào)度速度過慢的問題,但是每次存取數(shù)據(jù)都需要訪問數(shù)據(jù)庫并將數(shù)據(jù)讀取到客戶端才可以完成,并沒有徹底解決響應(yīng)速度過慢的問題。此平臺的開發(fā)采用多線程緩存機(jī)制,對影像數(shù)據(jù)的顯示采用雙線程,即一個線程負(fù)責(zé)地圖漫游、放大、縮小操作請求并根據(jù)請求控制地圖的顯示;另一線程用于向服務(wù)器發(fā)送數(shù)據(jù)預(yù)取請求并維護(hù)數(shù)據(jù)接收緩存區(qū),后一線程受前一線程的控制。對影像輸出采用多線程,可一邊讀取數(shù)據(jù),一邊進(jìn)行切割等數(shù)據(jù)處理。對影像導(dǎo)入數(shù)據(jù)瀏覽輸出等多個操作過程實現(xiàn)多線程處理,可以繼續(xù)提高系統(tǒng)性能的并發(fā)性,并可同時進(jìn)行部分?jǐn)?shù)據(jù)的瀏覽和部分?jǐn)?shù)據(jù)的導(dǎo)入或輸出。
傳輸數(shù)據(jù)時,通過建立緩沖池機(jī)制減少數(shù)據(jù)傳輸,當(dāng)數(shù)據(jù)達(dá)到緩沖池固定比率或延時到一定時間,才將數(shù)據(jù)打包傳輸,并可根據(jù)網(wǎng)絡(luò)速率、服務(wù)器性能等允許對緩沖池參數(shù)進(jìn)行調(diào)整。當(dāng)用GDAL讀取數(shù)據(jù)時,如果GDAL緩沖區(qū)足夠大,則先把數(shù)據(jù)保存到內(nèi)存;當(dāng)用戶進(jìn)行瀏覽放大等操作時,可直接從GDAL緩沖區(qū)取數(shù)據(jù),避免磁盤讀寫[6]。
作為一個以4D產(chǎn)品數(shù)據(jù)為基礎(chǔ)的多源海量影像數(shù)據(jù)庫管理平臺,影像數(shù)據(jù)庫的設(shè)計應(yīng)滿足以下需求:支持多分辨率多波段影像數(shù)據(jù)的存貯與管理;能夠快速定位和提取指定區(qū)域、指定波段的影像數(shù)據(jù);支持多種數(shù)據(jù)源的集成管理及影像元數(shù)據(jù)的高效管理;支持TB級以上的海量數(shù)據(jù)管理;支持海量數(shù)據(jù)安全快速實時多用戶訪問與共享;從可視化角度看,支持大范圍數(shù)據(jù)的無縫漫游顯示。
系統(tǒng)的總體框架采用層次化設(shè)計思想,以實現(xiàn)不同層次間的相互獨立性,保障系統(tǒng)的高度穩(wěn)定性、實用性和擴(kuò)展性。系統(tǒng)采用C/S開發(fā)模式,總體架構(gòu)如圖3所示。
1)用戶層:與系統(tǒng)連接的外部實體,有交互功能,可進(jìn)行填寫信息、提交請求的操作,請求結(jié)果返回在客戶端顯示。
2)應(yīng)用層:主要包括數(shù)據(jù)導(dǎo)入、輸出模塊、數(shù)據(jù)查詢檢索模塊和系統(tǒng)管理功能模塊。
3)服務(wù)層(業(yè)務(wù)邏輯層):完成業(yè)務(wù)的邏輯控制和流程處理,進(jìn)行初步的應(yīng)用安全控制和權(quán)限檢查,記錄原始的交易日志,進(jìn)行交易的存儲轉(zhuǎn)發(fā)等。對外提供應(yīng)用服務(wù)器、數(shù)據(jù)服務(wù)器邏輯功能,由運(yùn)行在應(yīng)用服務(wù)器上各個子系統(tǒng)完成。
4)數(shù)據(jù)訪問層:采用統(tǒng)一的接口訪問后臺數(shù)據(jù),該層中的數(shù)據(jù)庫系統(tǒng)用于結(jié)構(gòu)化信息的存儲和處理,是系統(tǒng)的數(shù)據(jù)核心。
5)數(shù)據(jù)層:是整個系統(tǒng)的核心,各類數(shù)據(jù)按照合理規(guī)范的數(shù)據(jù)標(biāo)準(zhǔn)進(jìn)行整合處理,并建立科學(xué)的數(shù)據(jù)庫管理機(jī)制。
6)系統(tǒng)硬件層:提供整個系統(tǒng)的硬件平臺、操作平臺,以確保系統(tǒng)正常運(yùn)行。
圖3 系統(tǒng)架構(gòu)圖
底層與數(shù)據(jù)庫的交互通過開源類庫GDAL和PostgreSQL數(shù)據(jù)庫提供的API來實現(xiàn)。采用GDAL與數(shù)據(jù)庫的API函數(shù)編寫的多源海量影像數(shù)據(jù)管理組件,主要負(fù)責(zé)海量數(shù)據(jù)的加載、輸出、創(chuàng)建索引、金字塔和實時處理等功能。
客戶端查詢可視化系統(tǒng)是基于開源項目Map WinGIS,并利用Visual Studio2010提供的面向?qū)ο蟮募砷_發(fā)環(huán)境,基于面向?qū)ο蠛徒M件技術(shù)開發(fā)的海量影像數(shù)據(jù)管理平臺 。圖4、圖5分別是系統(tǒng)的主界面和導(dǎo)入、導(dǎo)出的界面,成功實現(xiàn)了多分辨率、多數(shù)據(jù)源的海量影像數(shù)據(jù)的有效管理和共享。
圖4 系統(tǒng)主界面
圖5 數(shù)據(jù)導(dǎo)入、輸出界面
用戶界面基于開源的功能類和函數(shù)庫,如OGR、Proj4等,實現(xiàn)與數(shù)據(jù)庫的連接。包括時空數(shù)據(jù)結(jié)構(gòu)、地圖投影、拓?fù)浼翱臻g操作、數(shù)據(jù)庫存取接口函數(shù)和空間數(shù)據(jù)可視化等,邏輯上以工程的形式組織影像,實現(xiàn)數(shù)據(jù)的顯示、無縫漫游等可視化操作,以及屬性和空間查詢等功能。在此基礎(chǔ)上為其他應(yīng)用系統(tǒng)提供一個數(shù)據(jù)支撐平臺。
基于該方法構(gòu)建的測繪4D數(shù)據(jù)管理平臺,已經(jīng)在山西省汾河流域進(jìn)行了應(yīng)用測試,目前運(yùn)行良好。其對不同來源不同數(shù)據(jù)格式的航空遙感影像和DEM數(shù)據(jù)采用分幅、分塊方法進(jìn)行了整合存儲,然后與矢量數(shù)據(jù)疊加在一起,完成的海量影像數(shù)據(jù)管理平臺建設(shè),數(shù)據(jù)量達(dá)到了10 TB,方便了用戶存儲調(diào)度管理數(shù)據(jù),從而實現(xiàn)多源海量數(shù)據(jù)的高效管理與信息共享,滿足了用戶的應(yīng)用需求。
本文提出了海量測繪4D數(shù)據(jù)管理平臺架構(gòu)體系,詳細(xì)描述了海量測繪數(shù)據(jù)的組織方式。在此基礎(chǔ)上,在統(tǒng)一標(biāo)準(zhǔn)、統(tǒng)一基礎(chǔ)和統(tǒng)一空間參照體系下,開發(fā)出測繪4D(DOM、DEM、DLG、DRG)數(shù)據(jù)管理平臺,便于用戶在此基礎(chǔ)上進(jìn)行各種應(yīng)用開發(fā),可以較好地解決多源、海量的數(shù)據(jù)存儲調(diào)度及管理,并可實現(xiàn)部分分析功能,如疊加運(yùn)算等。但如何在二維多分辨參照系下,組織多維數(shù)據(jù)進(jìn)行綜合運(yùn)算[7]是海量測繪4D數(shù)據(jù)管理的又一個重要問題。
[1]徐迪峰.海量遙感影像管理系統(tǒng)的研究與實現(xiàn)[D].蘇州:蘇州大學(xué),2009.
[2]劉偉.海量遙感影像數(shù)據(jù)存儲技術(shù)研究[D].長沙:國防科技大學(xué),2007.
[3]馬榮華.大型GIS海量數(shù)據(jù)的無縫組織初步研究[J].遙感信息,2003(3):44-48.
[4]鄧錦安,王浩.海量影像數(shù)據(jù)的組織及漫游實現(xiàn)[J].計算機(jī)與數(shù)字工程,2012,40(1):119-120,131.
[5]楊任農(nóng),白娟,黃震宇,等.基于SQLite的LOD模式海量影像數(shù)據(jù)管理系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機(jī)與數(shù)字工程,2011,33(10):140-144.
[6]馬柳青,宋關(guān)福,郭會,等.一種海量地形影像數(shù)據(jù)的快速漫游算法[J].地球信息科學(xué)學(xué)報,2009(5):604-609.