李峰 宋宴 魏廣澤 王永安
摘要:隨著我國對地觀測技術的發展,衛星遙感數據越來越多,傳統空間關系數據庫在時間范圍、空間范圍的快速查詢及可擴展方面存在一定瓶頸。通過分析ElasticSearch搜索引擎框架,提出了一種基于改良GeoHash編碼的時空索引方法,設計并實現了基于ElasticSearch的海量遙感數據檢索技術,可以精確高效建立一維行鍵索引篩選遙感數據,提高查詢處理效率。實驗結果表明,該技術適合于組織管理與查詢海量的遙感數據,查詢性能優于傳統關系數據庫。
關鍵詞:ElasticSearch;遙感數據;GeoHash;數據檢索
中圖分類號:TP311.5文獻標志碼:A文章編號:1008-1739(2021)05-57-5

0引言
隨著我國對地觀測技術的發展,特別是高分辨率對地觀測系統重大專項的推進,基本具備了高空間分辨率、高時間分辨率及高光譜分辨率的天基對地觀測能力。隨著遙感影像數據越積越多,不同領域的應用需求對遙感影像數據的存儲及高效檢索提出了越來越高的要求。遙感元數據作為描述遙感影像數據的重要數據,具有結構復雜、信息量大、產生頻率高等特點。傳統的空間關系型數據(如Oracle、PostgreSQL等)主要以內置的B+樹或R樹等簡單成熟的索引結構來輔助查詢處理,面對存儲海量的遙感元素數據信息存在讀寫性能不理想、可擴展性差等缺點。本文提出了一種基于改良GeoHash編碼的時空索引方法,設計了基于ElasticSearch的海量遙感數據檢索技術,實現了遙感數據空間、時間、衛星和載荷等多樣化的檢索,支撐海量遙感影像數據的高效檢索。
1基于ElasticSearch的海量遙感數據檢索技術
由于遙感影像文件很大,不適合直接對遙感影像數據本身進行檢索,常用的方式是從遙感元數據提取特征信息、范圍信息及標識信息等描述內容,存儲到空間關系型數據中,支撐行業應用中的數據查詢檢索應用。隨著遙感元數據量的增加,基于衛星載荷、時間范圍和空間范圍等信息的快速查詢是亟需解決的問題。
為了提高海量遙感數據的查詢檢索訪問效率,本文設計了一種基于改良GeoHash編碼的時空索引方法,將時間、空間等多維信息映射到一維時空索引編碼,在分析ElasticSearch搜索引擎框架的基礎上,將時空索引編碼作為索引字段,設計和實現一種基于ElasticSearch的海量遙感數據檢索技術。
1.1擴展GeoHash的時空索引技術
GeoHash是一種經緯度地址編碼方法,把二維的空間經緯度數據進行轉換,編碼成一個可以比較和排序的字符串,用一個字符串表示地理要素的空間坐標。GeoHash的主要原理是根據地物的經緯度坐標利用二分法對空間區域劃分規則格網無限逼近地物所在區間。以天安門廣場坐標(北緯:39.928167,東經:116.390705)為例,GeoHash的編碼過程如下:
①將經緯度轉換成二進制:緯度范圍(-90,90),其中間值為0,將其劃分為區間0(-90,0)和區間1(0,90)。對于緯度39.928167,在區間(0,90)中,因此二進制首位取值為1;(0,90)區間的中間值為45°,緯度39.928167小于45°,因此第二位取值0,依次計算下去,如表1所示,即可得到緯度的二進制序列前20位為:10111000110001111001,同理可以得到經度116.390 705的二進制序列前20位為:11010010110001000100。序列的長度越長,表示經緯度范圍精度越高。

②二進制序列交叉組合:按照偶數位放經度,奇數位放緯度(從0開始,0為偶數位)的順序對經緯度的二進制序列進行交叉組合得出合并后的二進制序列。仍以(39.928 167,116.390 705)為例,合并后的序列前20位為11100111010010001111。
③編碼轉換:標準的GeoHash值采用Base32編碼,具體過程是將經緯度交叉組合后的二進制序列每5個一組進行切分(不足5個用0補充),將其轉換為十進制,參考標準Base32編碼表用0~9,b~z(去掉a,i,l,o)這32個字母進行編碼。如11100111010010001111轉換為十進制成2829415,對應的 Base32編碼為wx4g。Base32編碼每一字符代表5 bit,字符位數與精度之間的關系如表2所示。

