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

使用ServerStyle

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


接口名称功能描述
IStyleGallery用于管理Style Gallery
IStyleGalleryStorage管理Style Gallery中的符号库文件
IStyleGalleryClass控制符号库中Style Gallery Class
IEnumStyleGalleryItem枚举一组Style Gallery items
IStyleGalleryItem定义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
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值