成静

摘 要:近年以来,基于数字高程模型(Digital Elevation Model,DEM),将水动力模型与地理信息系统技术相结合,来计算、显示洪水淹没范围是水利应用领域的研究热点之一。洪水淹没模拟分为有源淹没和无源淹没两种情形,针对有源淹没递归算法计算效率低和稳定性不高的缺点,本文基于“栈”数据结构的特点,提出了一种基于淹没区缓冲堆栈的有源洪水淹没分析种子蔓延算法,实现了更为高效的有源洪水淹没分析,最后在江西省遂川县洪水淹没分析系统中进行了实践与验证。

关键词:DEM;洪水淹没分析;GIS;算法

我国是一个洪水灾害频繁发生的国家,近年来,随着中国社会经济的发展,洪水灾害造成的损失也日益严重,而准确的洪水预报与分析可以为防洪救灾方案的制定和指挥调度提供重要的科学依据。因此,在地理信息系统等新技术的支持下,研究、计算与模拟洪水淹没范围,已成为当前极有意义的研究课题。

近年以来,基于数字高程模型(Digital Elevation Model,DEM),将水动力模型与地理信息系统技术相结合,来计算、显示洪水淹没范围是水利应用领域的研究热点之一。如刘仁义等人提出了“有源淹没”和“无源淹没”两种淹没区计算方法[1];许多学者采用递归的方法来计算洪水有源淹没范围[2],但是递归方法却具有计算效率低和稳定性不高的缺点;对此,本文基于“栈”数据结构的特点,提出了一种基于淹没区缓冲堆栈的有源洪水淹没分析种子蔓延算法,实现了更为高效的有源洪水淹没分析,最后在江西省遂川县洪水淹没分析与显示系统中进行了实践与验证。

1 基于DEM的洪水淹没分析算法

(1)数字高程模型(DEM)

数字高程模型(Digital Elevation Model,DEM)描述了地表形态的时空分布,是地学分析和过程模拟的基础数据,已广泛应用于全球变化、环境保护、自然灾害等科学领域。随着对地观测技术的发展,各种全球尺度DEM 数据(如SRTM DEM、ASTER DEM 等)已向公众开放,为全球范围和区域规模的地学分析模拟提供了可靠的数据来源。DEM是由一系列的地面坐标点(x,y)以及对应的高程值z,对地表进行连续的描述表达,其数学函数式表达如下式所示:

z=(x,y), (x,y)∈DEM 所在的区域

(2)基于DEM的洪水淹没分析计算模型

近年以来,基于数字高程模型(Digital Elevation Model,DEM),将水动力模型与地理信息系统技术相结合,来计算、显示洪水淹没范围是水利应用领域的研究热点之一。针对DEM进行的淹没分析可以分为“无源淹没”与“有源淹没”两种。

无源淹没适用于大面积的地形平坦区域均匀降水的情况下计算洪水淹没区,无源淹没仅仅将区域降水量的大小作为影响因素,并没有考虑地形连通性的影响,处理过程相对简单。它的原理是遍历数字高程模型上每个点的高程值,只要该点的高程值小于给定洪水水位,即将其加入至淹没区域,从而计算出最终洪水淹没区域。

有源淹没不仅仅考虑区域降水量的大小,还考虑到了地域连通性与水动力模型的影响,在洪水流动过程中,由于地形的阻挡,即使数字高程模型上某点的高程小于给定洪水水位,该点也不一定会淹没,例如环形山地形,对于无源淹没,环形山内外可能都会被淹没,而对于有源淹没,如果山外的洪水并没有淹没山顶,那么在环形山内部不能形成淹没区。因此,有源淹没更加符合实际的情况,但也更加复杂,考虑的因素要多于无源淹没。

本文研究的种子蔓延算法属于有源淹没算法,它的基本原理是:从指定的种子点开始,向其相邻的各个方向的网格进行搜索,逐个网格进行处理,直到遇到边界。向不同方向进行搜索的方法包括“4-联通算法”和“8-联通算法”。从区域内任意一点出发,如果只是通过上、下、左、右四个方向搜索到达区域内的任意像素,则用这种方法填充的区域就称为四连通域,这种填充方法就称为“4-联通算法”。如果从区域内任意一点出发,通过上、下、左、右、左上、左下、右上和右下全部八个方向到达区域内的任意像素,则这种方法填充的区域就称为八连通域,这种填充方法就称为“8-联通算法”。在扫描过程中,如果网格属性值为1,则做标记不再向外扩散,如果在扫描过程中,网格属性值为0,则把该点作为新的种子点,并继续向其相邻的各个方向的网格进行遍历、处理。

