基于Spark的遥感影像金字塔瓦片构建

2019-09-12 10:41陕唐剑钟宏伟李林辉魏景琦国露方
智能计算机与应用 2019年4期
关键词:遥感影像金字塔

陕唐剑 钟宏伟 李林辉 魏景琦 国露方

摘 要:随着传感器技术发展和大容量存储设备价格的下降,遥感影像数据量飞速增长并达到海量存储的程度,传统的单机集中式存储和检索技术已经不能满足数据高效存储和快速访问的要求。本文在传统的影像金字塔的构建方法上,采用基于内存计算的计算引擎Spark来构建遥感影像金字塔并给出了算法的构建过程,实现了基于Spark的遥感影像金字塔的并行构建。实验表明,相对于传统的遥感影像金字塔构建,性能和计算效率都有较大提高。

关键词:遥感影像;金字塔;Spark

文章编号:2095-2163(2019)04-0226-04 中图分类号:TP751 文献标志码:A

0 引 言

随着信息获取技术和遥感探测手段的发展,遥感影像数据日益多元化;数据量呈指数级增长,形成GB级、TB级数据的大规模集成态势[1-2]。海量的遥感影像数据为资源调查、环境监测提供了丰富的资料,但也需看到,由于数据量不断增大,传统的单机集中式存储和检索技术已经难于满足数据高效存储的要求。越来越多的基于遥感数据的应用不仅需要数据的高效存储和管理,而且还需要将结果快速反馈显示到终端上,这些都是目前遥感影像处理中的基础研究问题[1]。

金字塔模型是实现海量遥感影像可视化的基础[3]。如刘义等人[4]将传统的MapReduce方法加以改进,构建了适合遥感影像金字塔模型的图像存储算法,较传统单机构建金字塔方法表现出较高的时间效率和较好可扩展性;霍树民[5]提出了一种基于MapReduce并行编程模型的影像金字塔并行构建技术,相比单机串行方式,遥感影像建塔速度有明显的提高。上述研究都采用了金字塔模型存储遥感数据,有效提高海量遥感数据的存取效率,但构建金字塔所用的时间仍然较长,而将其应用在实际研发设计中,数据的可视化响应较慢,遥感影像处理和显示的效率也难以达到令人满意的程度。因此,亟需对遥感影像数据的金字塔构建方式做出改进,使其性能得以提升,本次研究中即选用了目前较为流行的大数据处理技术。

同时,有研究表明,Spark是基于内存的计算框架,运用科学设计,使其对于多次迭代的数据处理,比Hadoop快很多倍。Spark的特点是可以把中间数据放在内存,迭代效率高,而遥感影像的金字塔构建过程,就需要多次迭代,并且还要依据本层的金字塔数据生成下一层的金字塔数据,但Spark本身却并不具备对具有空间特点的遥感影像数据的处理能力。

综上分析可知,本文在Spark现有框架基础上,结合Spark和遥感影像金字塔构建过程的特点,研发提出基于Spark遥感影像金字塔并行构建模型,实现金字塔瓦片数据的分布式存储,进而有效缩短了遥感影像数据金字塔的构建时间。对此拟做研究论述如下。

1 遥感影像数据金字塔存储方法

遥感影像金字塔是地图服务的基础。地图服务包含2方面的内容,分别是:格网和编码的选择,遥感数据的组织和管理。研究后可推得阐释解析如下。

1.1 全球剖分网格

地图服务的指定操作区域都是矩形,建立遥感影像金字塔和编码这些矩形的块。假设遥感影像的原始分辨率为r0,像素矩阵大小为w×h,原始遥感影像经过重采样被分成了很多大小相等的图像块,在金字塔结构中,称之为瓦片。瓦片的大小为d×d像素,瓦片矩阵的大小为tr×tc。tr可由公式(1)计算得出:

假设latitude和longitude分别代表某点的经度和纬度,则该点所在的level级的瓦片编码的运算可写作如下数学形式:

1.2 金字塔结构

拼接后的遥感图像的大小超过300 MB,有时甚至超过10 GB或100 GB,金字塔结构是海量遥感影像可视化的基础[6]。金字塔的最低层是分辨率最高的,也就是原始图像,数据量最大;随着层数的增加,其分辨率逐渐降低,数据量也按比例减少。每一层影像金字塔都有其分辨率,当在前端进行图像的放大、缩小、漫游时,后台需计算出执行该操作后所需的影像分辨率及在当前视图范围内会显示的地理坐标范围,再根据这个分辨率去和已经建好的影像金字塔分辨率匹配,选择适合的分辨率的瓦片遥感数据,将其从后台取出来显示给用户。采用金字塔模型存储数据的优点是,当对数据进行显示操作时,不需要读取全部原始数,只需选择合适分辨率的数据进行数据操作,这样可以减少数据的I/O操作和网络间的数据传输。

