曾 波,霍 亮,朱王璋
(1.山西省測繪工程院,山西太原030002;2.北京建筑工程學院測繪與城市空間信息學院,北京100044;3.現代城市測繪國家測繪地理信息局重點實驗室,北京100044;4.武漢大學測繪學院,湖北武漢430079)
隨著各行業(yè)應用的不斷發(fā)展,衛(wèi)星遙感、航拍、雷達等影像數據及各種矢量數據已經大量積累。而隨著時間的推移,數據的積累數量會越來越龐大,數據的種類也會越來越豐富。經過對多個部門的調查發(fā)現,很多部門的遙感影像數據已經達到了數十TB,甚至上百 TB的量級,而且還在不斷增長[1]。如此巨量的數據,給影像的快速傳輸、存儲、管理和數據共享、數據分發(fā)等方面帶來了巨大的困難,在數據管理和使用方面都存在著較為突出的問題。主要表現為數據存儲不規(guī)范、假丟失、重復存儲、查找障礙、使用效率低等方面。一方面,傳統(tǒng)的文件存儲方式給影像的查詢檢索帶來了極大的不便;另一方面,處理海量數據的關系數據庫技術采用的是傳統(tǒng)的關系型DBMS對遙感影像數據這種非結構化數據進行存儲,其效率并不高,使得系統(tǒng)的存儲能力受制于所依賴的DBMS的能力,對影像數據的管理與發(fā)布也支持較弱,從而影響整個系統(tǒng)的性能。因此,如何科學有效地管理龐大的影像數據,實現對影像高效的查詢、檢索、顯示和處理,使之能更好地為應用提供服務,已經成為一個急需思考的重要課題[2]。
針對目前影像數據相關部門的數據存儲現狀,以及國內外在海量影像數據管理方面的研究情況,本文的研究目標為:
1)實現海量數據的有序、規(guī)范存儲和管理。不僅能夠有效地組織和管理好現在與將來入庫的數據,同時還能夠管理好歷史存檔數據,從而避免數據假丟失和重復存儲現象的發(fā)生。
2)提高數據的查詢效率。通過建立數據索引,提供屬性查詢和空間查詢等多種手段,實現海量影像的快速查詢。
3)提高數據的使用效率。通過快視圖、金字塔等多種技術手段,實現大幅影像的快速瀏覽和處理。
4)提高數據的安全性和保密性,保證涉密數據不被泄露和遺失。同時,在保密的前提下,提高影像數據發(fā)布的快捷性和便利性。
針對以上的目標,本論文主要完成以下幾方面的研究內容:
1)由于各類數據的元數據結構肯定存在差異,所以在數據庫統(tǒng)一存儲時,需要設計合理的元數據表結構,以使各種元數據結構既能實現統(tǒng)一查詢檢索,又能夠表現各自的特點。
2)由于要管理海量的影像數據,所以需要研究設計高效的空間索引。通過各種索引的建立,來提高數據的查詢檢索效率。
3)對于單幅數據量較大的影像,為了實現其快速的瀏覽顯示,需要研究設計有效的數據調度方法。
(1)解決思路
根據研究區(qū)域的實際情況,已有的數據不僅數據量大,而且分布比較零散,有存儲在各臺服務器上的,也有存儲在CD、DVD等各種光盤上的,還有一些是存儲在磁帶、膠片上的。所以,如由人工整理這些數據,然后再集中存入數據庫,需要花費很多的人力物力。因此,需要研究一種省時省力又能有效管理數據的方法。傳統(tǒng)的基于文件系統(tǒng)管理影像數據的方法和基于數據庫管理影像數據的方法都存在著一些缺陷。在多數情況下,需要對影像快速入庫和快速查詢、快速讀取,所以可以把占用大量存儲空間和I/O時間的影像數據體從數據庫分離出來,以文件方式單獨存儲管理,而僅把影像元數據和快視圖提取出來存儲在數據庫中。
本文研究影像數據管理的思路是:原始影像數據不移動,只提取影像數據的元數據信息和快視圖,原始影像和影像元數據分離存儲。查詢數據時,可根據屬性條件和空間條件查找數據庫中的元數據,并根據查詢結果來篩選和識別需要的影像;處理數據時,可根據查詢結果中的存儲路徑信息獲取原始數據來做相關的處理。由于原始影像不移動,所以避免了數據可能的丟失和損壞;由于數據庫中只存儲元數據和快視圖,只需要少量的存儲空間,所以避免了數據庫的膨脹;由于索引的存在,查詢數據的效率是非常高效的,并且只需要查詢索引數據庫就能夠知道存放在各處的影像信息,如存放路徑、屬性信息、快視圖等。通過這些信息就能夠辨別不同的數據,從而得到所需要的影像數據,進而極大地提高了數據查詢的效率。
(2)基本流程
基于上面的思路,管理影像數據的基本流程如圖1所示。

