ArcGIS Engine开发教程之图层符号化(四)——符号化之Renderer( 渲染)体系

来源:互联网 发布:s1810打印机网络设置 编辑:程序博客网 时间:2024/04/28 02:07
符号化之Renderer( 渲染)体系

    ArcGIS Engine9.3对GIS数据的符号化分为矢量数据渲染和栅格数据渲染两大类。接下来分别介绍FeatureRender和RasterRender。

1.FeatureRender对象
    FeatureRenderer是一个抽象类,它有15个子类负责进行不同类型的着色运算。它们都实现了IFeatureRenderer接口,这个接口定义了进行要素图层符号化的公共属性和方法。
    可以通过IGeoFeatureLayer::Renderer属性获得一个要素图层的符号化对象

表四

要素符号化类型
描述
SimpleRender
简单符号化
UniqueValueRender
唯一值符号化
BiUniqueValueRender
双变量唯一值符号化
ChartRender
图表符号化
ClassBreaksRenderer
分类等级符号化
DotDensityRenderer
点密度符号化
ProportionalSymbolRenderer
根据属性值设置符号大小进行符号化
ScaleDependentRenderer
依比例尺符号化
RepresentationRenderer
制图表达符号化
CoTrackSymbologyRenderer(TrackingAnalyst)
轨迹符号化(应用于TrackingAnaylyst扩展模块)
EnhancedInfoRenderder(TrackingAnalyst)
增强信息符号化(应用于TrackingAnaylyst扩展模块)
UniqueValueTextRenderer(TrackingAnalyst)
唯一值文本符号化(应用于TrackingAnaylyst扩展模块)
NAStopRenderer(NetworkAnalyst)
停止符号化(应用于网络分析扩展模块)
FeatureVertexRenderer(SurveyExt)
要素定点符号化(应用于测量分析扩展模块)
SharedEdgeRenderer(EditorExt)
用于绘制拓扑元素    常用的要素符号化类型主要有以下6种类型,如图13所示:
    

13

    由于篇幅有限不再对每一种符号化类型的使用进行讲解,在后边的实例中将为读者演示如何进行唯一值符号化。

2.RasterRender对象
      RasterRender是一个抽象类,它有15个子类负责进行不同类型的着色运算。它们都实现了IRasterRender接口,这个接口定义了栅格图层符号化的公共属性和方法。可以通过IRasterLayer::Renderer属性获得一个栅格图层的符号化对象。
要素符号化类型
描述
RasterRGBRenderer
栅格RGB符号化
RasterUniqueValueRenderer
唯一值符号化
RasterColormapRenderer
双变量唯一值符号化
RasterClassifyColorRampRenderer
图表符号化
RasterStretchColorRampRenderer
分类等级符号化
RasterDiscreteColorRenderer
点密度 符号化
    栅格符号化类型结构图如图14所示:

14

以下代码片段是对一个RasterLayer进行RasterStretchColorRampRenderer符号化操作:

///<summary>

/// StretchColorRamp符号化RasterLayer

///</summary>

///<param name="pRasterLayer">RasterLayer</param>

publicvoid SetStretchColorRampRenderer(IRasterLayer pRasterLayer)

{

try

{

//创建RasterStretchColorRampRendererClass对象

IRasterStretchColorRampRenderer pRStretchRender=newRasterStretchColorRampRendererClass();

//QI到IRasterRenderer

IRasterRenderer pRasterRender=pRStretchRenderasIRasterRenderer;

pRasterRender.Raster = pRasterLayer asIRaster;

pRasterRender.Update();

//创建两个起始颜色

IRgbColor pFromRgbColor =newRgbColorClass();

pFromRgbColor.Red = 255;

IRgbColor pToRgbColor =newRgbColorClass();

pToRgbColor.Blue = 255;

//创建起止颜色带

IAlgorithmicColorRamp pAlgorithmicColorRamp =newAlgorithmicColorRampClass();

pAlgorithmicColorRamp.Size = 255;

pAlgorithmicColorRamp.FromColor = pFromRgbColor asIColor;

pAlgorithmicColorRamp.ToColor = pToRgbColor asIColor;

bool btrue=true;

pAlgorithmicColorRamp.CreateRamp(out btrue);

//选择拉伸颜色带符号化的波段

pRStretchRender.BandIndex = 0;

//设置拉伸颜色带符号化所采用的颜色带

pRStretchRender.ColorRamp = pAlgorithmicColorRamp asIColorRamp;

pRasterRender.Update();

//符号化RasterLayer

pRasterLayer.Renderer = pRasterRender;

}

catch(Exception Err)

{

    MessageBox.Show(Err.Message,"提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

}
原创粉丝点击