ArcEngine栅格范围专题图

栅格影像作为一种非常重要的数据源被广泛应用在气象、环保、国土等行业中,对栅格数据显示渲染来突出某一方面的信息变的十分重要。如:在气象行业,时常需要对由散点温度生成的栅格影像按温度值做范围分级渲染,来展示不同地区在某一时段内的温度情况。

 

    接下来介绍在ArcEngine下实现栅格影像数据的范围专题图的实现方法。

 

    核心的函数段如下:

 

public bool ApplyRenderer(IRasterLayer sRlyr,AxMapControlpMapCtrl,bool UseRgb)

 

        {

 

            try

 

            {

 

               IRaster pRaster = sRlyr.Raster;

 

               IRasterClassifyColorRampRenderer pClassRen = newRasterClassifyColorRampRendererClass();

 

               IRasterRenderer  pRasRen =pClassRen as IRasterRenderer;

 

 

 

               pRasRen.Raster = pRaster;

 

               pClassRen.ClassField = “Value”;

 

               pClassRen.ClassCount = ColorSetlist.Keys.Count;

 

               pRasRen.Update();

 

                for(int i = 0; i < ColorSetlist.Keys.Count; ++i)

 

                {

 

                   IFillSymbol pFSymbol = new SimpleFillSymbolClass();

 

                   IRgbColor pRClr = new RgbColorClass();

 

                   ColorSet sColorSet = ColorSetlist[ColorSetlist.Keys[i]];

 

                   if (!UseRgb)

 

                       pRClr.RGB = sColorSet.iColorValue;

 

                   else

 

                   {

 

                       pRClr.Red = sColorSet.iR;

 

                       pRClr.Green = sColorSet.iG;

 

                       pRClr.Blue = sColorSet.iB;

 

                   }

 

                   pFSymbol.Color = pRClr;

 

                   pClassRen.set_Break(i+1, Convert.ToInt32(ColorSetlist.Keys[i]));

 

                   pClassRen.set_Symbol(i, pFSymbol as ISymbol);

 

                   pClassRen.set_Label(i, (i+1).ToString());

 

                }

 

               pRasRen.Update();

 

               sRlyr.Renderer = pClassRen as IRasterRenderer;

 

               pMapCtrl.Refresh();

 

                return true;

 

            }

 

            catch(Exception ee)

 

            {

 

               MessageBox.Show(ee.Message, “提示“,MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

 

               return false;

 

            }

 

        }

 

    public classColorSet

 

    {

 

        publicdouble sBreak = 0;

 

        public intiR = 0;

 

        public intiG = 0;

 

        public intiB = 0;

 

        publicInt32 iColorValue = 0;

 

}

 

 

 

ColorSet类型是用来存储从配置表中读取的颜色信息用于栅格渲染时使用;需要提示大家注意的是,下面的代码段中红色部分,为范围专题图设置断点序号是从1开始的不是0,否则会出现相同的颜色配置、范围划分,而在程序和ArcMap中得到的渲染结果不一致的情况。

 

pClassRen.set_Break(i+1,Convert.ToInt32(ColorSetlist.Keys[i]));

 

pClassRen.set_Symbol(i, pFSymbol as ISymbol);

 

pClassRen.set_Label(i, (i+1).ToString());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值