示例#1
0
        //执行山体阴影操作
        public void Init()
        {
            //遍历子节点读取参数
            foreach (XmlNode xnl1 in m_xmlnode.ChildNodes)
            {
                if (xnl1 is XmlComment)
                {
                    continue;
                }

                XmlElement xe = (XmlElement)xnl1;
                //找到Azimuth节点,读取其参数
                if (xe.Name == "Azimuth")
                {
                    m_azimuth = double.Parse(xe.InnerText);
                }
                //找到ZFactor节点,读取其参数
                if (xe.Name == "ZFactor")
                {
                    m_zfactor = double.Parse(xe.InnerText);
                }
            }
            //山体阴影的实现
            try
            {
                //将m_raster转为IRaster接口实行栅格相关操作
                IRaster2 raster2 = m_raster as IRaster2;
                //使用IHillshadeFunctionArguments接口进行山体阴影操作
                IHillshadeFunctionArguments hillshadeFunctionArugments = (IHillshadeFunctionArguments) new HillshadeFunctionArguments();
                //设置生成山体阴影所需要的参数Azimuth和ZFactor的值
                hillshadeFunctionArugments.Azimuth = m_azimuth;
                hillshadeFunctionArugments.ZFactor = m_zfactor;
                //设置数据源为该raster
                hillshadeFunctionArugments.DEM = raster2;
                //创建一个IRasterFunction
                IRasterFunction rasterFunction = new HillshadeFunction();
                //创建IFunctionRasterDataset以调用Init方法执行函数
                IFunctionRasterDataset functionRasterDataset = new FunctionRasterDataset();
                //设置IFunctionRasterDataset的相关参数
                IFunctionRasterDatasetName functionRasterDatasetName = (IFunctionRasterDatasetName) new FunctionRasterDatasetNameClass();
                functionRasterDatasetName.FullName = @"D:\RDB";
                functionRasterDataset.FullName     = (IName)functionRasterDatasetName;
                //调用Init执行
                functionRasterDataset.Init(rasterFunction, hillshadeFunctionArugments);
                //所得结果转为IRasterDataset
                IRasterDataset rasData = functionRasterDataset as IRasterDataset;
                //修改m_raster
                m_raster = rasData.CreateDefaultRaster();
            }
            catch (System.Exception ex)//捕获异常,输出异常信息
            {
                MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
示例#2
0
        //执行山体阴影操作
        public void Init()
        {
            //遍历子节点读取参数

            foreach (XmlNode xnl1 in m_xmlnode.ChildNodes)
            {
                if (xnl1 is XmlComment)
                {
                    continue;
                }

                XmlElement xe = (XmlElement)xnl1;
                if (xe.Name == "Azimuth")
                {
                    m_azimuth = double.Parse(xe.InnerText);
                }
                if (xe.Name == "ZFactor")
                {
                    m_zfactor = double.Parse(xe.InnerText);
                }
            }
            //山体阴影的实现
            try
            {
                IRaster2 raster2 = m_raster as IRaster2;
                IHillshadeFunctionArguments hillshadeFunctionArugments = (IHillshadeFunctionArguments) new HillshadeFunctionArguments();
                hillshadeFunctionArugments.Azimuth = m_azimuth;
                hillshadeFunctionArugments.ZFactor = m_zfactor;
                hillshadeFunctionArugments.DEM     = raster2;

                IRasterFunction            rasterFunction            = new HillshadeFunction();
                IFunctionRasterDataset     functionRasterDataset     = new FunctionRasterDataset();
                IFunctionRasterDatasetName functionRasterDatasetName = (IFunctionRasterDatasetName) new FunctionRasterDatasetNameClass();
                //随机生成文件名
                //Random ran = new Random();
                //int rannum = ran.Next(1000);
                functionRasterDatasetName.FullName = @"D:\RDB";
                functionRasterDataset.FullName     = (IName)functionRasterDatasetName;
                functionRasterDataset.Init(rasterFunction, hillshadeFunctionArugments);

                IRasterDataset rasData = functionRasterDataset as IRasterDataset;

                //修改m_raster
                m_raster = rasData.CreateDefaultRaster();
            }
            catch (System.Exception ex)//捕获异常,输出异常信息
            {
                MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }