ArcGIS Engine要素渲染和专题图制作(转)
一.Feature的基本渲染方法
Feature的常用的绘制方法包括:1.简单绘制;2.唯一值绘制/多字段唯一值绘制;3.点密度/多字段点密度绘制;4.数据分级绘制;5.质量图(饼图/直方图); 6.按比例尺渲染;7.比例符号渲染。
1.简单渲染
简单渲染是ArcEngine的默认渲染,我们打开一个FeatureClass,建立一个FeatureLayer的时候,如果没有给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 )
二.图例的使用
图例的使用通过ILegendInfo接口。每个Renderer都实现了该接口,但是有时候该实现不好用,所以也可以自己实现该接口。实现过程是比较简单的。
三.渲染层次
使用ILevelRender 接口。该接口可以指定一 当前的Level(-1)表示绘制全部。然后提供一个符号数组,注意每个符号要指定Level,如果不指定就默认为0。
四.透明度控制
透明度控制使用 ITransparencyRenderer 接口。该接口允许指定一个字段,字段取值用来表示透明度 注意 透明度的取值在0--100之间。
五.数据正规化
数据正规化用 IDataNormalization 接口来表示。该接口提供了几种正规化表示方法。
六.部分渲染
部分渲染通过使用IDataExclusion 来实现。该接口允许提供过滤语句来过滤掉不需要渲染的Feature。同时也可以给他们制定特殊的符号。同时控制是否显示
七.旋转控制
旋转控制通过使用IRotationRenderer 接口来表示。该接口要求提供旋转角度的字段。同时要求提供旋转的方法。
八.数据样本
IDataSampling 没有使用过。
九.外表关联
ITable dispTable=((IDisplayTable)feaLayer).DisplayTable ;//图层
ITable attTable;//外表
IMemoryRelationshipClassFactory fac=new MemoryRelationshipClassFactoryClass ();
IRelationshipClass relClass=fac.Open("JZMJ",(IObjectClass)dispTable,"ZDDJH",
IObjectClass)attTable,"G03",
"Forward","Backward",
esriRelCardinality.esriRelCardinalityOneToOne);
IDisplayRelationshipClass dispRelClass=feaLayer as IDisplayRelationshipClass ;
dispRelClass.DisplayRelationshipClass(relClass,esriJoinType.esriLeftInnerJoin);
十.统计分析
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中就是统计后的数据了。
from: http://www.gissky.net/Article/1870.htm
ArcGIS Engine要素渲染和专题图制作(转)的更多相关文章
- arcgis api for flex之专题图制作(饼状图,柱状图等)
最近公司给我一个任务,就是利用arcgis api for flex实现在地图上点(业务数据)直接显示饼状图以及柱状图的专题图制作,而不是通过点击点显示气泡窗口的形式来实现,这个公司已经实现了. 经过 ...
- ArcGIS Engine专题地图渲染器的实现(入门版)
专题地图(Thematic Map)是着重表示一种或数种自然要素特征或社会经济现象的地图 专题地图的内容由两部分构成: 1.专题内容——图上突出表示的自然或社会经济现象及其有关特征 2.地理基础——用 ...
- 将AE开发的专题图制作功能发布为WPS
AE开发可以定制化实现ArcGIS的地理处理功能,并实际运用于其他方面的工作,有时候我们还希望将AE开发的功能发布为网络地理信息处理服务(WPS),从而能在Web端更自由便利地调用所需要的地学处理算法 ...
- 【ArcGIS教程】专题图制作-人口密度分布图——人口密度分析
本篇以湖北省为例,制作人口密度分布图:这里所使用的为湖北省的省.市.县三个级别的行政区划矢量数据,以及居民点数据,进而进行密度分析. 示例数据来源于地理遥感生态网,网站地址www.gisrs.c ...
- ArcGIS Engine开发之旅01---产品组成、逻辑体系结构
原文:ArcGIS Engine开发之旅01---产品组成.逻辑体系结构 ArcGIS Engine 由两个产品组成: 面向开发人员的软件开发包(ArcGIS Engine Developer k ...
- ArcGIS Engine中如何获取Map中已经选择的要素呢(转)
ArcGIS Engine中如何获取Map中已经选择的要素呢 1.使用IEnumFeturea对象获取map中的FeatureSelection,该方法可以获取所有图层的选择要素.IMap中的Fe ...
- ArcGIS Engine效率探究——要素的添加和删除、属性的读取和更新
ArcGIS Engine效率探究——要素的添加和删除.属性的读取和更新 来自:http://blog.csdn.net/freewaywalker/article/details/23703863 ...
- C#+ArcGIS Engine 获取地图中选中的要素
转自 C#+ArcGIS Engine 获取地图中选中的要素 C#+ArcGIS Engine 获取地图中选中的要素 提供一种简单遍历获取地图中选中要素的方法,代码如下: List<IFeatu ...
- ArcGIS Engine中删除要素的几种方法总结
转自原文 ArcGIS Engine中删除要素的几种方法总结 /// <summary> /// 通过IFeature.Delete方法删除要素 /// </summary> ...
随机推荐
- SQL Server存储过程Return、output参数及使用技巧
SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...
- POI XSSF与HSSF的 使用区别
首次写博客,希望能坚持下去,一点一滴的积累,内容不多也不深,但愿我的分享,能帮助和我一样的新人们解决问题 最近给项目中添加了一个导入excel表格的功能,然而在功能开发结束后测试,发现报错. 报错信息 ...
- javascript的异步编程方法
一,callback 回调函数 即函数f1和函数f2的关系是f1(f2()); f2作为f1()的回调函数,在f1执行过程中就开始执行f2,先执行线程的主要逻辑,将比较耗时的任务放在后面执行. 回调函 ...
- qgroundcontrol开发环境搭建源码编译
qgroundcontrol是一款无人机地面站开源软件,C++/QT开发 在https://github.com/mavlink/qgroundcontrol上就能找到,选择稳定版下载最新的是2.6 ...
- (spring-第17回【AOP基础篇】) 创建增强类
一. 增强类包含的信息: a) 横切逻辑(插入的具体代码) b) 部分连接点信息(在方法的哪个位置插入代码,比如方法前.方法后等). 二. 增强的类型 每一种增强有一个需要实现的增强类 ...
- maven .assembly
配置文件中 配置好Assemblyc插件. 功能:打依赖jar包. java代码如下: <assembly xmlns="http://maven.apache.org/plugins ...
- sqlserver08评估期已过的解决方法
打开sqlserver出现提示:评估期已过.有关如何升级的测试版软件的信息,请访问http://www.microsoft.com/sql/howtobuy 解决方法如下: 第一步:进入开始菜单--- ...
- C++学习笔记22:设备
设备类型 设备文件的性质 设备文件不是普通的磁盘文件 读写设备的数据需要与相应的设备驱动器通信 设备文件的类型 字符设备:读写串行数据字节流,如串口.终端等 块设备:随机读写固定尺寸数据块,如磁盘设备 ...
- 手机自适应meta设置
<meta name="format-detection" content="telephone=no"><meta name="v ...
- 利用move_base导航--42
摘要: 原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 各位博友好长时间又没有写博客了,突然发现上班和在学校是不一样的,在公司的却没有时间写博客了,不过 ...