可以看出,隨著GeoHash位數減少,誤差增加在4~8倍交替,難以有效控制區域精度,若將二進制GeoHash碼直接索引保持精度又存在索引過長影響效率的問題。因此,設計了使用long型值的GeoHash編碼轉換方法,在保證細粒度和精度的同時,降低GeoHash有效值的位數,從而減少計算次數,進一步提高編碼效率。具體步驟為:
①將GeoHash的二進制轉換為64位long型值,作為GeoHash值;
②GeoHash值的高位為有效位,低位補0,并記錄下long值的有效位數量;
③根據具體需求,可以截取前2(0< <32)bit位作為GeoHash的long值有效位,將區域精度的增長控制在2倍左右。
采用該方法改良后的GeoHash字符位數對應精度如表3所示。

改良后的GeoHash編碼方法能精確高效地將二維空間坐標降維成一維編碼,滿足一維行鍵索引的使用需要。在此基礎上,結合行鍵索引的查詢規則,針對遙感數據的時空特點設計了將時間和GeoHash編碼特殊組合的混合時空編碼行鍵結構及時空索引構建方法。索引結構如圖1所示。

使用該索引進行遙感數據查詢時,首先會根據行鍵的前綴即“年月日”將符合日期的數據集檢索出來,然后按照GeoHash編碼表示的經緯度范圍進行空間檢索,最后查詢“時分秒”得到查詢結果。該方法可以通過時間的年月日部分和GeoHash相同前綴代表的大致地理范圍過濾掉大部分不符合查詢條件的數據,再對剩余數據使用值過濾器進行查詢,整個過程幾乎不需要使用行鍵過濾器,提高了數據的查詢效率。
1.2 ElasticSearch遙感數據檢索設計
ElasticSearch是一款基于Lucene庫的分布式、RESTful的開源搜索引擎,由于其功能強大,使用便捷,受到維基百科、衛報、Stack Overflow、GitHub等企業和組織的歡迎,諸如搜索推薦、數據分析、日志采集的很多功能都是基于ElasticSearch實現的。基于ElasticSearch的分布式海量遙感數據檢索設計技術通過統一規范化的元數據結構建立元數據與索引文件的映射,基于擴展GeoHash的混合時空編碼方法建立時空索引,并搭建分布式ElasticSearch集群提高可靠性,實現海量遙感影像數據的高效檢索。
(1)元數據設計
元數據是用來描述數據的數據。遙感元數據作為描述遙感數據本身特性的輔助數據,可以服務于數據的存儲和檢索,提高查詢效率。針對海量遙感數據檢索的實際需要,抽取影像元數據特征進行擴展,設計了一套符合實際查詢需求的遙感影像元數據結構,如表4所示。

為了將遙感影像與元數據一一對應,除了以上基本數據結構外,還新增了3類元數據,如表5所示。

(2)索引創建
ElasticSearch是基于Lucene的全文檢索系統,其底層的索引技術實現與Lucene一致,可以將索引創建的流程劃分為4步,創建流程如圖2所示。索引創建過程包括獲取影像元數據、生成混合時空編碼索引、創建Document對象、IndexWriter建立索引,其中混合時空編碼索引是根據擴展GeoHash的時空索引技術生成的。

(3)集群部署
ElasticSearch支持分布式部署,通過集群部署可以保證搜索引擎的高可用性。多臺主機構成了一個集群,每臺主機稱作一個節點(Node),對于處在同一網段下擁有相同集群名稱的多個節點,每當一個節點啟動時,ElasticSearch會自動調用節點發現機制尋找集群中的其他節點建立連接,組成分布式集群。本文部署的ElasticSearch集群包含3個節點:主節點、數據節點和客戶端節點。其中主節點的主要職責是元數據的處理,如創建或刪除索引,跟蹤哪些節點是集群的一部分,并決定哪些分片分配給相關的節點等;數據節點是保存數據分片的節點,主要負責數據的增刪改查操作,聚合操作,分片的CRUD等;客戶端節點也稱作負載均衡節點,該節點表現為智能負載平衡器,可以協調主節點和數據節點,起到路由請求的作用。
2實驗驗證
為驗證基于ElasticSearch的海量遙感數據檢索技術的查詢效率,使用來自不同衛星傳感器的750萬條ZY-3、GF-1、GF-2等衛星遙感影像元數據作為實驗數據,分別使用ElasticSearch和遙感領域常用的PostgreSQL、MySQL數據庫3種方式存儲,實驗環境為Windows7操作系統,2.20 GHz Intel E5至強CPU,64 GB內存。
本文在選取實驗數據后,提取影像元數據并選擇了空間范圍和時間跨度2個可調參數,以此為變量設計了多組實驗,進行不同條件下的檢索效率實驗,并對實驗結果進行對比分析,結果如下。
(1)空間范圍查詢
在空間范圍上,選擇了雄安新區、京津冀、中國和全球4個不同維度的區域,檢索該區域包含的全部遙感數據,并多次實驗記錄平均耗時,將查詢效率可視化,如圖3所示。

