洪涝模拟仿真的实现方法主要有两种:一种是基于水动力学的洪水演进模型;另一种是基于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;