摘 "要:随着遥感影像质量提升和更新频率的加快,传统方式切片计算能力受限,为满足影像快速切片的需求,该文借鉴并行计算的思路,设计实现一套瓦片并行切片和基于瓦片合并的影像快速切片算法。从实验结果来看切片效率得到明显提升,有效解决单机切片效率低下的问题。
关键词:遥感;切片;并行切片;瓦片合并;性能测试
中图分类号:P208 " " "文献标志码:A " " " " "文章编号:2095-2945(2024)20-0050-04
Abstract: With the improvement of remote sensing image quality and the acceleration of update frequency, the computing ability of traditional slicing is limited. In order to meet the needs of fast image slicing, this paper draws lessons from the idea of parallel computing. A set of tile parallel slicing and image fast slicing algorithm based on tile merging are designed and implemented. Based on the experimental results, the slicing efficiency is improved obviously, which effectively solves the problem of low efficiency of stand-alone slicing.
Keywords: remote sensing; slicing; parallel slicing; tile merging; performance testing
伴随着卫星遥感技术的发展,遥感影像分辨率、采集频率越来越高,已成为地理空间应用中最重要的数据来源。然而由于数据量庞大,在影像分发、快速浏览、在线应用过程中存在困难,因此WebGIS技术应运而生,WebGIS应用得益于影像数据瓦片化技术的发展[1-2]。影像数据瓦片化是根据影像分辨率、范围大小,按照一定的规则,将一幅或多幅遥感影像切分成众多规则排列的正方形图片整个过程,瓦片化之后的影像,在网络应用中只加载特定层级、特定区域范围内数据,在满足加载速度和效果的前提下,提供给用户最优的使用体验。
1 "瓦片金字塔结构
影像金字塔模型是一种多分辨率数据模型,该数据模型具有统一的空间参照坐标系统,根据需要构建不同分辨率的影像进行存储,形成分辨率由高到低、影像数据量由大到小的金字塔结构。影像金字塔层级越高,该层级影像分辨率越高,影像越清晰,影像数据越大;层级越低,影像分辨率越低,影像越模糊,影像数据越小。
瓦片金字塔是对影像金字塔每一层级影像分别进行瓦片切片所形成的金字塔[3]。瓦片金字塔构建有多种切片规则,但有一个共同点:金字塔每一层级瓦片数是上一层级的4倍,比例尺是上一层级的2倍,瓦片坐标原点分别位于影像左上角或左下角[4]。每层影像切片过程相同,瓦片从坐标原点开始进行切割,按照从左到右,从上到下(或从下到上)的顺序,瓦片有固定的命名规则,根据瓦片所在的层级、行号、列号进行瓦片索引,瓦片金字塔结构示意图如图1所示。
影像投影坐标相对地理坐标而言便于换算和处理,因此应用中通常将遥感影像进行地理坐标投影,将球面的地理坐标投影到平面坐标。目前应用比较流行的是Web墨卡托投影,是基于墨卡托的一种球面投影,最早由GoogleEarth开始使用,也是应用最广泛的一种投影。该投影将基于椭球体的墨卡托投影简化为“正球体”,并把地理坐标系投影到正方形,为地图切片的四叉树分割和计算提供极大的便利。
瓦片行列号系统是地图瓦片与实际地理范围之间的一种映射关系,由瓦片起始点、瓦片行列轴方向、瓦片分辨率和地图分辨率确定。瓦片行列号模型如图2所示,影像左上角为坐标原点,横轴为X方向,纵轴为Y方向,基于瓦片所处的金字塔层级和横纵坐标位置确定瓦片号,z为瓦片层级,i为瓦片坐标系横轴坐标位置,j为瓦片坐标系纵轴坐标位置,瓦片命名规则为(z,i,j)。
2 "影像并行切片设计
影像瓦片生产流程一般先生成影像金字塔,然后依次读取影像金字塔每层数据,对该层数据进行切片。该流程有一个缺点,当影像数据量很大时,构建金字塔耗时比较多。
本文借鉴并行计算的思路提出影像并行切片算法,该算法主要用于最高层级瓦片生成,无须构建金字塔,直接根据原始影像的分辨率计算与其分辨率最接近的瓦片层级,而后将原始影像瓦片化到该层级,最后通过该层瓦片依次合成低层级瓦片。这种方法只需对原始影像执行一次切片操作,而后就可以合成整个瓦片金字塔,在实时性要求不高的情况下,可以极大提高瓦片缓存的生成效率。
影像并行切片数据处理流程如下。
2.1 "瓦片并行任务划分
切片任务划分过程以图3为例进行说明,图示表示影像被分成4行5列,每个瓦片代表一个瓦片任务,同一时刻只有8个进程并行处理。根据瓦片坐标系下的瓦片分布,按照从左到右,从上到下的顺序依次分配给8个处理进程,当一个处理循环结束后,继续下一周期重复操作,直到所有瓦片切片结束。进程号和分配到的瓦片行列号对应关系如下式
tx=tminX+(pos%twidth),
式中: " " " " " " " " " " " " " " " " " " n为
进程总数,i为当前进程进程号,tcount=twidth×theight,其中,twidth=tmaxX-tminX,theight=tmaxY-tminY,[tmaxX,tmaxY]对应瓦片最大行列号坐标,[tminX,tminY]对应瓦片最小行列号坐标;符号 "表示向下取整;%表示取余。
当tcount%n≠0时,进程号ilt;tcount%n的部分进程还需处理瓦片行列号[tx2,ty2]满足以下条件的瓦片
tx2=tminX+(pos2%twidth),
,
式中:pos2=tcount-tcount%n+i;%为取余; "为向下取整。
首先对影像坐标进行投影变换,根据变换后地理坐标范围,计算影像坐标范围内所包含的瓦片行列号取值范围。先将影像分成4行5列共20块瓦片,即tcount=20。假设解算出来的瓦片列号tx范围为0~4,ty范围为0~3,进程总数n=8,则 " " " " " " " ,因无法整除,表示所有进程在执行完2轮分配后,进程号ilt;tcount%n的部分进程即进程0、进程1、进程2、进程3要处理剩下的 " " " " " " " " " " " " " " " "个瓦片,8个进程总共要执行3轮,才能把所有瓦片任务分配完。以进程0为例,循环3轮,每轮中分配到一个瓦片,在图中按照瓦片行列号从上到下从左到右的顺序分别对应行列号坐标为(0,3)、(3,2)、(1,0)的瓦片,将这些瓦片按照顺序依次加入该进程的任务池中,瓦片在任务池中的顺序即序列号j,即(0,3)的序列号为0,(3,2)的序列号为1,(1,0)的序列号为2。
2.2 "瓦片并行任务执行
通过公式计算,每个处理任务确定了所需处理的瓦片号,然后每个进程从任务池中依次取出瓦片任务,图4为影像切片过程示意图。
假设第i个进程任务用job(i)表示,job(i)任务处理的当前瓦片号为txi,tyi。任务执行前首先检查名为level的文件夹是否存在,不存在则创建level层级文件夹,然后检查名为txi的文件夹,如果不存在则在level目录下创建名为txi的文件夹,最后由瓦片行列号反算计算出瓦片的地理范围,从原始影像读取该范围数据,然后重采样将数据写入瓦片[5]。
3 "基于瓦片合并的低层级瓦片生成设计
低层级瓦片生成的基本思路是由上一层级相邻的4张瓦片合并成1张瓦片,并降采样生成。首先由上一节并行切片方案生成最高层级瓦片,然后由最高层级瓦片合并生成次高层级瓦片,以此类推,逐级生成下一层级瓦片。
具体步骤如下:①根据影像分辨率计算影像能切出的最高切片层级,或者用户指定最高切片层级,通过并行切片方案快速切出最高层级瓦片。②将切出的瓦片保存到本地磁盘,瓦片存储路径为tile/z/x/y.png,z为瓦片层级,x、y为瓦片行列号。③按照瓦片合并规则,将上一层级相邻的4张瓦片合并成一张瓦片,以此类推,直到合并生成最低层级的瓦片。
4 "性能测试
采用本文设计的切片方案,搭建影像切片系统,并对切片性能进行测试。
实验用到的数据选取多种载荷遥感影像,传感器载荷来自于GF2、GF1B、GF1D、ZY1E和ZY302等。为了避免不同的影像切片实现对实验结果的影响,本次实验采用自主研发的同一套切片程序,通过设置程序中的切片进程参数,来实现单线程切片和多线程切片。
4.1 "测试并行切片效率
在单机环境下,通过本文算法提出的任务划分、任务执行算法,将单机串行单任务切片调整为单机多线程并行多任务切片,提升单机环境下的切片执行效率。
切片环境:32CPU,64 G内存,实验中切片等级为zoom=10~16级,PNG瓦片,多线程任务数设置为16。
实验数据和实验结果见表1。
从表1统计结果可以看出,多进程切片效率优于单进程切片,在单机环境下切片效率得到明显提高,随着单景影像数据量增加,多进程切片充分利用计算机有效资源,影像切片的加速优势更加明显。
4.2 "测试瓦片合并生成低层级瓦片效率
通过本文算法提出的合并瓦片策略,测试瓦片合并生成低层级瓦片的生产效率,实验中切片等级为zoom=10~16级,16级瓦片从影像直接切片,10~15级瓦片均由上一级瓦片合并得到,实验结果见表2。
从表2中统计结果可以看出,低层级瓦片合成算法可以明显提高低层级瓦片的生产效率,相比直接切片技术,生产的瓦片数据量越大,瓦片生成效率提升越大。
5 "结束语
本文提出的瓦片并行切片算法和低层级瓦片合并算法相较传统切片算法有明显的效率提升,在计算资源有限的前提下,使用多线程技术、瓦片合并算法加快瓦片生产效率,为瓦片快速生产提供技术支撑。
参考文献:
[1] 罗智勇,黎小东.基于数据库存储方案的高性能瓦片地图服务研究[J].地理与地理信息科学,2015,29(3):48-51.
[2] 杨轶.PC集群环境下地图切片的并行计算方法[J].测绘科学,2014,39(3):120-123.
[3] 殷福忠,孙立民.基于瓦片金字塔技术的地图发布平台开发研究[J].测绘与空间地理信息,2010,33(5):16-17,20.
[4] 龙滢.遥感影像瓦片金字塔模型[C]//第四届长三角论坛——测绘分论坛,2007:153-156.
[5] 木林.基于GDAL的地图切片技术的设计与实现[J].智能城市,2021,7(9):49-50.