2 种子点蔓延算法的改进与实现

(1)数据结构“栈”的定义

栈(stack)又名堆栈,是在程序设计中一类非常重要的数据结构。栈是一种只能在一端进行插入或删除操作的线性表,其中,允许进行插入或删除操作的一端称为栈顶,它是动态变化的,相应的,表头端称为栈底,栈底是固定不变的。

由栈的定义可以看出栈的特点,即“后进先出”,因此,栈也被称为“后进先出”的线性表。假设栈S=(a1,a2,a3,…,an),则称a1为栈底元素,an为栈顶元素。栈中元素按a1,a2,a3,…,an的次序进栈,则其退栈顺序应该为:an,…,a3,a2,a1。

(2)种子蔓延模型算法——基于“栈”的种子遍历算法的设计与实现

假设给定洪水水位为FloodLevel,洪水的淹没原点为RasterPoint(x,y),其周围的八个邻域点为RasterPoint(i,j),其中,x-1≤i≤x+1;y-1≤j≤y+1。

基于“栈”的种子遍历的种子蔓延模型算法原理是:首先,初始化淹没区缓冲堆栈,从淹没原点开始,判断淹没原点RasterPoint(x,y)是否小于给定洪水水位FloodLevel,若RasterPoint(x,y) ≤FloodLevel,则将其标记为可淹没的栅格,并将其加入到淹没区缓冲堆栈中,然后搜索其周围的八个邻域栅格点,将小于给定洪水水位为FloodLevel,即满足条件RasterPoint(i,j) ≤FloodLevel的栅格加入到淹没区缓冲堆栈中,同时标记为可淹没的栅格,此时,弹出缓冲堆栈中的第一个元素,即RasterPoint(x,y),这时候,缓冲堆栈中的第一个元素应该为RasterPoint(x,y)邻域栅格中的一个,假设为RasterPoint(x+1,y+1),这样,第二次循环计算时候的淹没原点就是RasterPoint(x+1,y+1),这样重复第一次的计算即可。循环遍历淹没区缓冲堆栈中的所有栅格点,直至淹没区缓冲堆栈为空,运算结束,从而可以得到淹没区域的范围。图1为算法流程图。

(3)实例应用——江西省遂川县洪水淹没模拟系统

“江西省遂川县洪水淹没模拟系统”是利用C#语言,借助于ESRI的ArcGIS Engine平台,基于“栈”的种子遍历算法而开发出来的用于抗洪分析的决策系统。通过输入种子点坐标与淹没水位,获得淹没栅格单元并将其转化为矢量面从而计算出洪水淹没范围。并且借助ArcEngine中axGlobeControl控件以30米分辨率DEM作为高程数据源,以高分辨率卫星影像图作为叠加影像,生成全景三维地形场景,最终将淹没结果与三维场景叠加,生成三维场景下的山洪淹没结果。使得淹没模拟更加的逼真,可视性更强,为山洪决策提供更加良好的支持。图2为假设淹没原点在遂川县烟头村,预测洪水水位高程为20m时的淹没范围分析结果图。

3 结语

本文研究的基于“栈”的种子遍历算法,可以较为准确地计算出给定洪水水位条件下洪水淹没范围,相比以往研究中的递归算法,本文提出的改进算法可以极大提高程序的计算效率,节约系统资源,从而实现了更为高效的有源洪水淹没分析。但是,在实际的洪水淹没分析中,仍然需要考虑地形因素、气候因素、水动力模型的影响等等,因此,在未来的研究中,算法仍有很多条件需要考虑并改进,为科学的防灾救灾提供更加科学的决策依据。

参考文献:

[1]刘仁义,刘南.基于GIS的复杂地形洪水淹没区计算方法[J]. 地理学报,2001,01:1-6.

[2]周品,李勇,谭建军,孙芹芹.基于DEM的洪水淹没计算机算法优化研究[J]. 微计算机信息,2007,03:196-198.

[3]汤国安. 数字高程模型教程[M].科学出版社, 2010.

[4]严蔚敏, 李冬梅, 吴伟民. 数据结构(C语言版)[J]. 计算机教育, 2012.endprint

