Hadoop云平台下的地图瓦片生产系统研究

2018-02-26 01:44王晓辉
发明与创新 2018年33期
关键词:瓦片分块集群

王晓辉

广东工贸职业技术学院 广东 广州510000

引言

随着大数据技术和遥感卫星技术的快速发展,遥感地图瓦片服务日益增多,为满足不同用户在使用地图瓦片服务的不同需求,瓦片生成系统成为各地图瓦片服务商的关键核心技术。

通过将海量的遥感数据分布到Hadoop云平台上进行处理可以快速高效地生成和管理生成的地图瓦片数据。本文是在Hadoop云平台的地图瓦片生成系统开发过程基础上,实现了在云平台下快速生成地图瓦片系统。

一、地图瓦片云平台支撑技术概述

1.Hadoop云平台技术

Hadoop是基于云计算技术概念发展起来的,是由Apache基金会开发发布的开源分布式框架。其具有的免费、高效等特点可以满足低成本云计算平台架设。Hadoop项目的核心技术是HDFS分布式文件系统与MapReduce框架,地图瓦片系统通过HDFS系统来存储海量遥感图像卫星数据,通过MapReduce框架来实现分布式地图瓦片处理工作。

2.GeoServer地图瓦片切割技术

GeoServer是开源地理信息系统下的Web服务器规范,是使用Java语言实现的开源项目。该项目核心技术包括金字塔模型和地图瓦片切割技术。通过对GeoServer的源码分析,GeoServer采用类似Google地图瓦片的切割方法。通过比例尺、行号、列号,构建切割后的瓦片命名规则。瓦片切割命名规则如图1所示。

图1 瓦片命名规则

依据以上命名规则,系统通过更改GeoServer源码将高分一号卫星影像数据切割生成瓦片数据。

3.GDAL图像处理技术

GDAL(GeospatialDataAbstractionLibrary)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。GDAL具有跨平台、开源、简洁、高效的特点,能读取、写入、转换、处理大多数栅格数据文件格式。本系统通过将GDAL编译成Linux下可被Java调用的so文件,方便在Hadoop云平台环境下使用。比如:TIFF转PNG算法实现等。

4.MongoDB数据库技术

MongoDB是一个分布式文件存储的数据库。它支持的数据结构非常松散,是类似json的bson格式,可以较好地解决例如地图瓦片这类海量小图片存储存储和海量计算方面的应用需求。由瓦片生成系统生成地图瓦片后由采用MongoDB数据库来存储生成的地图瓦片数据。

二、Hadoop平台下的地图瓦片生产系统简介

1.Hadoop集群搭建

(1)集群hostname配置

修改/etc/hostname每个节点单独配置,如主节点修改为hadoopD1001。

(2)集群hosts配置

根据集群节点主机名和IP修改/etc/hosts文件成如下格式,整个集群统一配置。

192.168.1.105’ ’hadoopD1001

192.168.1.106’ ’hadoopD1002

(3)SSH访问设置

Linuxsshkey分为两个:/home/ubuntu/.ssh/id_rsa和/home/ubuntu/.ssh/id_rsa.pub,其内容是155个字符为一行的字符串。

使用/home/ubuntu/.ssh/id_rsa可以访问/home/ubuntu/.ssh/id_rsa.pub,因此可以将集群中所有的公钥放到一个统一的authorized_keys中并复制到每个节点/home/ubuntu/.ssh/authorized_keys中。生成秘钥:切换到ubuntu用户下使用ssh-keygen命令,回车三下,如果已经有key覆盖,将整个集群中所有的id_rsa.pub放入authorized_keys,并复制到整个集群的/home/ubuntu/.ssh中。

(4)修改/etc/profile配置,配置jdk,环境变量

(5)Hdfs搭建设置

etc/hadoop/core-site.xml

etc/hadoop/hdfs-site.xml

Hadoop集群搭建成功如图2所示。

图2 Hadoop集群搭建成功

2.地图瓦片生成系统模块设计

地图瓦片生成系统划分为数据分块处理模块、地图瓦片向上迭代模块、地图瓦片向下迭代模块。由系统控制来生成不同级别地图瓦片。

(1)数据分块处理模块

