王曉輝
摘要:本文以在Hadoop分布式平臺下海量遙感地圖數(shù)據(jù)瓦片化處理為研究對象,通過架設(shè)Hadoop平臺對遙感圖像數(shù)據(jù)進行分布式地圖瓦片生產(chǎn),統(tǒng)計不同生產(chǎn)方法下的地圖瓦片生產(chǎn)效率。本研究的主要工作內(nèi)容分為Hadoop平臺構(gòu)建、Hadoop平臺下的遙感地圖數(shù)據(jù)預(yù)處理模塊、瓦片生產(chǎn)系統(tǒng)模塊等。該分布式遙感地圖瓦片生產(chǎn)系統(tǒng)后臺操作系統(tǒng)采用的是Linux下虛擬機架設(shè)Hadoop分布式平臺。系統(tǒng)經(jīng)過測試,在地圖瓦片生產(chǎn)過程中實用性強、效率高,可以實現(xiàn)對海量遙感地圖瓦片快速分布式處理。
關(guān)鍵詞:遙感地圖瓦片;Hadoop;分布式
引言
隨著大數(shù)據(jù)技術(shù)和遙感衛(wèi)星技術(shù)的快速發(fā)展,遙感地圖瓦片服務(wù)日益增多,為滿足不同用戶在使用地圖瓦片服務(wù)的不同需求,瓦片生成系統(tǒng)成為各地圖瓦片服務(wù)商的關(guān)鍵核心技術(shù)。
通過將海量的遙感數(shù)據(jù)分布到Hadoop云平臺上進行處理可以快速高效地生成和管理生成的地圖瓦片數(shù)據(jù)。本文是在Hadoop云平臺的地圖瓦片生成系統(tǒng)開發(fā)過程基礎(chǔ)上,實現(xiàn)了在云平臺下快速生成地圖瓦片系統(tǒng)。
一、地圖瓦片云平臺支撐技術(shù)概述
1.Hadoop云平臺技術(shù)
Hadoop是基于云計算技術(shù)概念發(fā)展起來的,是由Apache基金會開發(fā)發(fā)布的開源分布式框架。其具有的免費、高效等特點可以滿足低成本云計算平臺架設(shè)。Hadoop項目的核心技術(shù)是HDFS分布式文件系統(tǒng)與MapReduce框架,地圖瓦片系統(tǒng)通過HDFS系統(tǒng)來存儲海量遙感圖像衛(wèi)星數(shù)據(jù),通過MapReduce框架來實現(xiàn)分布式地圖瓦片處理工作。
2.GeoServer地圖瓦片切割技術(shù)
GeoServer是開源地理信息系統(tǒng)下的Web服務(wù)器規(guī)范,是使用Java語言實現(xiàn)的開源項目。該項目核心技術(shù)包括金字塔模型和地圖瓦片切割技術(shù)。通過對GeoServer的源碼分析,GeoServer采用類似Google地圖瓦片的切割方法。通過比例尺、行號、列號,構(gòu)建切割后的瓦片命名規(guī)則。瓦片切割命名規(guī)則如圖1所示。
依據(jù)以上命名規(guī)則,系統(tǒng)通過更改GeoServer源碼將高分一號衛(wèi)星影像數(shù)據(jù)切割生成瓦片數(shù)據(jù)。
3.GDAL圖像處理技術(shù)
GDAL(Geospatial Data Abstraction Library)是一個在X/MIT許可協(xié)議下的開源柵格空間數(shù)據(jù)轉(zhuǎn)換庫。它利用抽象數(shù)據(jù)模型來表達所支持的各種文件格式。GDAL具有跨平臺、開源、簡潔、高效的特點,能讀取、寫入、轉(zhuǎn)換、處理大多數(shù)柵格數(shù)據(jù)文件格式。本系統(tǒng)通過將GDAL編譯成Linux下可被Java調(diào)用的so文件,方便在Hadoop云平臺環(huán)境下使用。比如:TIFF轉(zhuǎn)PNG算法實現(xiàn)等。
4.MongoDB數(shù)據(jù)庫技術(shù)
MongoDB是一個分布式文件存儲的數(shù)據(jù)庫。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,可以較好地解決例如地圖瓦片這類海量小圖片存儲存儲和海量計算方面的應(yīng)用需求。由瓦片生成系統(tǒng)生成地圖瓦片后由采用MongoDB數(shù)據(jù)庫來存儲生成的地圖瓦片數(shù)據(jù)。
二、Hadoop平臺下的地圖瓦片生產(chǎn)系統(tǒng)簡介
1.Hadoop集群搭建
(1)集群hostname配置
修改/etc/hostname 每個節(jié)點單獨配置,如主節(jié)點修改為hadoopD1001。
(2)集群hosts配置
根據(jù)集群節(jié)點主機名和IP 修改/etc/hosts文件成如下格式,整個集群統(tǒng)一配置。
192.168.1.105\thadoopD1001
192.168.1.106\thadoopD1002
(3)SSH訪問設(shè)置
Linux ssh key 分為兩個:/home/ubuntu/.ssh/id_rsa和/home/ubuntu/.ssh/id_rsa.pub,其內(nèi)容是155個字符為一行的字符串。
使用/home/ubuntu/.ssh/id_rsa可以訪問/home/
ubuntu/.ssh/id_rsa.pub,因此可以將集群中所有的公鑰放到一個統(tǒng)一的authorized_keys中并復(fù)制到每個節(jié)點/home/ubuntu/.ssh/authorized_keys中。生成秘鑰:切換到ubuntu用戶下使用ssh-keygen 命令,回車三下,如果已經(jīng)有key覆蓋,將整個集群中所有的id_rsa.pub放入authorized_keys,并復(fù)制到整個集群的/home/ubuntu/.ssh中。
(4)修改/etc/profile 配置,配置jdk,環(huán)境變量
(5)Hdfs搭建設(shè)置
etc/hadoop/core-site.xml
etc/hadoop/hdfs-site.xml
Hadoop集群搭建成功如圖2所示。
2.地圖瓦片生成系統(tǒng)模塊設(shè)計
地圖瓦片生成系統(tǒng)劃分為數(shù)據(jù)分塊處理模塊、地圖瓦片向上迭代模塊、地圖瓦片向下迭代模塊。由系統(tǒng)控制來生成不同級別地圖瓦片。
(1)數(shù)據(jù)分塊處理模塊
該模塊主要功能是數(shù)據(jù)分塊,系統(tǒng)調(diào)用matlab數(shù)據(jù)分塊算法對高分一號衛(wèi)星數(shù)據(jù)進行分塊。算法需要輸入遙感衛(wèi)星圖像數(shù)據(jù),輸入分塊的行與列,根據(jù)輸入分塊的行與列,對數(shù)據(jù)分辨率的行與列取模,獲取余數(shù)。將讀入數(shù)據(jù)的分辨率的行與列減去余數(shù)并除以分塊的行列數(shù),將輸入的分塊數(shù)的行列加1,建立索引矩陣,矩陣中存放分塊用索引的行列號,根據(jù)索引矩陣的行列號生成不同區(qū)域矩陣,根據(jù)索引矩陣的行列號保存分塊的不同矩陣。具體算法如下:
function? [outfile1]= segimg(file,imrow,imcol)
image=file;
rows=size(image,1);
cols=size(image,2);
mod_rows=mod(rows,imrow);
mod_cols=mod(cols,imcol);
step_cols=(cols-mod_cols)/imcol;
step_rows=(rows-mod_rows)/imrow;
imrow=imrow+1;
imcol=imcol+1;
indx_row=zeros(1,imrow);
indx_col=zeros(1,imcol);
for (i=2:imrow)
indx_row(i)=(i-1)*step_rows;
if i==imrow
indx_row(i)=(i-1)*step_rows+mod_rows;
end
end
for (i=2:imcol)
indx_col(i)=(i-1)*step_cols;
if i==imcol
indx_col(i)=(i-1)*step_cols+mod_cols;
end
end
imrow=imrow-1;
imcol=imcol-1;
a=cell(imrow,imcol);
temprow={};
for (i=1:imrow)
for (j=1:imcol)
temprow{i}=image(indx_row(i)+1:indx_row(i+1),:,:);
a{i,j}=temprow{i}(:,indx_col(j)+1:indx_col(j+1),:);
name=strcat('rl',num2str(i),num2str(j),'.mat');
temp=a{i,j};
save(name,'temp');
end
end
outfile1=a;
end
(2)地圖瓦片向下迭代模塊
該模塊的上游輸入數(shù)據(jù)是由分塊模塊提供的遙感衛(wèi)星圖像分塊數(shù)據(jù),根據(jù)衛(wèi)星圖像實際級別與Web地圖需要展示的最高級來判定是否進行向下迭代地圖瓦片生成。
當向下模塊開啟后,系統(tǒng)進入Hadoop集群系統(tǒng)的MapReduce模型處理分塊數(shù)據(jù),首先在Map階段,分塊影像數(shù)據(jù)從HDFS讀取到本地,由于是向下迭代,在此運行圖像分塊模塊,分塊結(jié)束后,使用GDAL將TIFF格式的衛(wèi)星影像數(shù)據(jù)轉(zhuǎn)換為PNG格式,這是因為Web瓦片通用格式為PNG圖片格式。然后對PNG格式圖像重采樣。將重采樣后的數(shù)據(jù)存儲到Mongodb數(shù)據(jù)庫中,最后刪除本地臨時文件。如圖3所示。
三、結(jié)語
(3)地圖瓦片向上迭代模塊
該模塊的上游輸入數(shù)據(jù)是原始遙感衛(wèi)星圖像數(shù)據(jù),根據(jù)衛(wèi)星圖像實際級別與Web地圖需要展示的最低級來判定是否進行向上迭代地圖瓦片生成。
當向上迭代模塊開啟后,系統(tǒng)進入Hadoop集群系統(tǒng)的MapReduce模型處理,首先在Map階段,分塊影像數(shù)據(jù)從HDFS讀取到本地,使用GDAL將TIFF格式的衛(wèi)星影像數(shù)據(jù)轉(zhuǎn)換為PNG格式,然后對PNG格式圖像重采樣。將重采樣后的數(shù)據(jù)存儲到Mongodb數(shù)據(jù)庫中作為當前級別迭代地圖瓦片,最后刪除本地臨時文件。
以上流程與向下迭代基本相同。向上迭代與向下迭代的區(qū)別在于Reduce階段。在Reduce階段的輸入數(shù)據(jù)是未重采樣的PNG遙感衛(wèi)星圖像數(shù)據(jù),使用圖像鑲嵌功能,按照網(wǎng)格編號將四塊PNG圖像鑲嵌為一塊PNG,其中可能會出現(xiàn)PNG圖像不足的情況,這時使用透明PNG圖像進行補足鑲嵌。鑲嵌后的PNG圖像存放在HDFS上作為下一個向上迭代的輸入數(shù)據(jù),最后刪除本地臨時文件。如圖4所示。
3.系統(tǒng)測試與性能分析
系統(tǒng)采用的測試數(shù)據(jù)為90GB遙感衛(wèi)星圖像數(shù)據(jù),輸入數(shù)據(jù)為12級地圖瓦片數(shù)據(jù)。系統(tǒng)使用5個子節(jié)點的Hadoop集群進行地圖瓦片生成處理。下表列出了瓦片分塊模塊、向下迭代模塊(17級—12級)、向上迭代(11級—6級)的瓦片生成效率。系統(tǒng)處理效率如表1所示。
Hadoop云平臺瓦片生成系統(tǒng)可以有效解決海量遙感衛(wèi)星圖像的地圖瓦片切片服務(wù),從而為用戶通過Web客戶端訪問WEBGIS項目提供支持。
本研究的特色是分布式計算環(huán)境下的遙感地圖瓦片生產(chǎn)研究。在遙感地圖瓦片生產(chǎn)中引入分布式計算的思想,用以提高海量地圖瓦片生產(chǎn)速度并解決多機協(xié)同計算問題,為當前海量地圖瓦片生成提供一種有效的解決方案,防止因在遙感地圖瓦片生產(chǎn)過程中出現(xiàn)處理計算能力不足而產(chǎn)生頸瓶。此外,該系統(tǒng)瓦片生產(chǎn)效率通過更改算法和MapReduce模型仍然有進一步提高的可能。在今后的研究中,還需要通過進一步改進算法等來提高效率?!?/p>
參考文獻:
[1] 楊森林,萬國賓,高靜懷.基于分塊壓縮感知的遙感圖像融合[J].計算機應(yīng)用研究,2015(1):316-320.
[2] 喻凱,熊祥瑞,高濤.基于Hadoop的地圖瓦片云存儲系統(tǒng)的設(shè)計與實現(xiàn)[J].測繪地理信息,2017(3):74-77.
[3] 任曉霞,喻孟良,張鳴之,等.基于Hadoop分布式系統(tǒng)的地質(zhì)環(huán)境大數(shù)據(jù)框架探討[J].中國地質(zhì)災(zāi)害與防治學(xué)報,2018(1):130-134,142.