当前位置:首页 > Gis开发重点
TOC控件图层操作&鹰眼功能设计
Ilayer是所有图层类都实现的接口,该接口定义了所有图层的公共方法和属性;IBasicMap是IMap接口的一个子集,可用于管理Map对象中的Layer对象等。
在ArcMap中,要调整图层的现实顺序,只需要简单的鼠标拖拽就可以完成,既简单又直观。但是TOCControl控件并未实现此功能。本实例即实现此功能。 在本实例中主要利用TOCControl控件的OnMouseDown、OnMouseUp两个事件和HitTest()、Update()方法。
OnMouseDown事件方法的主要功能是获取源图层pMovelayer。 OnMouseUp事件方法的主要功能是: 1) 获取目标图层及其索引号; 2) 利用IMap提供的Movelayer(pMoveLayer, Toindex)将源图层pMoveLayer移到目标图层(Toindex)的下方;
3)使用ITOCControl提供的Update()方法更新TOCControl控件中显示的内容。
Envelope对象
Envelope也称包络线,是一个矩形区域,是每个几何形体的最小外接矩形。每个Geometry都拥有一个Envelope。
IEnvelope是包络线对象的主要接口。它定义了Xmax、Xmin、Ymax、Ymin、Height和Width等属性,用于获取或设置一个存在的包络线对象的空间坐标。 IEnvelope接口提供了一些方法,例如: Expand:用于按比例缩放包络线的范围。
Offset:是一个偏移方法,通过一个设定的(X,Y)移动包络线。 CenterAt:通过改变包络线的中心点来移动包络线。 PutCoords:通过指定的坐标点来构造包络线。
Map对象
Map对象是ArcEngine的主要组成部分。Map对象既是数据的管理容器,同时也是数据显示的主要载体。
Map对象的主要接口有IMap、IActiveView、IActiveViewEvents、IMapBookmark、IGraphicsContainer、ITableCollection等。
Imap接口主要用于管理Map对象中的layer对象。常用的方法或属性包括:
ActiveGraphicsLayer: 地图的活动图形图层,如果没有则会自动创建一个存放图形的图层。 AddLayer:向地图中添加单个图层;
AddMapSurround:向图层中添加辅助图形元素(如:比例尺、图例等) ClearLayer:从地图中移除所有图层。 ClearSelection:清除地图选择集。 DeleteLayer:从Map中删除图层。
DeleteMapSurround:从地图中删除辅助图形元素。 DistanceUnits:地图的距离单位。
FeatureSelection:地图中选择的要素。 LayerCount:地图中图层的数目。 Layers:地图中的图层集合。
IGraphicsContainer接口主要用于管理图形元素(包括图形元素和框架元素)。 IGraphicsContainer接口提供了以下主要方法:
AddElement: 添加元素、UpdateElement: 更新元素、DeleteElement: 删除元素
IActiveView接口是Map对象最主要、最常用接口之一,该接口定义了Map对象的数据显示功能。可以在Map上绘制图形、改变视图范围等。
Arc Engine中PageLayout和Map对象都实现这个接口,分别 代表了布局视图和数据视图。
IActiveView接口提供的主要属性和方法有:
Extent属性:用于返回Map对象当前的视图范围,是一个Envelope对象。 FullExtent属性:用于返回视图的全图范围。
ScreenDisplay属性:用于指向一个ScreenDisplay对象
PartialRefresh方法:该方法通过指定esriViewDrawPhase参数,可以实现不同方式的局部刷新。
Layer对象
Map对象是用来装载地理数据的,而这些数据又是以图层的形式放入地图对象中,Layer作为地图图层的装载单位。
Layer本身没有装载数据,其作用是获得数据的引用,用于管理数据源的连接。 Ilayer是所有图层类都实现的接口。
Point对象
Point对象代表一个0纬的具有X、Y坐标的几何对象。
Ipoint接口定义了Point对象的属性和方法, Point可以使用PutCoords方法创建,也可以使用IConstructPoint接口来创建。 Element对象
Element对象就是地图上不保存到数据库中的元素。例如DrawShape和DrawText方法绘制的图形都是Element对象。
IElement是所有图形元素和框架元素类都能实现的接口。
LineElement和MarkElement是最简单的图形元素。ILineElement接口只提供了一个Symbol属性,用于设置线的样式。IMarkElement接口也只提供一个Symbol ,用于设置点的样式。
FillShapeElement是一个抽象类,该类泛化出CircleElement、EllipseElement、PolygonElement和RectanguleElement等。
该类实现了IFillShapeElement接口,通过接口提供的Symbol属性可以设置元素的样式, Symbol必须是Ifillsymbol对象。 MapSurround对象
MapSurround是一个修饰地图的辅助图形元素对象,该对象会根据Map对象的变化而做出反应。例如地图视图范围发生变化后,ScaleBar对象也会自动调整。 Color对象
Color对象是一个抽象类,它又泛化为5个类:CmykColor、GrayColor、HlsColor、HsvColor和RgbColor,它们分别对应的接口为: ICmykColor、IGrayColor、IHlsColor、IHsvColor和IRgbColor。
专题地图制作
分层设色法使用的主要对象及接口: ColorRamp对象
在专题地图制作中,我们常常会用到一个颜色带,而不是单一的颜色。 ArcEngine中ColorRamp类的对象就是用于产生颜色带,它实现了IColorRamp接口,定义了一系列颜色带公共方法。
ColorRamp还有4个子类,分别是:AlgorithmicColorRamp、RandomColorRamp、MultipartColorRamp和PresetColorRamp。
AlgorithmicColorRamp颜色带是通过指定起始和终止的颜色,中间的颜色通过规则计算,生成一组有序颜色带。
RandomColorRamp颜色带是在给定的颜色范围内,随机生成一组颜色带,这个颜色范围是HSV颜色模型的。
MultipartColorRamp颜色带是用多种叠加方法生成一组颜色带。
PresetColorRamp颜色带是根据预设颜色进行调整,生成一组颜色带。
Symbol对象
Symbol就是用来在地图上修饰要素或者图形元素的对象。 GIS中的离散实体分为3种:点、线、面。 ArcEngine中分别用MarkerSymbol、LineSymbol和FillSymbol来表示,此外还有:TextSymbol用于文字标注,3Dchart符号用于显示饼图等3维对象。
MarkerSymbol对象是用于修饰点对象的符号。它拥有12个子类:ArrowMarkerSymbol、BarChartSymbol、CharacterMarkerSymbol、PieChartSymbol等等。 所有的MarkerSymbol类都实现了IMarkerSymbol接口,定义了Angle、Color、Size、Xoffset、Yoffset等属性。
LineSymbol对象是用于修饰线型几何对象的符号。
ILineSymbol作为其接口,定义了两个公共属性:Color和Width。
LineSymbol类是抽象类,该类泛化出8个类:CartographicLineSymbol、HashLineSymbol、MarkerLineSymbol、MultiLayerLineSymbol、PictureLineSymbol、SimpleLine3DSymbol、SimpleLineSymbol和TextureLineSymbol。
GradientFillSymbol使用渐变颜色进行填充,该类实现了IGradientFillSymbol接口。 ColorRamp属性用于设置这个渐变填充符号的颜色带,在设置颜色条的时候,IntervalCount属性设置用户使用的颜色梯度。
Style属性用于设置渐变填充的样式,系统提供了4种样式:esriGFSLine、
esriGFSRectangular、esriGFSCircular和esriGFSBuffered,它们决定了符号是采用线、矩形、圆形或缓冲的填充方法。
专题地图常用表示方法及设计
几种常用表示法使用的主要对象及接口: FillSymbol对象
DotDensityFillSymbol是一种基于数据的点密度填充符号。 它一般与DotDensityRenderer着色对象一起使用,由MarkerSymbol组成的随机位置点来显示数据属性,而面积内的点的个数则由DotDensityRenderer对象计算出来。
该对象实现了IDotDensitySymbol接口,通过该接口可以设置填充符号的属性,如Marker的数量、尺寸、颜色等属性;BackgroundColor用于设置填充区域的背景颜色。Color属性设置点的颜色,OutLine属性用于设置点的外框。
3DChartSymbol
3DChartSymbol是一个抽象类。它包含3个子类:BarChart、PieChart、StackedChart。 3DChartSymbol实现了多个接口,如:IChartSymbol、IBarChartSymbol、IPieChartSymbol和IStackedChartSymbol。
IChartSymbol接口主要用于计算一个ChartSymbol对象中的柱状和饼状部分的尺寸。 使用3D符号着色时,符号可能不止一种,这时可以使用ISymbolArray接口来管理一个着色对象中的多个参与着色的符号对象。
BarChartSymbol对象实现了IBarChartSymbol接口,该对象使用不同类型的柱子来表示一个要素的不同属性。柱子的高度代表该属性值的大小。
VerticalBar属性用于确定使用水平还是垂直的柱子。Width和Spacing属性可以设置柱子间的空隙,Axes属性设置每个柱子的轴线。
PieChartSymbol对象实现了IPieChartSymbol接口。该接口定义了饼图的外观属性。例如ClockWise属性确定饼图中的着色方向,True则对应顺时针分布;UseOutline属性设置为True时,可设置饼图外框轮廓线。
AE中提供了多个着色对象用于生成专题图,可以使用标准着色方案,也可以自定义着色方案。标准着色方案都是对一个图层中的所有要素进行渲染。如果要对图层中的部分要素单独着色,则可以通过对这些要素绘制图形元素或将需着色的对象放入选择集中,为选择集创建一个新图层,然后对新图层着色的方法来实现。 SimpleRenderer
该方法是使用单一符号进行着色分类,不涉及对要素图层数据的分析处理。对同一图层中的所有元素使用同一种符号。 ClassBreakRenderer
该方法是也称为分级着色法,通过要素图层中要素的某个数值字段的值,根据用户设定将,这些值分为多个等级,每个级别用不同的Symbol显示。
ClassBreakRenderer对象实现了IClassBreakRenderer接口,该接口提供了分级显示的
共分享92篇相关文档