洪涝淹没分析输出淹没范围图、深度图及面积体积等信息

5 篇文章 0 订阅
4 篇文章 1 订阅

接上一篇博客《洪涝有源淹没算法及结果分析》。可以输出洪涝淹没范围图、深度图以及淹没面积等信息,下一步输出历时图。代码很简单,下面直接给出源代码,欢迎大家留言交流。

  /// <summary>
        /// 输出洪涝淹没范围图
        /// </summary>
        public void OutPutFloodRegion()
        {

            //创建洪涝淹没范围影像
            string m_FloodRegionPath = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\FloodSimulation\\FloodedRegion.tif";
            if (System.IO.File.Exists(m_FloodRegionPath))
            {
                System.IO.File.Delete(m_FloodRegionPath);
            }

            //在GDAL中创建影像,先需要明确待创建影像的格式,并获取到该影像格式的驱动
            driver = Gdal.GetDriverByName("GTiff");
            //调用Creat函数创建影像
            m_FloodSimulationRegionDataSet = driver.Create(m_FloodRegionPath, m_XSize, m_YSize, 1, DataType.GDT_Float32, null);
            //设置影像属性
            m_FloodSimulationRegionDataSet.SetGeoTransform(m_adfGeoTransform); //影像转换参数
            m_FloodSimulationRegionDataSet.SetProjection(m_DEMDataSet.GetProjectionRef()); //投影

            //输出影像
            m_FloodSimulationRegionDataSet.GetRasterBand(1).WriteRaster(0, 0, m_XSize, m_YSize, m_FloodRegionBuffer, m_XSize, m_YSize, 0, 0);
            m_FloodSimulationRegionDataSet.GetRasterBand(1).FlushCache();
            m_FloodSimulationRegionDataSet.FlushCache();

        }

        /// <summary>
        /// 输出洪涝淹没深度图
        /// </summary>
        public void OutPutFloodDepth()
        {

            for (int i = 0; i < m_XSize; i++)
            {
                for (int j = 0; j < m_YSize; j++)
                {
                    Point m_point = new Point();
                    m_point.X = i;
                    m_point.Y = j;
                    if (m_FloodRegionBuffer[getIndex(m_point)] == 1)
                    {
                        int evaluation = m_DEMdataBuffer[getIndex(m_point)]; //淹没格网高程值
                        int value = pFloodLevel - evaluation;
                        m_FloodDepthBuffer[getIndex(m_point)] = value;
                    }
                }

            }
            //输出洪涝淹没深度图
            string m_FloodDepthPath = System.IO.Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + "\\FloodSimulation\\FloodedDepth.tif";
            if (System.IO.File.Exists(m_FloodDepthPath))
            {
                System.IO.File.Delete(m_FloodDepthPath);
            }

            //在GDAL中创建影像,先需要明确待创建影像的格式,并获取到该影像格式的驱动
            driver = Gdal.GetDriverByName("GTiff");
          
            //调用Creat函数创建影像
            m_FloodSimulationDepthDateSet = driver.Create(m_FloodDepthPath, m_XSize, m_YSize, 1, DataType.GDT_Float32, null);
            //设置影像属性
            m_FloodSimulationDepthDateSet.SetGeoTransform(m_adfGeoTransform); //影像转换参数
            m_FloodSimulationDepthDateSet.SetProjection(m_DEMDataSet.GetProjectionRef()); //投影
   
            //输出影像
            m_FloodSimulationDepthDateSet.GetRasterBand(1).WriteRaster(0, 0, m_XSize, m_YSize, m_FloodDepthBuffer, m_XSize, m_YSize, 0, 0);
            m_FloodSimulationDepthDateSet.GetRasterBand(1).FlushCache();
            m_FloodSimulationDepthDateSet.FlushCache();

        }
        /// <summary>
        /// 输出洪涝淹没面积及水量
        /// </summary>
        public void OutPutFloodInfo()
        {
            int count = 0;
            for (int i = 0; i < m_XSize; i++)
            {
                for (int j = 0; j < m_YSize; j++)
                {
                    Point m_point = new Point();
                    m_point.X = i;
                    m_point.Y = j;
                    if (m_FloodRegionBuffer[getIndex(m_point)] == 1)
                    {
                        count++;
                    }
                }

            }
            //统计面积
            double S = count * 90; //平方米
            if (S > 10000)
            {
                S = S / 10000;  //公顷
            }
            MessageBox.Show("淹没面积:" + S.ToString() + "公顷");
        }

结果图:范围图与深度图




骋天淹没分析系统 骋天淹没分析系统是以三维地理信息系统为基础平台,基于数字高程模型(DEM)格网模型,通过改进迭代种子蔓延算法将淹没分析结果直观在三维地理系统系统上呈现出来。 骋天淹没分析系统应用于水库的库区淹没分析时,设置好起止水位和终止水位,以三维的形式呈现库区淹没区域,根据不同是水深来计算库容量,移民数量、直接经济影响和间接经济影响。可将数据制作成柱状图、饼状图、曲线图等多种多样的统计图;能够根据业务流程和用户要求定制各类表格,进行业务报表输出;还能按某一要素生成范围图、点密度图、分级符号图等,进行专题图分析,形象直观地反映防洪要素的时空变化规律。 骋天淹没分析系统亦可应用于洪水淹没分析时,根据洪水演进过程,配合数字化地图,利用三维模型,计算洪水淹没范围和淹没水深,并动态显示淹没区域并动态显示淹没区域,计算人口、家庭财产、工商、企业、农业、林业、渔业和畜牧业等淹没信息。并可根据预报调度、实时调度和历史调度等不同洪水下泻过程,计算分析洪水淹没损失,显示淹没分布状况,从而得出最佳洪水调度预案,提供泄洪区域内人员撤退、避灾转移和救灾物资供应等最佳行动路线。 广西骋天信息科技有限公司 网站 www.gxchengtian.com
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值