首页 栅格数据生成专题图

栅格数据生成专题图

举报
开通vip

栅格数据生成专题图4.7符号化之Renderer( 渲染)体系 ArcGIS Engine9.3对GIS数据的符号化分为矢量数据渲染和栅格数据渲染两大类。接下来分别介绍FeatureRender和RasterRender。 4.7.1FeatureRender对象 FeatureRenderer是一个抽象类,它有15个子类负责进行不同类型的着色运算。它们都实现了IFeatureRenderer接口,这个接口定义了进行要素图层符号化的公共属性和方法。 可以通过IGeoFeatureLayer::Renderer属性获得一个要素...

栅格数据生成专题图
4.7符号化之Renderer( 渲染)体系 ArcGIS Engine9.3对GIS数据的符号化分为矢量数据渲染和栅格数据渲染两大类。接下来分别介绍FeatureRender和RasterRender。 4.7.1FeatureRender对象 FeatureRenderer是一个抽象类,它有15个子类负责进行不同类型的着色运算。它们都实现了IFeatureRenderer接口,这个接口定义了进行要素图层符号化的公共属性和方法。 可以通过IGeoFeatureLayer::Renderer属性获得一个要素图层的符号化对象 表四 要素符号化类型 描述 简单符号化 SimpleRender 唯一值符号化 UniqueValueRender 双变量唯一值符号化 BiUniqueValueRender 图表符号化 ChartRender 分类等级符号化 ClassBreaksRenderer 点密度符号化 DotDensityRenderer 根据属性值设置符号大小进行符号化 ProportionalSymbolRenderer 依比例尺符号化 ScaleDependentRenderer 制图表达符号化 RepresentationRenderer 轨迹符号化(应用于TrackingAnaylyst扩CoTrackSymbologyRenderer(TrackingAnalyst) 展模块) 增强信息符号化(应用于EnhancedInfoRenderder(TrackingAnalyst) TrackingAnaylyst扩展模块) 唯一值文本符号化(应用于UniqueValueTextRenderer(TrackingAnalyst) TrackingAnaylyst扩展模块) 停止符号化(应用于网络分析扩展模块) NAStopRenderer(NetworkAnalyst) 要素定点符号化(应用于测量分析扩展模FeatureVertexRenderer(SurveyExt) 块) 用于绘制拓扑元素 SharedEdgeRenderer(EditorExt) 常用的要素符号化类型主要有以下6种类型,如图13所示: 图13 由于篇幅有限不再对每一种符号化类型的使用进行讲解,在后边的实例中将为读者演示如何进行唯一值符号化。 4.7.2RasterRender对象 RasterRender是一个抽象类,它有15个子类负责进行不同类型的着色运算。它们都实现了IRasterRender接口,这个接口定义了栅格图层符号化的公共属性和方法。可以通过IRasterLayer::Renderer属性获得一个栅格图层的符号化对象。 要素符号化类型 描述 栅格RGB符号化 RasterRGBRenderer 唯一值符号化 RasterUniqueValueRenderer 双变量唯一值符号化 RasterColormapRenderer 图表符号化 RasterClassifyColorRampRenderer 分类等级符号化 RasterStretchColorRampRenderer 点密度 符号化 RasterDiscreteColorRenderer 栅格符号化类型结构图如图14所示: 图14 以下代码片段是对一个RasterLayer进行RasterStretchColorRampRenderer符号化操作: /// /// StretchColorRamp符号化RasterLayer /// ///RasterLayer 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); } } 原创)基于ArcGIS Engine编写的 ColorRamp对栅格渲染代码 上一篇 / 下一篇 2010-03-01 16:25:22 / 个人分类:ArcGIS 查看( 167 ) / 评论( 1 ) / 评分( 0 / 0 ) 需要实现类似ArcMap中的单击TOC控件来对图层进行渲染,示例代码中主要针对的是矢量图层 FeatureLayerClass, 没有针对RasterLayerClass, 不过原理是很类似的,我们都知道对栅格渲染主要有三种方式: 1.Raster Unique value Renderer 唯一值渲染 2.Raster Classify Renderer 分类渲染 3.Raster Stretch Renderer 色带渲染 而现在要实现ColorRamp 色带的渲染: 原理主要就是 利用一个axSymbolControl来承载AE中的ColorRamp枚举值,然后主程序TOC控件调用选中的Style. Item 样式并赋值给IRasterStretchColorRampRenderer的对象实例。 关键源代码是: 1. 在ColorSymbolForm的载入初始化时,添加ESRI中包含ColorRamp的样式: //Get the ArcGIS install location string sInstall = routin_ReadRegistry("SOFTWARE\\ESRI\\CoreRuntime"); //Load the ESRI.ServerStyle. file into the SymbologyControl axSymbologyControl1.LoadStyleFile(sInstall + "\\Styles\\ESRI.ServerStyle"); 2.选中其中的一个样式 public IStyleGalleryItem GetItem(ESRI.ArcGIS.Controls.esriSymbologyStyleClass styleClass) { m_StyleGalleryItem = null; //Disable ok button button1.Enabled = false; //Set the style. class axSymbologyControl1.StyleClass = styleClass; //Unselect any selected item in the current style. class axSymbologyControl1.GetStyleClass(styleClass).UnselectItem(); //Show the modal form. this.ShowDialog(); //Return the selected label style. return m_StyleGalleryItem; } 3. 选中样式时相应的事件 private void axSymbologyControl1_OnItemSelected(object sender, ESRI.ArcGIS.Controls.ISymbologyControlEvents_OnItemSelectedEvent e) { //Get the selected item m_StyleGalleryItem = axSymbologyControl1.GetStyleClass(axSymbologyControl1.StyleClass).GetSelectedItem(); //Enable ok button button1.Enabled = true; } 4.然后在主程序中添加TOC右击事件,用Stretch Renderer 色带渲染: private void axTOCControl_Temp_OnMouseDown(object sender, ITOCControlEvents_OnMouseDownEvent e) { if (e.button != 2) return; IBasicMap map = new MapClass(); ILayer layer = new RasterLayerClass(); object ther = new object(); object index = new object(); esriTOCControlItem item = new esriTOCControlItem(); //Determine what kind of item has been clicked on this.axTOCControl_Temp.HitTest(e.x, e.y, ref item, ref map, ref layer, ref other, ref index); if (layer == null) return; IRasterLayer rasterLayer = layer as IRasterLayer; if (rasterLayer == null) return; IRasterStretchColorRampRenderer pStretchColorRasterRenderer = new RasterStretchColorRampRendererClass(); IRasterRenderer pRasterRenderer = pStretchColorRasterRenderer as IRasterRenderer; pRasterRenderer.Raster = rasterLayer.Raster; pRasterRenderer.Update(); //Get the IStyleGalleryItem IStyleGalleryItem styleGalleryItem = null; //Create the form. with the SymbologyControl ColorSymbolForm. symbolForm. = new ColorSymbolForm(); //Get teh symbol item styleGalleryItem = symbolForm.GetItem(esriSymbologyStyleClass.esriStyleClassColorRamps); //Release the form. symbolForm.Dispose(); this.Focus(); if (styleGalleryItem == null) return; IColorRamp colorRamp = (IColorRamp)styleGalleryItem.Item; pStretchColorRasterRenderer.BandIndex = 0; pStretchColorRasterRenderer.ColorRamp = colorRamp as IColorRamp; pRasterRenderer.Update(); rasterLayer.Renderer = pStretchColorRasterRenderer as IRasterRenderer; this.axMapControl_Temp.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); this. axMapControl_Temp.SetBuddyControl(axMapControl_Temp); this.axTOCControl_Temp.Refresh(); }
本文档为【栅格数据生成专题图】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_633423
暂无简介~
格式:doc
大小:76KB
软件:Word
页数:9
分类:企业经营
上传时间:2017-09-05
浏览量:21