圖1 基本管理流程圖
1)創(chuàng)建快視圖。根據原始影像數據的元數據信息,自動創(chuàng)建影像數據的快視圖,并將快視圖儲存在數據庫中。
2)提取元數據。在數據檢索的過程中,將根據數據種類自動識別影像數據的元數據文件,并從中提取相關的元數據信息,如拍攝時間、軌道號、空間范圍、分辨率、含云量等各種參數。同時,根據原始影像生成快視圖片,用于查詢和瀏覽。
3)建立數據索引。對符合條件的搜索結果數據,根據其元數據、快視圖及存儲路徑等信息,自動建立數據的空間索引。
4)索引數據入庫。將各種索引數據導入數據庫中進行統(tǒng)一存儲。
通過上面4步的操作,就已經建立了數據的索引結構,接下來就是查詢數據、瀏覽數據、處理數據。對于已經建立索引的影像數據,就可以通過屬性或空間位置對其進行快速的查詢檢索,也能夠進行原始影像的處理等各種操作。
(1)空間索引
為了能夠快速檢索查詢數據,需要對存儲在磁盤、光盤、數據庫及網絡上的數據建立各種索引。可通過掃描數據目錄,自動識別各種影像的數據類型,創(chuàng)建數據索引,實現影像數據的一體化高效管理[3]。
本文采用R-tree來創(chuàng)建數據的空間索引,實現數據的高效查詢。R-tree是一種用于處理多維數據的數據結構,可用來訪問二維或更高維區(qū)域對象組成的空間數據。R-tree是一棵平衡樹,如圖2所示。樹上有兩類結點:葉子結點和非葉子結點。每一個結點由若干個索引項構成。對于葉子結點,索引項形如(Index,Obj_ID)。其中,Index記錄包圍影像數據的最小外接矩形MBR;Obj_ID用于標識一個空間數據對象。對于一個非葉子結點,它的索引項形如(Index,Child_Pointer)。其中,Child_Pointer指向該結點的子結點;Index仍指一個矩形區(qū)域,該矩形區(qū)域包圍了子結點上所有索引項MBR的最小矩形區(qū)域[4]。