可以看出,隨著地理范圍的擴大,三者查詢效率均有所降低,但得益于擴展GeoHash的時空索引技術,ElasticSearch的基礎查詢效率更高,且隨地理范圍擴大,查詢時間的增長較為平穩。
(2)時間范圍查詢
時間范圍上,以實驗數據的最早采集時間2007年為起點,分別測試三年、五年、十年和到目前為止范圍內遙感數據的檢索所需時間,并多次實驗記錄平均耗時,將查詢效率可視化,如圖4所示。

可以看出,PostgreSQL在較小時間跨度時查詢效率最低,MySQL隨著時間跨度的擴大查詢效率顯著降低,只有ElasticSearch保持了較高基礎查詢效率的同時,查詢時間的增長相對平穩。
綜合以上2組實驗結果可知,相較于常用的PostgreSQL和MySQL數據庫,ELasticSearch對于不同空間和時間維度上的遙感數據查詢性能更優。此外,空間和時間范圍的擴大帶來的數據量級的提升對ElasticSearch影響不大,這一特點非常適合應用于擁有海量數據的遙感領域。總之,對于近千萬級的遙感影像元數據,在檢索速度方面,基于ELasticSearch的檢索效率明顯高于基于PostgreSQL和MySQL數據庫的檢索效率,可以滿足海量遙感數據的實時時空查詢需要。
3結束語
本文提出了基于ElasticSearch的海量遙感數據檢索技術,設計了一種基于改良GeoHash編碼的時空索引方法,完成了海量遙感數據元數據的數據接入、數據索引和數據檢索,開發實現了基于ElasticSearch的海量遙感數據檢索系統,對上述技術方法進行了實驗驗證。實驗結果表明,技術途徑合理可行,其查詢性能優于傳統關系數據庫,為實現海量遙感數據的快速檢索提供了解決方案。
參考文獻
[1]李德仁,沈欣,龔健雅,等.論我國空間信息網絡的構建[J].武漢大學學報(信息科學版),2015,40(6):711-715.
[2]謝榕,羅知微,王雨晨,等.遙感衛星特定領域大規模知識圖譜構建關鍵技術[J].無線電工程,2017,47(4):1-6.
[3]權治,宋晶晶.基于NoSQL的數據庫技術分析[J].無線電工程,2013,43(9):4-6.
[4] HUANG K, LI G, WANG J. Rapid Retrieval Strategy for Massive Remote Sensing Metadata Based on GeoHash Coding[J]. Remote Sensing Letters,2019,10(2):111-119.
[5]向隆剛,高萌,王德浩,等.Geohash-Trees:一種用于組織大規模軌跡的自適應索引[J].武漢大學學報(信息科學版), 2019,44(3):436-442.
[6] ZHOU Chang,LU Huimei,XIANG Yong,et al.Geohashtile: Vector Geographic Data Display Method Based on Geohash[J].ISPRS International Journal of Geo-Information,2020,9(7): 418.
[7]李峰,尤淑撐,魏海,等.遙感影像區域覆蓋最優數據集的篩選模型[J].無線電工程,2017,47(10):45-48.
[8]陳啟凡.基于NoSQL的公共安全監測數據分布式存儲技術研究[D].成都:電子科技大學,2020.
[9]姜康,馮鈞,唐志賢,等.基于ElasticSearch的元數據搜索與共享平臺[J].計算機與現代化,2015(2):117-121.
[10] WANG Ruoyu,SUN Daniel,LI Guoqiang,et al.Pipeline Provenance for Cloud Based Big Data Analytics[J]. Software:Practice and Experience,2020,50(5):658-674.
[11]關雪峰,曾宇媚.時空大數據背景下并行數據處理分析挖掘的進展及趨勢[J].地理科學進展,2018,37(10):1314-1327.
[12]張學亮,陳金勇,陳勇.基于Hadoop云計算平臺的海量文本處理研究[J].無線電通信技術,2014,40(1):54-57.
[13] DHULAVVAGOL PM,BHAJANTRI VH,TOTAD SG. Performance Analysis of Distributed Processing System Using Shard Selection Techniques on Elasticsearch[J]. Procedia Comput Sci,2020,167:1626-1635.
[14]王章龍.Elasticsearch索引分片策略研究[D].重慶:重慶郵電大學,2019.