田茂春 賴 杭
(珠江水利科學研究院,廣東 廣州 510610)
隨著科學技術的不斷發展,遙感技術和地理測繪技術也在不斷的完善,當前,已經能獲取到較高分辨率,文件巨大的遙感影像數據。
針對影像數據比較大的特點,運用金字塔模型的方式能夠將不同分辨率的影像進行調整,從而實現不同分辨率之間的有效瀏覽[1-2]。
另外,常規的串行方法通常適用于相對小規模的遙感數據,為對大數據量的遙感影像進行分析,往往采用MapReduce[3-5],但在針對高分遙感影像進行處理時,所耗費的時間仍然相對較長,并且海量遙感影像的可視化過程非常緩慢。
已有學者利用分布式計算框架來對遙感影像處理,如存儲、鑲嵌、金字塔構建等方面做出了廣泛研究[6]。在遙感影像處理方面,黃冬梅[7]等提出了基于Spark,采用并行的方法來進行影像金字塔構建。在影像切片及元數據存儲方面,文獻[8]研究表明了可以利用NOSQL 進行影像元數據或切片進行存儲,但大多是元數據用NOSQL 存儲,瓦片數據用文件系統或者是多個數據庫配合使用來達到目的,此外,對影響瓦片快速讀取的索引策略并沒有做更深入的研究。
在當前的技術中,可以發現,海量遙感管理與在線可視化瀏覽技術之間處于相互獨立的狀態,為了有效地解決遙感技術信息儲存的問題需要結合遙感數據發布的需求進行調整。
本文基于分布式文件存儲、分布式計算框架等技術,開展了遙感影像數據的分布式存儲、高效檢索和地圖服務即時發布等關鍵技術研究,構建影像即時切片服務發布平臺,能夠使大量堆積的數據得到有效管理和利用,以滿足項目影像服務應用需求。
Hadoop 是一個由Apache 基金會所開發的分布式系統基礎架構。開發者可在不了解分布式底層細節的情況下,開發分布式程序,充分利用集群的威力進行高速運算和存儲。Hadoop 實現了一個分布式文件系統(Distributed File System),其中一個組件是HDFS。隨著Hadoop不斷發展,存儲結構已不限于最初的HDFS(大文件存儲),而像HBASE 分布式列數據庫也得到了 大量發展和應用。
而在計算引擎方面,除了MapReduce 這種適合離線計算的引擎外,又擴展了適合內存計算的Spark 計算框架以及實時流計算框架Storm。此外,Hadoop 生態圈還包含了日志收集器Flume、腳本Pig、資源管理器Yarn 等組件。
Apache Spark 是當前針對大數據處理設計的計算引擎,Spark 對大規模數據的快速處理優勢使其在海量影像計算處理方面有著廣泛應用基礎。
MongoDB 是10gen 公司基于C 語言研發的一個開源的基于分布式文件存儲的NoSQL 數據庫系統。相比關系數據庫,易用性更強,功能非常豐富,擴展了比如地理信息查詢、儲存等功能。另外,查詢語言非常強大也是MongoDB 的一大特點。
上述MongoDB 的特點使其非常適用于數據量大,查詢性能較高的業務,特別是針對多元遙感影像元數據管理。
遙感影像來源多樣,描述其數據的元數據往往也各不相同,傳統的xml 文件存儲方式讀取解析繁瑣,不易于應用系統集成使用,而如果以關系型數據庫存儲,由于各元數據屬性差別較大,為同時滿足不同源元數據存儲,關系表列是所有類型遙感影像元數據的并集,存儲時存在很多字段為空情況,造成存儲資源浪費。而NOSQL 數據庫的代表——分布式文件數據庫MongoDB,以類JSON 方式進行數據存儲,可隨時對存儲結構進行修改,特別適合于多源遙感影像元數據存儲。
本文設計了用于建立多星源遙感影像關鍵屬性(時相、產品名稱、分辨率等)到遙感影像元數據表的映射表,入庫時通過該模板表將xml 中元數據屬性映射入庫。同時,設計了用于存儲各種星源的元數據,入庫時根據元數據關鍵屬性模板表,將解析的xml 文檔元數據主要屬性映射成本表中關鍵屬性,xml 文檔元數據剩余屬性按其(tag,value)也存入該表的影像元數據表。
在元數據入庫及顯示方面,根據遙感影像檢索以及元數據查詢顯示需求,采用設計入庫模板、顯示配置模板的方式支持任意類型的多源遙感影像入庫及查詢顯示。在元數據索引方面,采取建立地理空間索引+多個關鍵屬性的復合索引鍵,如地理范圍、時相、觀測時間、云量、分辨率、傳感器類型等來實現遙感影像快速檢索。
遙感影像分辨率高、文件大,傳統的文件系統存儲方式管理不便、安全性低,且單機存儲不適合在高并發訪問下使用。
結合遙感影像數據的特點,一般會選擇HDFS 作為分布式文件管理的數據庫,其能夠支持數百個儲存節點,另外,可以使用添加節點的方式來擴充儲存,而且可以高吞吐訪問應用程序數據,適合那些有海量數據集的應用。利用分布式文件系統HDFS 將遙感影像大文件切成幾十或上百兆大小的數據塊,每塊分散在分布式集群各數據點并以復制集的方式存儲,提高了數據存取的并行性以及數據安全性。另外,分布式計算框架“將計算移動到數據”的特點,也充分利用了分布式文件系統分散存儲的優勢。
遙感影像在HDFS 上的存儲采取多副本方式,其中每一個數據塊中有多個副本,并且儲存于不同的服務器之上,當前,工業界會使用三副本的方式,通過這樣的形式,能夠有效地保證數據的使用不會丟失,能夠恢復相應的數據塊,并由此保證提供數據的高效性,同時,讀數據時可以提高讀的效率。
MongoDB 可以存儲結構非常復雜的數據類型,尤其是非結構化數據,其充分利用內存的方式得到了比關系型數據庫Mysql、Oracle 大數倍的查詢吞吐率,在項目中研究了在MongoDB 數據庫上進行“小文件”式的影像瓦片存儲。切片索引鍵設計和切片數據,設計MongoDB 切片存儲文檔結構。MongoDB 插入文檔時自動生成的主鍵,TID 為切片索引鍵,數據類型為字符串,IMG 是切片數據,為二進制數組Binary 形式。
通過利用金字塔模型,根據不同分辨率進行影像的調整,這對于數據庫的儲存和運行效率有較高的要求,然而,常規的串行計算方法僅僅適用于內存較小,規模較小的遙感數據。當前所利用Map Reduce 的分布式計算框架方式能大大提高金字塔構建效率的方法,但是在涉及海量、多元以及高分遙感影像時,所耗費時間仍然很長。而分布式計算框架Spark 由于將計算中間結果存儲于內存,大量減少了中間結果存取的時間,在分布式計算領域得到了廣泛應用。在研究Spark 計算框架轉換、行動算子基礎上,將瓦片任務分解成并行執行的轉換算子和行動算子算法,實現影像瓦片的并行構建。在影像瓦片輸出方面,由于影像瓦片數據具有單個瓦片數據量小、瓦片數量巨大的特點,通過研究Spark 分區特點,設計將每個分區多個瓦片合并為一個批次輸出至數據庫來提高并行性。
在前述關鍵技術研究基礎上,將SSM 框架與Spark分布式計算框架進行集成,梳理遙感影像地圖服務應用方式,構建海量遙感影像從存儲、瓦片并行生成、地圖服務即時發布、地圖服務即時共享使用的影像即時切片服務發布平臺,為各個項目提供影像數據服務。影像即時共享發布流程如圖1 所示。

圖1 影像即時切片服務發布流程圖
影像即時切片服務發布平臺已成功應用于河湖長制、河湖岸線監管、水土保持監管等依賴大量遙感影像數據的項目中,為項目中遙感影像的管理、查找及快速查看提供了技術及平臺支撐,進一步提高了遙感數據的使用效率。利用平臺可進行多源海量的遙感影像的并行切片與生成任務在線提交,同時,可以快速查看原始遙感影像數據及元數據信息,方便用戶篩選數據質量最優的遙感影像用于遙感解譯及后期的數據應用業務。
本文利用分布式文件系統、分布式數據庫、分布式計算等技術,對多源遙感影像數據進行高效存儲,完成了遙感影像快速構建金字塔、瓦片的并行計算與生成;設計了影像元數據、影像瓦片的索引算法,實現影像高效檢索、瓦片快速讀取,構建了影像切片即時發布服務平臺,為更有序、更高效管理遙感數據,快速提供遙感地圖服務及可視化顯示,實現“數據到服務”提供了一體化技術方案。