ArcEngine 图层渲染(转)

简介:
1.Feature的基本渲染方法 Feature的常用的绘制方法包括:

1.简单绘制

2.唯一值绘制/多字段唯一值绘制

3.点密度/多字段点密度绘制

4.数据分级绘制

5.质量图(饼图/直方图)

6.按比例尺渲染

7.比例符号渲染

1.简单渲染

         简单渲染是ArcEngine的默认渲染,我们打开一个FeatureClass,建立一个atureLayer的时候,如果没有给FeatureLayer设置Renderer那么使用的就是简单渲染。简单渲染对整个图层中的所有Feature 使用同一种方式显示。

       简单渲染在ArcEngine中用ISimpleRenderer来表示。 ISimpleRenderer的使用方式如下: //假设layer是一个IFeatureLayer,获取IGeoFeatureLayer IGeoFeatureLayer geoLayer=layer as IGeoFeatureLayer; //构造SimpleRenderer ISimpleRenderer renderer=new SimpleRendererClass(); renderer.description="简单的渲染一下"; renderer.Label="符号的标签"; //假设sym是一个和该图层中Geometry类型对应的符号; renderer.Symbol=sym; //为图层设置渲染,注意需要刷新该图层。 geoLayer.Renderer=renderer;

2.独立值/多字段独立值渲染

         独立值/多字段独立值渲染,根据Feature的某一个字段的数据或某几个字段的组合结果来确定符号。 具有相同值或相同组合值的Feature,使用一样的符号。在使用多个字段的使用,每个字段的取值之间 使用分割符来连接。字段的取值顺序和在Renderer中设置的一样。 基本使用方式如下: //假设layer是一个IFeatureLayer,获取IGeoFeatureLayer IGeoFeatureLayer geoLayer=layer as IGeoFeatureLayer; //构造一个UniqueValueRenderer IUniqueValueRenderer renderer=new UniqueValueRendererClass(); //假设使用两个字段来渲染 renderer.FieldCount=2; //假设YSLX字段表示要素类型 //假设YSYT字段表示要数用途 renderer.set_Field(0,"YSLX"); renderer.set_Field(1,"YSYT"); //字段之间使用 | 来连接(默认取值) renderer.FieldDelimiter="|"; //设置默认符号 renderer.DefaultSymbol=defaultSymbol; renderer.DefaultLabel="默认Label"; //添加值 renderer.addValue("房屋|民居","民居房屋",MJSymbol); renderer.addValue("房屋|商业用地","商业用地",SYSymbol); ... //还可以通过set_Symbol,set_Heading、set_Value来修改上述设置。 geoLayer.Renderer=renderer.

3.点密度/多字段点密度

           点密度图通过在Feature的图形上打点来表示数据的数多,点越密集表示数据量越大。 还可以使用多字段的点密度图。这个使用同一个Feature上就可以显示几种不同的点。 注意点密度图有一个特殊的地方: 点密度图使用的符号是面状符号。而其中有需要包括点状符号。

接口使用如下:

IDotDensityRenderer renderer=new DotDensityRendererClass ();

IRendererFields flds=(IRendererFields)renderer;

flds.AddField("MJ ","面积");

flds.AddField("RK","人口");

IDotDensityFillSymbol ddSym=new DotDensityFillSymbolClass();

ISymbolArray symArray=(ISymbolArray)ddSym;

symArray.AddSymbol(mjSymbol);

symArray.AddSymbol(rkSymbol);

ddSym.Outline =(ILineSymbol)outlineSymbol ;

ddSym.DotSize =10 ;

ddSym.FixedPlacement=true;

renderer.DotDensitySymbol =ddSym;

renderer.DotValue=20 ; renderer.MaintainSize=this.m_dotdensityParam .MaintainSize ;

IGeoFeatureLayer geoLayer=(IGeoFeatureLayer)layer ;

geoLayer.Renderer =(IFeatureRenderer)renderer;

4.数据分级绘制(使用IClassBreaksRenderer)

5.饼图/直方图(使用IChartRenderer)

6.按比例尺渲染(使IScaleDependentRenderer)

7.比例符号渲染(使用 IProportionalSymbolRenderer )

2.图例的使用 图例的使用通过ILegendInfo接口。每个Renderer都实现了该接口,但是有时候该实现不好用, 所以也可以自己实现该接口。实现过程是比较简单的。

3.渲染层次 使用ILevelRender 接口。该接口可以指定一 当前的Level(-1)表示绘制全部。 然后 提供一个符号数组 ,注意每个符号要指定Level .如果不指定就默认为0。

4.透明度控制 透明度控制使用 ITransparencyRenderer 接口。该接口允许指定一个字段,字段取值用来表示透明度 注意 透明度的取值在0--100之间。

5.数据正规化 数据正规化用 IDataNormalization 接口来表示。该接口提供了几种正规化表示方法。

6.部分渲染 部分渲染通过使用IDataExclusion 来实现。该接口允许提供过滤语句来过滤掉不需要渲染的Feature。 同时也可以给他们制定特殊的符号。同时控制是否显示 7.旋转控制 旋转控制通过使用IRotationRenderer 接口来表示。该接口要求提供旋转角度的字段。同时要求提供旋转的 方法。

8.数据样本 IDataSampling 没有使用过。

9.外表关联

ITable dispTable=((IDisplayTable)feaLayer).DisplayTable ;//图层 ITable attTable;

//外表

IMemoryRelationshipClassFactory fac=new MemoryRelationshipClassFactoryClass ();

IRelationshipClass relClass=fac.Open("JZMJ",(IObjectClass)dispTable,"ZDDJH", IObjectClass)attTable,"G03", "Forward","Backward", RelCardinality.esriRelCardinalityOneToOne);