该模块主要功能是数据分块,系统调用matlab数据分块算法对高分一号卫星数据进行分块。算法需要输入遥感卫星图像数据,输入分块的行与列,根据输入分块的行与列,对数据分辨率的行与列取模,获取余数。将读入数据的分辨率的行与列减去余数并除以分块的行列数,将输入的分块数的行列加1,建立索引矩阵,矩阵中存放分块用索引的行列号,根据索引矩阵的行列号生成不同区域矩阵,根据索引矩阵的行列号保存分块的不同矩阵。具体算法如下:

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;

ifi==imrow

indx_row(i)=(i-1)*step_rows+mod_rows;

end

end

for(i=2∶imcol)

indx_col(i)=(i-1)*step_cols;

ifi==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)地图瓦片向下迭代模块

该模块的上游输入数据是由分块模块提供的遥感卫星图像分块数据,根据卫星图像实际级别与Web地图需要展示的最高级来判定是否进行向下迭代地图瓦片生成。

当向下模块开启后,系统进入Hadoop集群系统的MapReduce模型处理分块数据,首先在Map阶段,分块影像数据从HDFS读取到本地,由于是向下迭代,在此运行图像分块模块,分块结束后,使用GDAL将TIFF格式的卫星影像数据转换为PNG格式,这是因为Web瓦片通用格式为PNG图片格式。然后对PNG格式图像重采样。将重采样后的数据存储到Mongodb数据库中,最后删除本地临时文件。如图3所示。

图3 瓦片生成向下迭代流程图

(3)地图瓦片向上迭代模块

该模块的上游输入数据是原始遥感卫星图像数据,根据卫星图像实际级别与Web地图需要展示的最低级来判定是否进行向上迭代地图瓦片生成。

当向上迭代模块开启后,系统进入Hadoop集群系统的MapReduce模型处理,首先在Map阶段,分块影像数据从HDFS读取到本地,使用GDAL将TIFF格式的卫星影像数据转换为PNG格式,然后对PNG格式图像重采样。将重采样后的数据存储到Mongodb数据库中作为当前级别迭代地图瓦片,最后删除本地临时文件。

以上流程与向下迭代基本相同。向上迭代与向下迭代的区别在于Reduce阶段。在Reduce阶段的输入数据是未重采样的PNG遥感卫星图像数据,使用图像镶嵌功能,按照网格编号将四块PNG图像镶嵌为一块PNG,其中可能会出现PNG图像不足的情况,这时使用透明PNG图像进行补足镶嵌。镶嵌后的PNG图像存放在HDFS上作为下一个向上迭代的输入数据,最后删除本地临时文件。如图4所示。

图4 瓦片生成向上迭代流程图

3.系统测试与性能分析

系统采用的测试数据为90GB遥感卫星图像数据,输入数据为12级地图瓦片数据。系统使用5个子节点的Hadoop集群进行地图瓦片生成处理。下表列出了瓦片分块模块、向下迭代模块(17级—12级)、向上迭代(11级—6级)的瓦片生成效率。系统处理效率如表1所示。

表190 GB数据测试结果

三、结语

Hadoop云平台瓦片生成系统可以有效解决海量遥感卫星图像的地图瓦片切片服务,从而为用户通过Web客户端访问WEBGIS项目提供支持。

本研究的特色是分布式计算环境下的遥感地图瓦片生产研究。在遥感地图瓦片生产中引入分布式计算的思想,用以提高海量地图瓦片生产速度并解决多机协同计算问题,为当前海量地图瓦片生成提供一种有效的解决方案,防止因在遥感地图瓦片生产过程中出现处理计算能力不足而产生颈瓶。此外,该系统瓦片生产效率通过更改算法和MapReduce模型仍然有进一步提高的可能。在今后的研究中,还需要通过进一步改进算法等来提高效率。

猜你喜欢
瓦片分块集群
钢结构工程分块滑移安装施工方法探讨
分块矩阵在线性代数中的应用
一种基于主题时空价值的服务器端瓦片缓存算法
海上小型无人机集群的反制装备需求与应对之策研究
惯性
一种无人机集群发射回收装置的控制系统设计
Python与Spark集群在收费数据分析中的应用
勤快又呆萌的集群机器人
反三角分块矩阵Drazin逆新的表示
基于多分辨率半边的分块LOD模型无缝表达