通常,影像金字塔的构建方法有2种。一种是本身已有的多种分辨率的数据源直接构建相应分辨率的金字塔;另一种是只有原始图像,而没有其它低分辨率的图像,通过已有的遥感数据利用重采样的方式进行逐层构建。本文中采用的是第二种方法。

从原始影像数据中抽取数据构建金字塔时,形成一個多分辨率层次。从金字塔的底层到顶层,分辨率越来越低,但是表示的范围却是一致的。而通过对低一层影像的重采样建立了本层图像,通过构建不同层的图像,最终建立了同一范围、但不同分辨率的一系列图像层。其中,底层分辨率最高,上层逐渐减少,图像金字塔如图1所示。

在金字塔中将原遥感影像数据作为最底层数据,记为0层,采用等分方式来划定分块,每一个数据块称为瓦片。在金字塔中,一个瓦片可由坐标(level,row,col)提供唯一标识。其中,level标识瓦片所在影像金字塔的层数,row标识瓦片所在的行,col标识瓦片所在的列。通过前文设定,可以对瓦片数据进行编码。分层、分块后所得的瓦片编码如图2所示。

对一幅2n×2n的遥感影像进行金字塔内瓦片数据构建的过程是从原始影像数据开始,按照倍率是4进行逐级采样,接着将得到的遥感数据设定为2m×2m后,再进行倍率是4的逐级采样,由此得到的遥感影像的层数记为L,则L的数学公式可表示为:

采用上面的方法进行分层后,可以计算求出瓦片的数量T为:

在此基础上,可以推得计算瓦片数据的存储空间比单独存储原图像所超出的百分比的数学公式如下所示:

分析后可知,通過金字塔的构建后,数据存储所用的空间会比单独存储原数据多出三分之一,在大数据时代,大容量存储设备的价格较为低廉,因此对于应用而言,产生的影响可以忽略。对于瓦片数据的大小,没有固定的划分标准,在理论上可以按任意大小划分,但在技术应用层面上存在一些困难,如网络传输、金字塔索引的构建、I/O的效率。如果瓦片数据尺寸太大,导致浏览遥感影像数据时会有多余的数据加载到内存;如果瓦片数据尺寸太小,瓦片的大小多会根据具体情况和多次实验来求得,从瓦片求取以及容易建立索引的角度出发,通常瓦片遵循如下规则:瓦片数据的大小是一样大小的,瓦片按一定顺序存储。瓦片数据的大小在SDE中为128×128像素。在Oracle的GeoRaster中,瓦片数据的大小为256×256像素[7-8],通过实验,本文中设置瓦片的大小为256×256像素。

2 基于Spark的遥感影像金字塔瓦片数据的并行构建

使用Spark进行遥感影像的构建是基于传统金字塔构建的模型,并在Spark中利用算法将原始图像通过重采样,逐层生成瓦片数据,具体就是由下层数据生成上层数据,运算产生的中间结果存于内存,最终结果存入到HDFS中。每层构建瓦片数据设定成一个独立的任务,通过Spark在集群中实现构建。根据Spark的特点,研究推得构建生成瓦片数据的算法详述如下。

(1)读入遥感影像原数据,生成Level0层的瓦片数据。在研究中,将根据遥感影像的坐标范围和全球格网划分方法,确定影像的范围,再根据范围使用公式(8)即可确定此遥感数据总共分为多少层。原始数据的分辨率不同,遥感数据的分层数也会不同。分辨率高的遥感数据所分的层数要高于分辨率低的遥感数据所分层数。

(2)对每层遥感数据进行瓦片化的处理。通过对低层数据的重采样,采用倍率为2的采样得到瓦片数据,由上层遥感数据的坐标可计算求出每个瓦片数据的坐标,此过程使用Spark实现。传统的大数据处理通常采用MapReduce进行处理,Spark处理相比MapReduce处理的优势就在于瓦片数据的生成是通过rasterRdd计算得到的,在计算过程中得到的中间数据可以被缓存到内存中,且比传统的构建时间要短,这是因为操作在内存中,从内存中就可以直接读取中间数据,而不需要再从磁盘中读取,这样做可以减少从磁盘读取数据的次数,缩短了影像计算处理的时间,提高了瓦片数据的构建速度,提高了效率。

