获取规则格网dem的过程和方法_面向大规模DEM数据的并行填挖算法

0317d80e-6813-eb11-8da9-e4434bdf6706.jpeg

点击图片上方蓝色字体“慧天地”即可订阅

0517d80e-6813-eb11-8da9-e4434bdf6706.gif文章转载自微信公众号地理信息世界GeomaticsWorld ,版权归原作者及刊载媒体所有。

0617d80e-6813-eb11-8da9-e4434bdf6706.png

作者信息

吴旭桥,吴 烨,陈 荦,景 宁

(国防科技大学 电子科学学院,湖南 长沙 410073)

【摘要】传统填挖方算法在计算填挖方量时,对大规模DEM数据的处理能力和处理效率较低。针对上述问题,提出一种面向大规模DEM数据的并行填挖算法。首先实现了基于条带划分的并行算法,针对该算法负载不均衡和无效区域较多的问题,提出等面积划分方法。该方法通过对待填挖区域进行扫描并建立二元索引,实现了填挖区域的等面积划分,克服了上述问题。最后,在真实数据集上对上述两种算法进行了对比实验。实验结果表明,本文算法大幅提高了填挖分析效率,同时对海量DEM数据具有较强的处理能力。

【关键词】填挖方;大规模DEM数据;并行计算

【中图分类号】P208 【文献标识码】A 【文章编号】1672-1586(2019)06-0021-05

引文格式:吴旭桥,吴 烨,陈 荦,等. 面向大规模DEM数据的并行填挖算法[J].地理信息世界,2019,26(6):21-25.

正文

0 引 言

近年来,各类自然灾害事件不断增加,如地震、滑坡和山体垮塌等,给国民经济和生命财产造成重大损失。应急测绘为了解灾情和科学决策提供了有力支撑。填挖方分析是应急测绘分析中的重要组成部分,对工程方案和灾害救援计划等实际问题的处理有重要作用,其核心功能为填挖方面积和体积的计算。

随着DEM数据实时获取技术的发展,地形数据精度不断提高,数据量呈指数型增长,用于进行填挖分析的DEM数据可达数十GB以上。对于包含N 个数据点的DEM数据,填挖分析需要将全部数据点对应的高程值相减,填挖算法的复杂度为O (N )。对于一个大小为1 GB的DEM数据,填挖分析时间可达数十秒。且随着数据量的增加,算法耗时增量与数据量的增长呈正比。而在实际条件下,填挖分析范围多为给定任意不规则区域。对于一个包含V个顶点的不规则多边形区域,由于需要判断每个数据点是否在不规则区域内,此时传统填挖分析算法的复杂度为O(NV ),计算效率大幅降低。在大规模DEM数据条件下,传统算法进行不规则区域条件下的填挖分析时间可达数小时以上。而在应急测绘和灾害评估等应用中,用户需要实时获取填挖分析结果,现有算法难以满足实际需求。

并行计算是实现高性能填挖分析的重要方式,通过将传统填挖算法改造为并行填挖算法,可以将填挖分析计算任务分配给多个计算节点,显著提高其处理规模和计算效率,大幅缩减填挖分析时间。在大规模计算机集群条件下,并行填挖算法可将填挖分析效率提升百倍以上,充分利用现有计算机集群的优越性能,基本实现填挖分析结果的实时获取。此外,传统算法需要将全部DEM数据加载到内存中。然而,在大规模DEM数据条件下,个人计算机难以完成上述操作,导致算法失效。而通过采用将数据划分后进行并行计算的方法,可以较好地解决上述问题。

目前,国内外在填挖分析技术和并行数据划分方面分别进行了大量的研究。在填挖方算法研究方面,罗德仁等人总结了几种主流的填挖分析方法,王宝成等人分析了填挖方量的误差来源并提出了一种精度评定方法。汤国安提出,并行计算是数字地形分析发展的必然趋势。在并行数据划分和负载均衡方面,张刚等人列举了几种常见的数据划分策略,宋效东等人提出了一种等面积数据划分方案,该方案具有较好的负载均衡性能。

然而,上述研究并没有将填挖分析与并行优化相结合,难以进行大规模DEM数据的高效填挖分析。同时,已有的并行策略采用按行拆分等平均数据划分方式。此类数据划分方案虽然能够提高数据处理能力和计算效率,但读入了较多不需要进行处理的数据,处理效率有待进一步提升,并且难以保证各个进程间的负载均衡,而负载均衡是影响并行算法性能的关键因素。

针对上述问题,本文研究了一种面向大规模DEM数据的并行填挖分析算法,该算法首先对填挖区域进行等面积划分,同时建立二元索引以确定实际填挖区域,避免了不需要进行分析的无效区域参与计算,实现了计算节点的负载均衡。实验结果表明,本文算法大幅提高了大规模DEM数据的处理能力和填挖分析效率。

