论文部分内容阅读
随着栅格DEM数据的大小不断的增加,对已有的串行洼地识别和填法算法进行并行化处理越来越有必要.目前主要有三类洼地填充算法,其典型算法分别由Jenson and Domingue(1988)、Planchon and Darboux(2002)以及Wang and Liu(2006)提出.其中,前两类算法都有并行实现,而第三类算法文献中称为优先级队列洼地填充算法则没有并行算法的实现.优先级队列填充算法在串行算法中无论是时间复杂度还是空间复杂度都明显优于其它两类洼地填充算法.本文提出了一种优先级队列洼地填充算法的并行实现,可以极大地减少算法运行时间.本文提出的并行算法使用Zhou et al.(2016)提出的改进串行优先级队列填充算法.Zhou et al.(2016)把单元格分为坡地单元格和洼地单元格两种类型.本算法首先把DEM沿最长方向分成条带.在每一条带中使用优先级队列算法.首先把位于每一带中的原始DEM的边界单元格压入到优先级队列,然后应用优先级队列洼地填充算法.由于某些单元格的溢出路径会与其它条带相交,因此某些坡地单元格会被误作为洼地单元格或者洼地单元格的溢出高程会被抬高从而出现不正确的填充结果.针对这两种情况,本文提出的并行算法需要多次迭代处理每一个条带.在第一次处理完毕后,每一条带与相邻条带交换条带边界单元格的溢出高程.如果在相邻条带中的边界单元格的溢出高程低于本条带中的边界单元格的溢出高程,那么就把相邻条带中的边界单元格及其溢出高程压入到本条带的优先级队列中并进行处理.这一过程一直迭代到相邻条带的边界单元格溢出高程相等为止.本文提供了OpenMP和MPI两种实现.总体来说,并行实现与串行算法的加速比达到5倍以上.同时,相较于其它两类洼地填充算法的并行实现,本文提出的并行算法的加速度比也达到了6倍以上.本文研究表明优先级队列洼地填充算法可以被并行实现.这一算法无论在串行环境下还是并行环境下都是洼地识别和填充的理想算法.