//执行山体阴影操作 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); } }
//执行山体阴影操作 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); } }