圖2 R-tree空間索引示意圖
(2)數據快速查詢
影像數據的查詢檢索是在已經創(chuàng)建的索引基礎上,實現了空間查詢、屬性查詢、行政區(qū)劃查詢及各查詢之間交叉組合查詢等。
①空間查詢
為了能夠實現對影像數據的空間查詢,需要提取影像自身的空間范圍。影像數據的空間范圍坐標通常保存在數據文件的頭文件或者元數據文件中。因此在進行數據索引的時候,可提取出影像的空間四角坐標和坐標系參數,并將坐標統(tǒng)一轉換到數據集的坐標系上,以便影像能夠在數據集中正確顯示和查詢。影像的空間范圍則用矩形來表示。為了提高空間查詢的效率,筆者將同一數據集下的所有影像的空間范圍都寫入同一個多邊形矢量圖層中統(tǒng)一管理,并建立空間索引。在本系統(tǒng)中,提供了點選查詢、框選查詢和多邊形查詢3種空間查詢方式。
②屬性查詢
屬性查詢功能是最常用的查詢手段之一。在創(chuàng)建索引過程中,會提取影像的各種元數據信息(包括屬性元數據),并將元數據記錄到數據庫的相應元數據表中。屬性查詢的主要查詢目標就是數據庫中的各個元數據表。通過屬性查詢,可以快速而精確地查詢到感興趣的數據。
③行政區(qū)劃查詢
通常城市規(guī)劃、數字城市等GIS應用中所使用的數據,都會與行政區(qū)域有著密不可分的空間屬性關系。當需要這類數據時,最先確定的就是所需要的數據是在哪個行政區(qū)域。通過行政區(qū)劃查詢,就可以很容易地定位到感興趣的影像數據。實現行政區(qū)劃查詢,首先是根據指定的行政區(qū)名稱,如省名、市名、縣名等查詢到行政區(qū)對應的空間多邊形;其次,根據行政區(qū)多邊形,采用空間查詢的方式查找影像數據。
遙感影像的數據量是非常龐大的,即使是單幅影像數據,也很容易達到數百GB的數據量。如果需要對這些影像進行實時的漫游和瀏覽,如采用常規(guī)的方法把整個影像數據加入內存并渲染顯示已不可行。因此需要尋找更有效的方法[5]。首先對影像進行重采樣、分層切割,建立影像金字塔;然后為了節(jié)省存儲空間,對數據進行壓縮;在影像瀏覽和漫游時,采用調度算法實現快速顯示。此外,很多情況下只需要查看影像數據的概括,因此需要從原始影像中單獨抽取快視圖,供用戶查詢?yōu)g覽。下面分別根據影像快速瀏覽的幾個方面進行探討和研究。
(1)影像快視圖提取
在數據查詢時,通常只需要瀏覽影像的快視圖來進行粗略的判斷,而不用打開影像的原始文件。因此影像快視圖在影像數據查詢過程中,會頻繁使用。因此,在數據入庫的時候就提取影像快視圖,并存儲在數據庫中。作為快速瀏覽的一部分,本節(jié)將討論影像快視圖提取的步驟。
首先需要確定快視圖的大小、格式和RGB取值。快視圖的寬高采用按原始圖像16∶1縮小的比例來獲取,最大值設為512像素。如果寬或高大于512像素,則將其轉換為512像素。由于影像圖本身不附帶顏色信息,在影像文件內部保存的是每個像元值,像元值的數值類型可能是字節(jié)型、短整型、長整型、單精度、雙精度等,則需要將影像中的像元值映射到0~255區(qū)間。本文采用的是線性拉伸的方法,通過線性變換的方式來調整影像的數值范圍。其次,影像數據是由多波段組成,一張影像的波段數為1~N,如何選擇出3個波段分別來代表R、G、B 3種顏色值也是要考慮的。如果影像中只有1個波段,則生成的快視圖為灰度圖像,即RGB三原色都從同一個波段中取得,且3個值都一樣。如果波段數大于1個,則首先判斷元數據表中是否有配圖的設置,如果有,則根據元數據中的定義來設置;如果沒有,還需要進一步處理。如果波段數為2,則R值取第1個波段值,G值、B值都取第2個波段的值。如果波段數為3或者大于3個,則RGB分別取前3個波段中的值[6]。
(2)影像顯示調度
采用快視圖、金字塔、空間索引技術來組織影像數據在一定程度上克服了影像漫游、數據調度速度過慢的問題,但是每次存取數據都需要訪問數據庫并將數據讀取到客戶端才可以完成,并沒有徹底解決響應速度過慢的問題。此平臺的開發(fā)采用多線程緩存機制,對影像數據的顯示采用雙線程,即一個線程負責地圖漫游、放大、縮小操作請求并根據請求控制地圖的顯示;另一線程用于向服務器發(fā)送數據預取請求并維護數據接收緩存區(qū),后一線程受前一線程的控制。對影像輸出采用多線程,可一邊讀取數據,一邊進行切割等數據處理。對影像導入數據瀏覽輸出等多個操作過程實現多線程處理,可以繼續(xù)提高系統(tǒng)性能的并發(fā)性,并可同時進行部分數據的瀏覽和部分數據的導入或輸出。
傳輸數據時,通過建立緩沖池機制減少數據傳輸,當數據達到緩沖池固定比率或延時到一定時間,才將數據打包傳輸,并可根據網絡速率、服務器性能等允許對緩沖池參數進行調整。當用GDAL讀取數據時,如果GDAL緩沖區(qū)足夠大,則先把數據保存到內存;當用戶進行瀏覽放大等操作時,可直接從GDAL緩沖區(qū)取數據,避免磁盤讀寫[6]。
作為一個以4D產品數據為基礎的多源海量影像數據庫管理平臺,影像數據庫的設計應滿足以下需求:支持多分辨率多波段影像數據的存貯與管理;能夠快速定位和提取指定區(qū)域、指定波段的影像數據;支持多種數據源的集成管理及影像元數據的高效管理;支持TB級以上的海量數據管理;支持海量數據安全快速實時多用戶訪問與共享;從可視化角度看,支持大范圍數據的無縫漫游顯示。
系統(tǒng)的總體框架采用層次化設計思想,以實現不同層次間的相互獨立性,保障系統(tǒng)的高度穩(wěn)定性、實用性和擴展性。系統(tǒng)采用C/S開發(fā)模式,總體架構如圖3所示。
1)用戶層:與系統(tǒng)連接的外部實體,有交互功能,可進行填寫信息、提交請求的操作,請求結果返回在客戶端顯示。
2)應用層:主要包括數據導入、輸出模塊、數據查詢檢索模塊和系統(tǒng)管理功能模塊。
3)服務層(業(yè)務邏輯層):完成業(yè)務的邏輯控制和流程處理,進行初步的應用安全控制和權限檢查,記錄原始的交易日志,進行交易的存儲轉發(fā)等。對外提供應用服務器、數據服務器邏輯功能,由運行在應用服務器上各個子系統(tǒng)完成。
4)數據訪問層:采用統(tǒng)一的接口訪問后臺數據,該層中的數據庫系統(tǒng)用于結構化信息的存儲和處理,是系統(tǒng)的數據核心。
5)數據層:是整個系統(tǒng)的核心,各類數據按照合理規(guī)范的數據標準進行整合處理,并建立科學的數據庫管理機制。
6)系統(tǒng)硬件層:提供整個系統(tǒng)的硬件平臺、操作平臺,以確保系統(tǒng)正常運行。

