当前位置:首页 期刊杂志

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

时间:2024-05-20

王晓辉

摘要:本文以在Hadoop分布式平台下海量遥感地图数据瓦片化处理为研究对象,通过架设Hadoop平台对遥感图像数据进行分布式地图瓦片生产,统计不同生产方法下的地图瓦片生产效率。本研究的主要工作内容分为Hadoop平台构建、Hadoop平台下的遥感地图数据预处理模块、瓦片生产系统模块等。该分布式遥感地图瓦片生产系统后台操作系统采用的是Linux下虚拟机架设Hadoop分布式平台。系统经过测试,在地图瓦片生产过程中实用性强、效率高,可以实现对海量遥感地图瓦片快速分布式处理。

关键词:遥感地图瓦片;Hadoop;分布式

引言

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

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

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

1.Hadoop云平台技术

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

2.GeoServer地图瓦片切割技术

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

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

3.GDAL图像处理技术

GDAL(Geospatial Data Abstraction Library)是一个在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\thadoopD1001

192.168.1.106\thadoopD1002

(3)SSH访问设置

Linux ssh key 分为两个:/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.地图瓦片生成系统模块设计

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

(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;

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

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

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

三、结语

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

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

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

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

3.系统测试与性能分析

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

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

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

参考文献:

[1] 杨森林,万国宾,高静怀.基于分块压缩感知的遥感图像融合[J].计算机应用研究,2015(1):316-320.

[2] 喻凯,熊祥瑞,高涛.基于Hadoop的地图瓦片云存储系统的设计与实现[J].测绘地理信息,2017(3):74-77.

[3] 任晓霞,喻孟良,张鸣之,等.基于Hadoop分布式系统的地质环境大数据框架探讨[J].中国地质灾害与防治学报,2018(1):130-134,142.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!