有源淹没分析arcgis_基于DEM的有源洪水淹没分析算法相关推荐

  1. 基于python的情感分析案例-基于情感词典的python情感分析

    Python Python开发 Python语言 基于情感词典的python情感分析 近期老师给我们安排了一个大作业,要求根据情感词典对微博语料进行情感分析.于是在网上狂找资料,看相关书籍,终于搞出了 ...

  2. 有源淹没分析arcgis_基于ArcGIS的洪水淹没分析与三维模拟

    基于 ArcGIS 的洪水淹没分析与三维模拟 孙 君 , 奚赛英 , 尤 迪 , 郑付涛 [摘 要] 摘 要 : 洪水淹没范围的确定是洪灾损失评估和防洪决策的核心环节 . 基 于 TIN 数据 , 运 ...

  3. 层次分析法-基于节点关键度的DTN路由算法

    当你看到一个知识点的时候,不是收藏和点赞,而是想办法转化成自己需要的知识,好记性不如烂笔头. 层次分析法 层次分析法(运筹学理论),简称AHP,是指将于决策总是有关的元素分解成目标.准则.方案等层次, ...

  4. 基于DEM的坡度坡向分析

  5. ArcGIS_基于DEM的地形起伏度计算

  6. PDERL:基于DEM的快速精确通视域分析算法介绍(一)

    PDERL: 基于DEM的快速精确通视域分析算法(精度与R3相同,速度与XDraw接近) 系列文章: PDERL:基于DEM的快速精确通视域分析算法介绍(一) PDERL:基于DEM的快速精确通视域分 ...

  7. ArcGIS实验教程——实验四十:ArcGIS洪水淹没分析案例教程

    文章目录 一.洪水淹没效果动画演示 二.实验数据 三.实验过程 1. 加载数据 2. 符号化 3. 夸大处理 4. 动画制作 5. 动画播放 6. 导出动画 基于数字高程模型 ( DEM )格网模型, ...

  8. 【ArcGIS教程】洪水淹没分析——以青海省为例

    Part1准备数据 如下为已经处理好的所需数据:青海省90mDEM.青海省边界数据.青海省影像 青海省90mDEM:可从地理空间数据云等网站下载好后进行镶嵌拼接处理 青海省边界数据:可直接下载处理 青 ...

  9. 基于DEM的沟壑特征分析

    您的位置:第十二章 基于DEM的沟壑特征分析 第十二章 1.本章主题编号 专题序号 专题名称 子专题号 子专题名称 子专题主要内容 实验内容 备注 12 基于DEM的沟壑特征 分析 1 基于DEM的沟 ...

  10. c语言编写计算机软件,基于C语言的计算机软件编程分析.doc

    基于C语言的计算机软件编程分析.doc 基于C语言的计算机软件编程分析 摘要:C语言是一种重要的编程语言,在当今IT业的运用十分广泛.使用C语言来编写的程序简单.直接.准确,极大地推动了计算机软件的更 ...

最新文章

  1. 像癌症一样传播:世界首个PLC病毒问世
  2. 图解 VS2015 如何打包winform 安装程序
  3. 排查链接是否失效_如何进行移动站点流量排查?
  4. C# VS2012操作word文档 (二).插入表格图片
  5. linux tomcat php配置文件在哪个文件夹下,tomcat下,怎么安配备置php ?(linux系统)
  6. Sparrow - Distributed, Low Latency Scheduling
  7. 搭建Mock Server实践(一)理论篇
  8. HMM:隐马尔可夫模型 - 表示
  9. Android存储(1)-- 你还在乱用Android存储嘛!!!
  10. Scrapy框架结合Spynner采集需进行js,ajax动态加载的网页并提取网页信息(以采集微信公众号文章列表为例)
  11. 三菱a系列motion软体_三菱各类伺服电机标准参数一览表
  12. IE8 “Automation 服务器不能创建对象”问题解决方法
  13. 用matlab求三次方程根,三次方程的根式求解(通俗版本)
  14. 人工智能分为哪两种,人工智能的终极目标,我们怎么才能实现?
  15. Android P Asan使用总结
  16. 网桥(生成树网桥和源路由网桥)
  17. python+adb命令实现自动刷视频脚本
  18. 如何提取出word里的图片
  19. idea 启动时怎么选择工作空间
  20. 最新Java设计模式之美

热门文章

  1. -webkit-background-clip属性不生效问题
  2. java定义一个short_JDK源码解读第七章:java.lang.Short
  3. 网站建设的费用一般与功能要求是成正比的
  4. Base64编码详解与URL安全的Base64编码
  5. 20行Python代码爬取LOL全英雄皮肤图片
  6. 读懂LaTeX中cls文件
  7. lookup无序查找_Excel LOOKUP不排序怎么快速找到数据_lookup函数讲解
  8. 高并发下restTemplate的错误分析
  9. 重装系统后Oracle数据库恢复的方法
  10. 读书笔记5.2——《让数字说话:审计,就这么简单》:孙含晖