1 条带划分并行填挖算法

为了解决传统填挖算法耗时过长等问题,提高算法数据处理能力和计算效率,基于现有的并行数据划分方法,本文首先实现了基于平均划分的并行填挖算法,并将其作为基准算法。

常见的平均数据划分方式包括块划分、横向条带划分和纵向条带划分3种,以上3种划分方式的原理基本相同。经过测试,横向条带数据的读写速度要明显快于纵向条带和块数据,因此本文采用横向条带划分方式对DEM数据进行分块,划分结果如图1所示。

0917d80e-6813-eb11-8da9-e4434bdf6706.png

图1 数据横向条带划分示意图

Fig.1 Schematic diagram of horizontal striping of data

其中,第j 个数据块的宽度为dj,为保证任务粒度基本相等,本文将数据划分为如图1所示的长度与原数据相等、宽度相同的n 个条带,即d 1=d 2=…=dn。在进行了数据划分后,需将填挖分析任务分配给各个进程,分配方案如下:

假定总进程数为k,根据公式(1)和(2)求出A和E,其中A为平均条带数目,E为剩余条带数目,首先为每个进程分配A个条带任务,再将剩余的E个条带任务按顺序依次分配给前E 个进程。通常将数据分为n 块使得n 整除k,此时E为零,即恰好每个进程获得A个条带任务并进行填挖分析,此时每个进程处理的数据量近似相等。

0d17d80e-6813-eb11-8da9-e4434bdf6706.png

通过将传统填挖算法改造为上述基于条带划分的并行填挖算法,理论上将填挖分析时间缩短为传统填挖算法的1/E,单个条带数据量缩小为传统算法的1/n。在现有大规模计算机集群条件下,大幅提高了数据处理规模和填挖分析效率。

2 等面积划分并行填挖算法

上述算法对数据规模和分析效率都有一定的提升,其采用的条带数据划分方案具有较强的适用性。然而,在数据量较大时,该并行算法需要尽量降低任务粒度以保证较低的内存需求,而任务粒度降低的代价是运算结果的频繁通信,导致并行算法效率降低。更为重要的是,上述条带划分并行算法仅在有效数据区域为矩形时才能获得较高的计算效率,而在处理如图2b所示的不规则填挖区域时效率明显降低,并且难以保证各个进程之间的负载均衡。

为了克服该算法存在的问题,进一步提高填挖分析的数据处理能力和分析效率,本文对上述条带数据划分方案加以改进,提出了等面积数据划分算法。

对于如图2b所示DEM数据,定义用户需要进行填挖的不规则区域为填挖区域,其最小外包框内的其他区域为无效区域。在采用图2a所示条带划分算法时,除了需要对填挖区域进行分析,大量的内存空间和计算资源浪费在无效区域上。而当填挖区域为形如图2b的条状数据或其他不规则区域时,无效区域占全部读入数据的比例非常高,且所有的点都要判断是否在不规则图形内部。对于计算复杂度不高的填挖分析来说,这极大地增加了整体运算时间。

此外,在条带划分条件下,由于每个进程分析的区域难以提前确定,很难量化各个进程的计算任务,导致负载不均衡。为解决上述问题,本文提出了如图2c所示的基于等面积数据划分的并行填挖分析算法,该算法将填挖区域按相等面积进行分割,能有效地解决条带划分算法存在的问题。

1217d80e-6813-eb11-8da9-e4434bdf6706.png

图2 待填挖DEM数据b在条带数据划分a和等面积数据划分c下的效果图

Fig.2 Graph of irregular DEM data b under strip partition a and equal area partition c

2.1 等面积划分算法

对于面积相等的区域,数据读写量和计算量基本相等,因此等面积区域划分能够实现算法的负载均衡。本文实际采用的方法是将栅格数据划分为包含填挖区域面积相等的条带,而后仅对条带内填挖区域的数据进行分析,如图3所示。

1417d80e-6813-eb11-8da9-e4434bdf6706.png

图3 基于扫描线的等面积划分算法

Fig.3 Equal area partition algorithm based on scan lines algorithm

在图3所示不规则区域中,每个条带内包含的填挖面积Meanarea可以通过公式(3)得出:

1517d80e-6813-eb11-8da9-e4434bdf6706.png

式中,N 为条带任务数,S 为填挖区域总面积,其计算公式为

1817d80e-6813-eb11-8da9-e4434bdf6706.png

式中,ai、bi分别表示不规则区域第i个顶点Pi的横、纵坐标。如图3所示,该方法包含以下5个主要步骤:

1)确定不规则区域y方向的最大最小值Y max和Y min。