圖3 系統(tǒng)架構圖
底層與數據庫的交互通過開源類庫GDAL和PostgreSQL數據庫提供的API來實現。采用GDAL與數據庫的API函數編寫的多源海量影像數據管理組件,主要負責海量數據的加載、輸出、創(chuàng)建索引、金字塔和實時處理等功能。
客戶端查詢可視化系統(tǒng)是基于開源項目Map WinGIS,并利用Visual Studio2010提供的面向對象的集成開發(fā)環(huán)境,基于面向對象和組件技術開發(fā)的海量影像數據管理平臺 。圖4、圖5分別是系統(tǒng)的主界面和導入、導出的界面,成功實現了多分辨率、多數據源的海量影像數據的有效管理和共享。

圖4 系統(tǒng)主界面

圖5 數據導入、輸出界面
用戶界面基于開源的功能類和函數庫,如OGR、Proj4等,實現與數據庫的連接。包括時空數據結構、地圖投影、拓撲及空間操作、數據庫存取接口函數和空間數據可視化等,邏輯上以工程的形式組織影像,實現數據的顯示、無縫漫游等可視化操作,以及屬性和空間查詢等功能。在此基礎上為其他應用系統(tǒng)提供一個數據支撐平臺。
基于該方法構建的測繪4D數據管理平臺,已經在山西省汾河流域進行了應用測試,目前運行良好。其對不同來源不同數據格式的航空遙感影像和DEM數據采用分幅、分塊方法進行了整合存儲,然后與矢量數據疊加在一起,完成的海量影像數據管理平臺建設,數據量達到了10 TB,方便了用戶存儲調度管理數據,從而實現多源海量數據的高效管理與信息共享,滿足了用戶的應用需求。
本文提出了海量測繪4D數據管理平臺架構體系,詳細描述了海量測繪數據的組織方式。在此基礎上,在統(tǒng)一標準、統(tǒng)一基礎和統(tǒng)一空間參照體系下,開發(fā)出測繪4D(DOM、DEM、DLG、DRG)數據管理平臺,便于用戶在此基礎上進行各種應用開發(fā),可以較好地解決多源、海量的數據存儲調度及管理,并可實現部分分析功能,如疊加運算等。但如何在二維多分辨參照系下,組織多維數據進行綜合運算[7]是海量測繪4D數據管理的又一個重要問題。
[1]徐迪峰.海量遙感影像管理系統(tǒng)的研究與實現[D].蘇州:蘇州大學,2009.
[2]劉偉.海量遙感影像數據存儲技術研究[D].長沙:國防科技大學,2007.
[3]馬榮華.大型GIS海量數據的無縫組織初步研究[J].遙感信息,2003(3):44-48.
[4]鄧錦安,王浩.海量影像數據的組織及漫游實現[J].計算機與數字工程,2012,40(1):119-120,131.
[5]楊任農,白娟,黃震宇,等.基于SQLite的LOD模式海量影像數據管理系統(tǒng)的設計與實現[J].計算機與數字工程,2011,33(10):140-144.
[6]馬柳青,宋關福,郭會,等.一種海量地形影像數據的快速漫游算法[J].地球信息科學學報,2009(5):604-609.