IDisplayRelationshipClass dispRelClass=feaLayer as IDisplayRelationshipClass ; dispRelClass.DisplayRelationshipClass(relClass,esriJoinType.esriLeftInnerJoin);

10.统计分析

ITableHistogram tableHistogram=new BasicTableHistogramClass (); tableHistogram.Table =((IDisplayTable)layer).DisplayTable ; tableHistogram.Field =fieldName ; object valueArray=null, freq=null; IBasicHistogram basicHistogram=(IBasicHistogram)tableHistogram;

basicHistogram.GetHistogram(out valueArray,out freq); IClassify classify=null;

int breakNum=6; //分类方法

switch(ClassifyMethod )

{

case ClassifyMethodName.lsClassifyMethodEqualInterval:

{

EqualIntervalClass eq=new EqualIntervalClass ();

eq.Classify (valueArray,freq,ref breakNum);

classify=(IClassify)eq; break;

}

case   ClassifyMethodName.lsClassifyMethodStandardDeviation:

{

StandardDeviationClass sd=new StandardDeviationClass ();

IStatisticsResults stat= histogram as IStatisticsResults ;

classify=sd as IClassify;

classify.SetHistogramData (valueArray,freq);

IDeviationInterval di=sd as IDeviationInterval ;

di.DeviationInterval=1;

di.Mean=stat.Mean;

di.StandardDev=stat.StandardDeviation;

classify.Classify (ref breakNum); break;

}

case ClassifyMethodName.lsClassifyMethodQuantile:

{

Quantile qc=new QuantileClass ();

qc.Classify (valueArray,freq,ref breakNum);

classify=qc as IClassify ;

break;

}

case ClassifyMethodName.lsClassifyMethodNaturalBreaks:

{

NaturalBreaksClass nb=new NaturalBreaksClass ();

nb.Classify (valueArray,freq,ref breakNum);

classify=nb as IClassify ; break;

}

case ClassifyMethodName.lsClassifyMethodDefinedInterval:

{

DefinedIntervalClass di=new DefinedIntervalClass ();

di.IntervalRange =this.m_classBreaksParam .Interval ; di.Classify (valueArray,freq,ref breakNum);

classify=di as IClassify ;

break;

}

default:

{

EqualIntervalClass eq=new EqualIntervalClass ();

eq.Classify (valueArray,freq,ref breakNum);

classify=(IClassify)eq;

break;

}

}

object o=classify.ClassBreaks ;

System.Array breakArray= o as System.Array;

现在breakArray中就是统计后的数据了

版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

分类: ArcEngine
0
0
« 上一篇: 使用IUniqueValueRenderer在同一层中根据字段渲染出不同颜色收藏
» 下一篇: AE数据加载
posted @ 2009-02-10 09:03 温景良(Jason) Views( 2450) Comments( 0) Edit 收藏
 
相关文章
|
8月前
|
JavaScript 定位技术 API
OpenLayers入门-第二篇、在vue3中使用elementplus制作图层控件,图层切换,显示隐藏,图层排序
OpenLayers入门-第二篇、在vue3中使用elementplus制作图层控件,图层切换,显示隐藏,图层排序
182 1
|
8月前
|
Android开发 开发者
Android开发之通过渲染纹理展示地球仪
该文阐述了如何使用OpenGL为三维物体添加纹理,以增强其真实感。纹理坐标是二维的,用于标记摊平后的“布料”对应物体的哪个部位,类似裁缝制作衣服的过程。在OpenGL中,启用纹理和深度测试是关键,还包括设置纹理参数、分配纹理编号、绑定位图材质等步骤。计算材质的纹理坐标后,通过`glDrawArrays`结合顶点和纹理坐标逐个贴图。最终示例展示了将世界地图贴到球体上形成逼真的地球仪效果。通过控制旋转、平移和缩放,能实现简单的三维动画效果。
89 2
Android开发之通过渲染纹理展示地球仪
|
8月前
|
测试技术
【sgTileImage】自定义组件:瓦片图拖拽局部加载、实现以鼠标为中心缩放
【sgTileImage】自定义组件:瓦片图拖拽局部加载、实现以鼠标为中心缩放
|
8月前
|
测试技术 定位技术
【sgDragMoveTile】自定义组件:拖拽瓦片图、地图、大图,滚动条对应同步滚动
【sgDragMoveTile】自定义组件:拖拽瓦片图、地图、大图,滚动条对应同步滚动
|
JavaScript 定位技术
WebGis——Pixi开发vue项目之使用遮罩实现图形缓慢填充颜色(三)
WebGis——Pixi开发vue项目之使用遮罩实现图形缓慢填充颜色(三)
平面设计实验五 图层及图层混合模式
平面设计实验五 图层及图层混合模式
99 0
|
JavaScript API 定位技术
WebGis——从零开始vue使用cesium添加多个图层以及坐标转化(三)
WebGis——从零开始vue使用cesium添加多个图层以及坐标转化(三)
|
定位技术
ArcEngine 样式对象StyleGallery的使用详解
        ArcMap里面存在很多预定义的样式对象,比如颜色、图例和各种符号等。用户也可以新建自己的样式对象,来满足实际开发的特殊需要。在进行arcgis engine 二次开发的过程中,用户可直接使用这些样式对象,以丰富制图内容,简化制图过程。
1922 0
|
C#
在WPF设计工具Blend2中制作立方体图片效果
原文:在WPF设计工具Blend2中制作立方体图片效果 --------------------------------------------------------------------------------引用时请保留以下信息:大可山 [MSN:a3news(AT)hotmail.
1076 0
|
移动开发 定位技术
leaflet加载视频图层
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gisdoer/article/details/82863039 适用场景: 动态云图 台风、风场、地图变迁等 原理: h5 video标签 L.
1103 0