2)从Y max到Y min进行扫描,分别求出每个纵坐标与不规则区域的交点横坐标xi。

3)判断同一纵坐标对应的两个交点间的栅格是否在填挖区域内,并建立交点坐标的二元索引,如图3中的{1,(x 2,x 3)}和{y 1,(x 4,x 5)},其中每个索引{yi ,(xnxn +1)}表示第i行的xnxn +1之间的点都为填挖区域。

4)假设y m为第m 个条带的上边界,记录该行二元索引包含的栅格数目对应的填挖面积之和Sm,若Sm小于Meanarea ,则Sm与下一行的填挖面积累加,直至Sm大于Meanarea,记录此时条带m的下边界坐标ym +1,并以ym +1作为条带m +1的上边界。

5)重复上述步骤,直至将填挖区域近似按相等面积划分为N个条带。此时第m个条带包含ym +1-ym行数据,每行数据包含2k个交点(k为该行二元索引个数)。

在步骤2)计算扫描线与不规则区域的交点横坐标时,为简化计算,本文采用数值微分(Digital Differential Analyzer,DDA)算法,以轴方向为步进主方向计算相邻两个顶点之间的交点坐标。如图3中的x 0、x 4和x 8就可根据顶点1和P 2的坐标计算得出。

2.2 等面积划分填挖算法并行化

通过上述等面积划分方法,数据被划分为包含填挖区域面积相等的个条带,并通过上述二元索引记录了每一行的填挖区域范围。在实际任务分配中,由主节点将每个条带的二元索引发送到各个计算节点,计算节点根据该二元索引分别读入数据并进行填挖分析,计算节点在完成计算后将填挖分析结果返回至主节点,由主节点进行汇总后得到最终填挖分析结果。

通过上述二元索引读入数据并进行填挖分析,每次读入数据量很少,实现了对任意规模数据的分析。在等面积划分条件下,每个条带的计算量和I/O开销基本相等。为了保证计算节点的负载均衡,每个计算节点仅对一个条带数据进行填挖分析,即进程数与条带任务数都为N

3 实验与分析

基于上述算法原理,本文采用C++语言实现了面向大规模DEM数据的并行填挖算法。为了保证实验结果的适用性,将该算法对不同DEM数据的测试分别放在个人计算机和高性能计算平台上进行,硬件环境见表1。

表1 实验硬件环境

Tab.1 Experiment hardware environment

1917d80e-6813-eb11-8da9-e4434bdf6706.png

为了验证本文算法的性能,实验测试了遥感影像数据在不规则区域内的填挖分析性能,测试数据信息见表2。

表2 实验数据

Tab.2 Experiment data

1a17d80e-6813-eb11-8da9-e4434bdf6706.png

3.1 本文算法对大规模数据的适用性

为了验证本文算法对大规模DEM数据的适用性,本文选用表2所示数据在表1中个人计算机条件下进行填挖实验,并记录了算法运行状态,通过改变每次读入China90相应的数据块大小来测试算法对不同数据规模的处理能力,结果见表3。

表3 算法对海量数据处理能力对比

Tab.3 Capability comparison of algorithm processing massive data

1c17d80e-6813-eb11-8da9-e4434bdf6706.png

由表3可以看出,在本文实验硬件环境下,传统方法在处理总大小约为2.87 GB的72 000×18 000矩形数据块时就已经失效,而采用横向条带划分算法能够将共计约7.66 GB的DEM数据全部读入并进行填挖分析,但需要将原始数据划分为4个以上的条带,这就带来了一定的计算量和I/O开销,导致算法效率的降低。而本文采用的等面积划分算法适用于进行验证的全部DEM数据,且对划分出的数据块数目没有要求。理论上,本文算法可以无限提高数据的处理规模,且算法的数据划分部分的计算量很低,单进程条件下的运行效率基本不低于传统填挖算法。

3.2 算法并行化程度分析

为验证本文算法并行效率,现将条带划分并行算法与等面积划分并行算法针对如图3所示不规则区域进行对比测试,实验采用表2中的影像数据在表1中的高性能计算平台上进行测试,处理范围控制在China90对应的像素范围为48 000×18 000的矩形数据块中,在图3所示不规则区域下,条带划分方案共需要读入约1.91 GB的矩形数据进行分析,而等面积划分方案仅需读入填挖区域内的1.41GB数据,显著降低了算法I/O开销。取4次算法运行时间的平均值作为计算时间并记录,观察并行算法进行填挖分析的时间随进程数目的变化趋势,实验结果如图4所示。

1d17d80e-6813-eb11-8da9-e4434bdf6706.png

图4 算法处理时间随进程数的变化趋势

Fig.4 Processing time of the algorithm with different number of processes

