ArcGIS Engine开发---图层符号化

来源:互联网 发布:数据结构与算法树 pdf 编辑:程序博客网 时间:2024/04/25 18:27

使用ServerStyle

如果熟悉ArcGIS Desktop的使用,就会对Style符号库文件有所了解,相对应的在ArcGIS Engine开发中对应的是ServerStyle符号库,它的结构体系如下图所示。可以通过专门的转换程序把ArcGIS Desktop Style符号库转换为ArcGIS Engine所能够使用的ServerStyle符号库。
用于获取ServerStyle符号库中的符号主要涉及到以下接口如表所示:


接口名称功能描述IStyleGallery用于管理Style GalleryIStyleGalleryStorage管理Style Gallery中的符号库文件IStyleGalleryClass控制符号库中Style Gallery ClassIEnumStyleGalleryItem枚举一组Style Gallery itemsIStyleGalleryItem定义Style Galle ry itme

4.5.1获取符号库中符号

如何获取到一个符号库中符号?接下来以获取ESRI符号库中名称为Rose的符号的流程:

1.首先构建一个ServerStyleGallery对象
2.其次使用IStyleGalleryStorage接口的AddFile方法加载ServerStyle文件
3.遍历ServerGallery中的Class,如果是FillSymbol使用IStyleGallery的GetItems方法返回一个可枚举的包含一系列StyleGalleryItem的EnumStyleGalleryItem对象。
4.遍历EnumServerStyleGalleryItme枚举对象中的StylegalleryItme如果名称是Rose即可获取ESRI符号库中名称为Rose的StylegalleryItme,然后通过IStyleGalleryItem的Item属性即可转换为ISymbol。

整个流程图如下图所示:

【转】 ArcGIS Engine开发 --图层符号化(三) - zhaoyb326 - zhaoyb326的博客

SymbologyControl控件

SymbologyControl用来显示ServerStyle符号库中的符号样式,可以选择在该控件上选择一个符号用来符号化一个图层或者作为一个Element的符号。使用SymbologyControl可以再设计的模式下在其属性页中加载ServerStyle符号库文件,同样也可以使用的LoadStyleFile和RemoveFile方法加载和移除Serverstyle符号库文件。运行效果如下图所示:

【转】 ArcGIS Engine开发 --图层符号化(三) - zhaoyb326 - zhaoyb326的博客

符号化之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种类型,如下图所示:

【转】 ArcGIS Engine开发 --图层符号化(三) - zhaoyb326 - zhaoyb326的博客

2. RasterRender对象

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

要素符号化类型描述RasterRGBRenderer栅格RGB符号化RasterUniqueValueRenderer唯一值符号化RasterColormapRenderer双变量唯一值符号化RasterClassifyColorRampRenderer图表符号化RasterStretchColorRampRenderer分类等级符号化RasterDiscreteColorRenderer点密度 符号化栅格符号化类型结构图如下图所示:

【转】 ArcGIS Engine开发 --图层符号化(三) - zhaoyb326 - zhaoyb326的博客

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


///<summary>

/// StretchColorRamp符号化RasterLayer

///</summary>

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

public void SetStretchColorRampRenderer(IRasterLayer pRasterLayer)
{

try
{

//创建RasterStretchColorRampRendererClass对象

IRasterStretchColorRampRenderer pRStretchRender= new RasterStretchColorRampRendererClass();

//QI到IRasterRenderer

IRasterRenderer pRasterRender=pRStretchRender as IRasterRenderer;
pRasterRender.Raster = pRasterLayer as IRaster;

pRasterRender.Update();

//创建两个起始颜色

IRgbColor pFromRgbColor = new RgbColorClass();
pFromRgbColor.Red = 255;

IRgbColor pToRgbColor = new RgbColorClass();
pToRgbColor.Blue = 255;

//创建起止颜色带

IAlgorithmicColorRamp pAlgorithmicColorRamp = new AlgorithmicColorRampClass();
pAlgorithmicColorRamp.Size = 255;
pAlgorithmicColorRamp.FromColor = pFromRgbColor as IColor;
pAlgorithmicColorRamp.ToColor = pToRgbColor as IColor;

bool btrue= true;
pAlgorithmicColorRamp.CreateRamp(out btrue);

//选择拉伸颜色带符号化的波段
pRStretchRender.BandIndex = 0;

//设置拉伸颜色带符号化所采用的颜色带
pRStretchRender.ColorRamp = pAlgorithmicColorRamp as IColorRamp;
pRasterRender.Update();

//符号化RasterLayer
pRasterLayer.Renderer = pRasterRender;


}

catch(Exception Err)
{

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

}

0 0
原创粉丝点击