ArcGIS Engine栅格范围专题图

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

接下来介绍在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];

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());
文章来源:http://blog.csdn.net/sydbc/article/details/17202335
[/i]

0 个评论

要回复文章请先登录注册