(3)瓦片数据的属性确定。通过Spark计算得到的瓦片数据最终存储到HDFS的各个节点中,每个瓦片数据都有各自的属性,重点包括每个瓦片数据的坐标信息、瓦片数据所存的具体位置、瓦片数据的偏移量。为了做到快速检索,通常对同一层的瓦片数据建立索引,在本研究中则将这些特征存入Hbase中。

(4)瓦片数据可视化。通过前述步骤完成了瓦片数据的构建,但要进行可视化时,可以通过需要显示的影像范围确定需提取的是哪一层数据,再根据不同层的编码值对瓦片来执行分布式计算,通过 master 节点将具体的request分发到有相应资源数据的计算节点上,计算节点通过索引参数较快地定位原数据,进而将需要的数据返回给用户。

由于Spark的特点,在对遥感数据进行瓦片数据的构建过程中,中间生成的影像数据,将会存入内存中,进而生成高层瓦片,中间处理过程中产生的无用数据则无需存入HDFS,减少了I/O操作,提升了构建效率,与传统的基于MapReduce模式的构建方式相比,有较大优势。

3 实验结果及分析

实验环境配置为:Master,选用IBM System x3850 X5(Xeon E7-4807 6核1.87 GHz,16 GB内存,500 GB硬盘)。Slave,选用4台曙光I450-G10(Xeon E5-2407四核2.2 GHz,8 GB内存,HDFS总容量3.34 GB)。通过Xen虚拟化为16个节点。采用Tenda TEG1 024 G 千兆以太网交换机连接。操作系统,选用Red Hat Enterprise Linux 6.2(内核版本2.6.32),Hadoop版本选用2.5。

将金字塔构建算法部署到面向Spark计算框架和面向 Hadoop MapReduce 计算框架下的分布式实验环境中,实验中的数据源和参数保持不变,同时保证计算节点的资源一致,实验的数据量大小为1 GB、10 GB,实验的结果如图3所示。

通过实验结果表明,在数据量不大的情况下,Spark和传统MapReduce的构建金字塔数据所用时间相差不大,但随着数据量的增大,Spark构建金字塔数据的优势较为明显,所用时间较少,因此使用Spark框架进行海量遥感影像数据的金字塔构建在时间上具有更好的效率。

4 结束语

由于传统的单机集中式存储和检索技术已经不能满足数据高效存储和快速访问的要求,本文采用基于内存计算的计算引擎Spark来构建遥感影像金字塔并给出了算法的构建过程,实现了基于Spark的遥感影像金字塔的并行构建。性能和计算效率都有较大提高。

参考文献

[1]李德仁,张良培,夏桂松. 遥感大数据自动分析与数据挖掘[J]. 测绘学报,2014,43(12):1211-1216.

[2] 吕雪峰,程承旗,龚健雅,等. 海量遥感数据存储管理技术综述[J]. 中国科学:技术科学,2011,41(12):1561-1573.

[3] 邓雪清. 栅格型空间数据服务体系结构与算法研究[J]. 测绘学报,2003,32(4):362.

[4] 刘义, 陈荦, 景宁,等. 利用MapReduce进行批量遥感影像瓦片金字塔构建[J]. 武汉大学学报(信息科学版), 2013, 38(3):278-282.

[5] 霍树民. 基于Hadoop的海量影像数据管理关键技术研究[D]. 长沙:国防科学技术大学, 2010.

[6] CHEN Shizhi, TIAN Yingli. Pyramid of spatial relations for scene-level land use classification[J]. IEEE Transactions on Geoscience & Remote Sensing, 2015,53(4):1947-1957.

[7] LV Xuefeng, CHENG Chengqi, GONG Jianya, et al. Review of data storage and management technologies for massive remote sensing data[J]. Science China Technological Sciences, 2011,54(12):3220-3232.

[8] LV Zhenhua, HU Yingjie, ZHONG Haidong, et al. Parallel K-means clustering of remote sensing images based on MapReduce[M]//WANG F L, GONG Z, LUO X, et al. Web information systems and mining. WISM 2010. Lecture Notes in Computer Science. Berlin/Heidelberg:Springer, 2010,6318:162-170.

猜你喜欢
遥感影像金字塔
形形色色金字塔
Great Vacation Places
海底金字塔
金字塔建筑的秘密
金字塔是用金子造的吗
遥感影像资料在海图制图中的应用研究
遥感数字图像处理课程实验综述
高分遥感影像中道路信息提取方法综述