由图4可以看出:等面积划分并行填挖算法运行时间明显低于条带划分并行填挖算法,且两者的运算效率与进程数目的关系相似。

为了更加直观地观察算法并行化程度,图5展示了加速比随进程数目变化的趋势,可以看到等面积划分并行填挖算法的加速比远高于条带划分并行填挖算法,且在进程数目较多的情况下等面积划分算法的加速效果更为明显。这是因为在进程数目大于1时,等面积划分并行算法的负载要比条带划分并行算法更加均衡。

2117d80e-6813-eb11-8da9-e4434bdf6706.png

图5 算法加速比随进程数的变化趋势

Fig.5 Algorithm acceleration ratio changes with the number of processes

此外,在进程数目较小时,并行算法处理时间随进程数的增加而降低,且下降趋势基本呈线性,算法效率提升明显。而当进程数目持续增加时,I/O开销将限制算法效率的提升,加速比趋于稳定。如果继续增加进程数,由于各进程间的读写竞争和不必要的额外I/O开销,算法运行时间反而可能会出现上升的趋势。因此,对于不同的硬件平台和数据规模,应采用对应的有效进程数以获得算法最优效率。

测试表明本文提出的并行算法能有效提高算法效率,大幅缩减填挖分析所需时间,同时保证对大规模DEM数据的适用性。事实上,等面积划分并行算法对图2b所示数据的填挖分析效率的提升则更为明显,因为该数据的无效区域比例更高,而对图3所示的不规则区域的填挖分析效率提升效果相对较弱。但算法效率仍取得了较大的提升,充分证明了本文算法的高效性。

4 结束语

随着DEM数据量的高速增长,传统填挖算法对大规模DEM数据的分析时间明显增加,且对海量数据的处理能力有限,难以满足应急测绘等实际需求。此外,在任意不规则区域下,填挖算法效率进一步降低,且大量计算浪费在无效区域上。而通过将传统填挖算法改造为并行算法,可以大幅缩减填挖分析时间,解决传统算法存在的问题,实现填挖分析结果的实时获取。

本文通过深入研究DEM数据的数据结构和填挖分析算法,首先实现了基于条带划分的并行填挖算法,一定程度上增强了对大规模DEM数据的处理能力和计算效率。针对该并行算法处理不规则数据效率低等问题,提出了一种基于等面积划分的并行填挖算法。该算法通过等面积数据划分算法大幅降低了大规模DEM数据进行填挖分析的计算量和I/O开销,同时实现了并行负载均衡,充分利用了计算机集群的计算能力。又通过将DEM数据划分为数据段并建立相应的二元索引的方法,理论上无限提高了算法处理海量数据的能力。

实验结果表明,本文算法不仅解决了大规模DEM数据的填挖分析问题,更充分利用了计算机集群的性能优势,将填挖分析效率提高了数十倍,大幅降低了填挖分析所需的运行时间。

0617d80e-6813-eb11-8da9-e4434bdf6706.png  (点击图片即可查看详细信息) 2517d80e-6813-eb11-8da9-e4434bdf6706.jpeg  

2717d80e-6813-eb11-8da9-e4434bdf6706.png

2917d80e-6813-eb11-8da9-e4434bdf6706.jpeg

内容转载、商务活动、投稿等合作请联系

微信号:huitiandi321

邮箱:geomaticshtd@163.com

欢迎关注慧天地同名新浪微博:

ID:慧天地_geomaticser

往期精彩推荐

地下管网BIM数据一体化处理平台研发与应用

基于基础地理信息数据的III级城市三维模型快速构建方法

面向三维城市建模的多点云数据融合方法综述

2a17d80e-6813-eb11-8da9-e4434bdf6706.gif

《慧天地》敬告

《慧天地》公众号聚焦国内外时空信息科技前沿、行业发展动态、跨界融合趋势,探索企业核心竞争力,传播测绘地理信息文化,为测绘、地信、遥感等相关专业的同学提供日常学习、考研就业一站式服务,旨在打造政产学研用精准对接的平台。《慧天地》高度重视版权,对于原创、委托发布的稿件,会烦请作者、委托方亲自审核通过后才正式推发;对于来自网站、期刊、书籍、微博、微信公众号等媒介的稿件,会在作者栏或者文章开头显著标明出处,以表达对作者和推文引用平台版权的充分尊重和感谢;对于来源于网络作者不明的优质作品,转载时如出现侵权,请后台留言,我们会及时删除。感谢大家一直以来对《慧天地》的关注和支持!——《慧天地》运营团队

2e17d80e-6813-eb11-8da9-e4434bdf6706.jpeg

编辑:韩政  审核:李允琛 指导:万剑华教授  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值