ArcGIS Engine栅格范围专题图
分享
栅格影像作为一种非常重要的数据源被广泛应用在气象、环保、国土等行业中,对栅格数据显示渲染来突出某一方面的信息变的十分重要。如:在气象行业,时常需要对由散点温度生成的栅格影像按温度值做范围分级渲染,来展示不同地区在某一时段内的温度情况。
接下来介绍在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]
接下来介绍在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 个评论
相关问题
- 如何优雅的使用ArcGIS知乎?
- 建设ArcGIS知乎平台的目和意义?
- ArcGIS知乎社区改进意见征集
- 【抽奖结果已出】ArcGIS知乎社区活动 之 你不知道的地理空间革命【转发分享有奖】【附奖品寄送照片】
- 苹果系统下可以使用arcgis 吗?
- arcgis版本兼容性
- 请问ArcGIS适合在局域网内用javaweb做二次开发吗?
- 请问大神们,怎么用ArcGIS做城镇间经济联系强度的图?
- 有栅格数据a(大数据),小数据b,怎么从a中扣掉b,得到a数据剩下的部分?栅格能裁剪取反吗?
- 在Visual studio 2015 中使用 Arcgis API for JavaScript v3.16 如何实现代码智能提示?
- ArcGIS如何求栅格图像的“质心”