http://blog.csdn.net/giser_whu/article/details/41288761
洪涝模拟仿真的实现方法主要有两种:一种是基于水动力学的洪水演进模型;另一种是基于DEM的洪水淹没分析。具体分析如下:
我是GIS从业者,从我们的专业角度出发,选择基于DEM的洪水淹没分析来做洪涝的模拟仿真。而基于DEM的洪水淹没分析方法主要分为有源淹没和无源淹没。
本篇博客采用有源淹没算法实现洪涝的模拟,算法为八领域种子扩散算法。采用C#版本GDAL编写了FloodSimulation类,下面给出全部源代码:
- class FloodSimulation
- {
- #region 类成员变量
- //点结构体
- public struct Point
- {
- public int X; //行号
- public int Y; //列号
- public int Elevation; //像素值(高程值)
- public bool IsFlooded; //淹没标记
- };
- private bool[,] IsFlood; //淹没区域标记二维数组,用于标记淹没栅格
- private List<Point> m_FloodBufferList; //淹没缓冲区堆栈
- public Dataset m_DEMDataSet; //DEM数据集
- public Dataset m_FloodSimulatedDataSet; //洪涝淹没范围数据集
- public int m_XSize; //数据X方向栅格个数
- public int m_YSize; //数据Y方向栅格个数
- public OSGeo.GDAL.Driver driver; //影像格式驱动
- public int[] m_FloodBuffer; //填充缓冲区(洪涝淹没范围)
- public int[] m_DEMdataBuffer; //DEM数据(存储高程值)
- public double m_AreaFlooded; //水面面积
- public double m_WaterVolume; //淹没水体体积