ArcGISEngine中的地图组成及图层控制接口函数全解

合集下载

ArcGIS Engine 中的地图组成及图层控制解析

ArcGIS Engine 中的地图组成及图层控制解析

湖南
一、 Element对象-Graphics Element 城市学院
❖ 2、MarkerElement
▪ 在Map视图或PageLayout视图中表现为点的形式。 ▪ MarkerElement实现了IMarkerElement接口,
IMarkerElement接口只提供了Symbol属性,用于设置点 的样式。
❖ 1、LineElement
▪ 在Map视图或PageLayout视图中表现为线的形式。 ▪ LineElement实现了ILineElement接口,ILineElement接
口只提供了Symbol属性,用于设置线的样式。
GIS二次开发—使用ArcGIS Engine 9.3
市政与测绘工程学院地理信息系统专业
湖南 城市学院
第六讲
地图组成及图层控制
GIS二次开发—使用ArcGIS Engine 9.3
市政与测绘工程学院地理信息系统专业
主要内容
湖南 城市学院
1
Element对象
2
MapGrid对象
3
MapSurround对象
4
Style对象
5
添加、删除图层数据
6
图层控制
GIS二次开发—使用ArcGIS Engine 9.3
GIS二次开发—使用ArcGIS Engine 9.3
市政与测绘工程学院地理信息系统专业
湖南
一、 Element对象-Graphics Element 城市学院
❖ 5、FillShapeElement
▪ FillShapeElement泛化出了CircleElement、 EllipseElement、PolygonElement和RectangleElement 等。

ArcGIS接口详细说明

ArcGIS接口详细说明

ArcGIS接口详细说明 (1)GeometryGeometry 库处理存储在特征类(feature classes)或其它图形要素(graphical elements)中的特征的geometry 或shape。

大多数用户交互的基本几何对象有Point 、MultiPoint 、Polyline 和Polygon 。

除了这些顶层的实体,还有作为Polylines 和Polygons 构建模块的几何体(geometries)。

这些是组成几何体的基元(primitives)。

它们是Segments、Paths 和Rings。

Polylines 和Polygons 由形成一条Path 的依次相连的Segments 组成。

一个Segment 包含两个不同的点,起点和终点,和一个定义从起点到终点的曲线的要素类型。

这种segments 有CircularArc、Line、EllipticArc 和BezierCurve。

所有的几何对象都可以有与它们顶点相关的Z、和IDs。

MISegmentCollection接口被Path,Ring,Polyline和Polygon四个类所实现,它们被称作是Segment 集合对象,使用这个接口可以处理组成Segment集合对象中的每一个子Segment对象。

使用ISegmentCollection接口可以为一个Segment集合对象添加,插入,删除Segment子对象。

ISegmentCollection接口SetCircle和SetRectangle方法提供了一种简单不需要添加Segment的情况下构建一个完成的Path,Ring,Polyline和Polygon的方法。

Geometry集合接口通过前边对于具体的Geometry对象的介绍可知,除了Point对象之外,其他几何对象都是通过其他几何对象集合构建而成。

如MultiPoint对象是点的集合,Path对象是Segment对象的集合,Polyline对象是Path对象的集合,Polygon对象是Ring对象的集合,Multipatch对象是Triangle Strip和Trangle Fan, Trangle,Ring对象的集合。

GIS应用开发5-ArcEngine常用控件解读

GIS应用开发5-ArcEngine常用控件解读

private void LoadMapDocument()
{ openFileDialog2.Title = "Open Map Document"; openFileDialog2.Filter = "Map Documents (*.mxd)|*.mxd";
openFileDialog2.ShowDialog();
件用于:
– 管理控件的外观、显示属性和地图属性; – 添加并管理控件中的数据层(data layers); – 装载Map文档(mxd)到控件中; – 从其它应用程序拖放数据到控件中; – tracking shapes and drawing to the display.
在可视化环境中,可以通过控件的“属性”页设 置控件的相关属性,也可以通过编程来设置。
使用MapControl控件的显示函数


简化和地图相互作用的成员
IMapControl3
������
Drawshape, Flashshape, DrawText,
TrackCircle, TrackLine, TrackPolygon, TrackRectangle
设置地图的可视区

控制显示的可视区域 可以设置多种shapes (geometries)
MapControl 对象
通过Map你可以访问所有的对象 Layers
Renderers Symbols FeatureClasses Workspaces
使用map和layers属性
提供直接访问Map和Layer对象的方法属性
IMapControl3
������ AddLayerFromFile, AddShapeFile, AddLayer, DeleteLayer,MoveLayerTo, Layer, Map

ArcGIS_Engine常用接口

ArcGIS_Engine常用接口

下面根据依赖关系的顺序对一些常用类库进行讨论。

模型图中在每个类库框的右上角显示了其序列号。

例如,作为ArcGIS体系结构基础的System类库,其编号为1,而编号为7的GeoDatabase类库依赖于模型图中其前面的6个类库--System、SystemUI、Geometry、Display、Server和Output。

System类库System类库是ArcGIS体系结构中最底层的类库。

System类库包含给构成ArcGIS的其他类库提供服务的组件。

System类库中定义了大量开发者可以实现的接口。

AoInitializer对象就是在System类库中定义的,所有的开发者必须使用这个对象来初始化ArcGIS Engine和解除ArcGIS Engine的初始化。

开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。

SystemUI类库SystemUI类库包含用户界面组件接口定义,这些用户界面组件可以在ArcGIS Engine中进行扩展。

包含ICommand、ITool和IToolControl接口。

开发者用这些接口来扩展UI组件,ArcGIS Engine开发人员自己的组件将使用这些UI组件,且一般是在高层次的类库中实现。

这个类库中包含的对象是一些使用工具对象,开发人员可以通过使用这些对象简化用户界面的开发。

开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。

Geometry类库Geometry类库处理存储在要素类中的要素几何图形或形状或其他图形元素。

大多数用户会遇到的基本几何图形对象为Point、MultiPoint、Polyline和Polygon。

除了这些顶级实体外,就是作为多义线和多边形的组成部分的几何图形,是组成几何图形的子要素。

它们是Segment、Path和Ring。

Polyline和Polygon由一系列相连接的、构成列Path的片段组成。

ArcEngine接口总结

ArcEngine接口总结

ArcGIS接口详细说明之个人开发心得1. 关于IField接口(esriGeoDatabase)2. 关于IFieldEdit接口(esriGeoDatabase)3. 关于IFields接口(esriGeoDatabase)4. 关于IPoint接口(esriGeometry)5. 关于IPointArray接口(esriGeometry)6. 关于IPointCollection接口(esriGeometry)7. 关于IPolyline接口(esriGeometry)8. 关于IGeometry接口(esriGeometry)9. 关于IArea接口(esriGeometry)10. 关于IEnvelope接口(esriGeometry)11. 关于IFeature接口(esriGeoDatabase)12. 关于IRow接口(esriGeoDatabase)13. 关于IFeatureClass接口(esriGeoDatabase)14. 关于ITable接口(esriGeoDatabase)15. 关于IFeatureCursor接口(esriGeoDatabase)16. 关于IQueryFilter接口(esriGeoDatabase)17. 关于IFeatureLayer接口(esriCarto)18. 关于IFeatureSelection接口(esriCarto)19. 关于IMap接口(esriCarto)20. 关于IPropertySet接口(esriSystem)21. 关于IFeatureWorkspace接口(esriGeoDatabase)22. 关于IWorkspaceEdit接口(esriGeoDatabase)23. 关于IWorkspaceFactory接口(esriGeoDatabase)24. 关于ITopologicalOperator接口(esriGeometry)25. 创建Buffer并选择里面的要素26. Merge要素Union要素27. 怎样从Table中获取具体需求值的Row28. 怎样ZoomInCenter29. 怎样读取一个字段内的所有值30. 怎样编辑更改属性字段的值31. 怎样将MapControl中的Map复制到PageLayoutControl中32. 怎样判断是否出于编辑状态33. 怎样用点创建一个Polygon34. 怎样运用属性来计算总面积35. 关于属性域的一些心得36. 怎样实现翻折Flip方法37. 回答cumtbGIS关于ITopologicalOperator接口Clip方法的问题38. 回答机器猫FJJ关于ISpatialFilter接口方法的问题(完整函数)39. 回答网友韶华响当当关于更改符号的代码(完整函数)40. 回答网友韶华响当当关于显示属性的代码(完整函数)1. 关于IField接口(esriGeoDatabase)IField接口的第一个属性AliasName(只读,获得字段的别名)IField接口的第二个方法CheckValue(Value)(方法,对于指定的属性字段,基于字段类型判断参数值是否有效,有效,则返回True,否则返回False)例子代码:'Get FieldSet pField = pFields.Field(6)bChkField = pField.CheckV alue(45.86)If bChkField = True Then'Add data to selected rows for the field selected.End If复制代码IField接口的其他属性均为只读属性,常用有Name(只读,获得字段的名称)例子代码:Dim pFields As IFieldsDim pField As IFieldDim pGeoDef As IGeometryDefDim pDomain As IDomainDim i As LongSet pFields = pFeatClass.FieldsFor i = 0 To pFields.FieldCount - 1Set pField = pFields.Field(i)If pField.Type = esriFieldTypeGeometry ThenSet pGeoDef = pField.GeometryDefElseDebug.Print pField.AliasNameDebug.Print pField.DefaultValueSet pDomain = pField.DomainDebug.Print pField.EditableDebug.Print pField.IsNullableDebug.Print pField.LengthDebug.Print Debug.Print pField.PrecisionDebug.Print pField.RequiredDebug.Print pField.ScaleDebug.Print pField.TypeDebug.Print pField.VarTypeEnd IfNext2. 关于IFieldEdit接口(esriGeoDatabase)所有该接口的属性均为可读可写,经常用与对新建字段的设置,因为字段一旦被设置,其基本属性就不能被更改,所以就需要该接口类型的变量去转换,方法为:IFeatureClass pFC_SCP_PT;IFieldEdit editPT = new FieldClass();pFC_SCP_PT.AddField((IField)editPT);如果在vb中去编写代码,则赋值和获取均为同一属性,而在C#中,为了区分设置和获取,属性均有两个,类似于Name和Name_2,这样就可以区分了,普遍用设置的带有_2的那个属性。

ArcEngine 所有接口汇总说明

ArcEngine  所有接口汇总说明

1.IField接口(esriGeoDatabase)IField接口的第一个属性AliasName(只读,获得字段的别名)IField接口的第二个方法CheckValue(Value)(方法,对于指定的属性字段,基于字段类型判断参数值是否有效,有效,则返回True,否则返回False)例子代码:1.S et pField = pFields.Field(6) ’第六个字段2.b ChkField = pField.CheckValue(45.86)3.I f bChkField = True Then……IField接口的其他属性均为只读属性,常用有Name(只读,获得字段的名称)例子代码:1.D im pFields As IFields2.D im pField As IField3.D im pGeoDef As IGeometryDef4.D im pDomain As IDomain5.D im i As Long6.S et pFields = pFeatClass.Fields7.F or i = 0 To pFields.FieldCount - 18. Set pField = pFields.Field(i)9. If pField.Type = esriFieldTypeGeometry Then10. Set pGeoDef = pField.GeometryDef11. Else12. Debug.Print pField.AliasName13. Debug.Print pField.DefaultValue14. Set pDomain = pField.Domain15. Debug.Print pField.Editable16. Debug.Print pField.IsNullable17. Debug.Print pField.Length18. Debug.Print 19. Debug.Print pField.Precision20. Debug.Print pField.Required21. Debug.Print pField.Scale22. Debug.Print pField.Type23. Debug.Print pField.VarType24. End If25.N ext2. IFieldEdit接口(esriGeoDatabase)所有该接口的属性均为可读可写,经常用与对新建字段的设置,因为字段一旦被设置,其基本属性就不能被更改,所以就需要该接口类型的变量去转换,方法为:IFeatureClass pFC_SCP_PT;IFieldEdit editPT = new FieldClass();pFC_SCP_PT.AddField((IField)editPT);如果在vb中去编写代码,则赋值和获取均为同一属性,而在C#中,为了区分设置和获取,属性均有两个,类似于Name和Name_2,这样就可以区分了,普遍用设置的带有_2的那个属性。

牟乃夏ArcEngine教程-第3章_地图操作基本功能

牟乃夏ArcEngine教程-第3章_地图操作基本功能

1. 空间数据与工作空间
• 工作空间
• 数据加载需要先打开相对应的工作空间。 • IWorkspace接口:IWorkspace接口定义了访问工作空间各种属性的方法,如工作 空间的连接属性等。通过IWorkspace接口可实例化现有数据集和创建新数据集。 由于WorkSpace是一个普通类,要获得WorkSpace,需要通过工作空间工厂 (WorkspaceFactory)来创建。 • IWorkspaceFactory接口:IWorkspaceFactory接口定义了创建、打开工作空间的方 法和对工作空间工厂信息成员的访问。用户可通过工作空间工厂管理不同类型 的工作空间,所有的工作空间对象都可通过此接口产生。 • IWorkspaceFactory接口的Create方法可产生一个新的工作空间对象,不同类型的 WorkspaceFactory对象,其Create方法产生的工作空间对象是不同的。 • IWorkspaceShapefileFactory接口的Open方法和OpenFromFile方法可以用于打开一 个已经存在的工作空间,Open方法用于打开一个SDE数据库,OpenFromFile方法 用于打开一个文件类型的数据,如*据与工作空间
• 1.空间数据
• 在GIS软件中,空间数据有多种不同的存在形式。按照不同的划分标准可 以分为矢量数据和栅格数据、GIS格式的地理数据与非GIS格式的数据 (如CAD格式等)、空间数据库数据(如个人数据库、ArcSDE数据库等) 和文件数据(ShapeFile格式、Coverage格式)等。
核心代码
3.数据加载
• 使用ControlsOpenDocCommandClass加载地图 • 使用ArcGIS Engine中封装好的类库资源 ControlsOpenDocCommandClass实现地图文档的加载的核心代码如 下:

ArcGIS_Engine课件讲述

ArcGIS_Engine课件讲述

3、ArcGIS 与 ArcObjects
ArcGIS是构建在ArcObjects组 件库之上。
ESRI 使用 ArcObjects来开发软
件和应用程序。 开发者使用ArcObjects去客户化
软件与创建自己的应用程序。 ArcObjects 是 ArcGIS 的核心。
目录
1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程
ArcGIS Engine类库:4、Display
❖ 用于控制地图显示。 ❖ 包含用于显示GIS数据的对象。 ❖ 包含符号、颜色等用来控制显示的对象。 ❖ 包含交互操作时提供给用户显示回馈的对象,如
MoveEnvelopeFeedback。
ArcGIS Engine类库:5、Server
❖ 用来连接并操作ArcGIS Server。 ❖ 访问ArcGIS Server的ServerObjectsManager对
Engine Developer Kit
.NET C++ VB Java
ArcObjects
Server Developer Kit
Java ADF
.NET ADF
C++
Customization
JavaScript
XML
HTML/DHTML .NET
Services
JSP ActiveX (ASP) Java ColdFusion
目录
1 ArcGIS体系结构 2 ArcGIS Engine是什么 3 ArcGIS Engine的主要功能 4 ArcGIS Engine类库 5 ArcGIS Engine控件 6 接口的概念 7 对象模型图的阅读 8 什么是地理数据库 9 ArcGIS Engine开发环境与流程

ArcGIS Engine开发第四章 地图显示

ArcGIS Engine开发第四章 地图显示
Байду номын сангаас
通过AddShapeFile方法加载图层的代码演示
Private Sub Form_Load() MapControl1.AddShapeFile "d:\data\world\", "country.shp" MapControl1.AddShapeFile "d:\data\world\", "rivers.shp" MapControl1.AddShapeFile "d:\data\world\", "cities.shp" End Sub
移动图层
通过MapControl类的MoveLayerTo方法可以实现图层的移 动
MoveLayerTo方法的具体用法:
object.MoveLayerTo (fromIndex, toIndex ) 其中: fromIndex :表示要进行移动操作的图层的索引 toIndex :表示移动操作后图层的新索引
newMapExtentYmax = .YMin - (pRectangle.YMin - .YMin) * zoomInHei ghtFactor + newMapExtentHeight
pEnvelope.PutCoords newMapExtentXmin, newMapExtentYmin, ne wMapExtentXmax, newMapExtentYmax
4.1.1 使用属性向MapControl中添加图层
(1)加载ArcGIS Engine控件
打开Visual Basic,新建一个工程,在【工程】菜单中选中 【部件】菜单,在对话框中选中“ESRI Controls”复选框,点 击“确定”按钮完成ArcGIS Engine控件的加载

ArcGIS_Engine类,接口一览表

ArcGIS_Engine类,接口一览表

第 3 页,共 147 页
Type
类型 Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface
9.1 Library esri3DAnalystUI esri3DAnalystUI esri3DAnalystUI esri3DAnalystUI esri3DAnalystUI esri3DAnalystUI esri3DAnalystUI esriArcCatalog esriArcCatalog esriArcGlobe esriArcGlobe esriArcGlobe esriArcGlobe esriArcGlobe esriArcGlobe esriArcGlobe esriArcGlobe
第 2 页,共 147 页
Type
类型 Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface
Type Interface
类型 Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface

ArcEngine接口大全二

ArcEngine接口大全二

ArcEngine接口大全二ArcEngine接口大全(二)《转自ESRI中国社区》7. 关于IPolyline接口(esriGeometry)IPolyline接口的第一个属性FromPoint与ToPoint(读写,设置或者读取该点的起始点和终止点,返回都是IPoint类型的变量)IPolyline接口的第二个方法QueryFromPoint (from )(方法,返回IPoint 类型的变量到参数from)IPolyline接口的第三个方法QueryToPoint (to )(方法,返回IPoint类型的变量到参数to)1.Public Sub t_ICurve_QueryPoints()2. Dim pID As New UID3. pID = "esriEditor.editor"4. Dim pEditor As IEditor5. Dim pApp As IApplication6. Set pApp = MxApplication7. Set pEditor = pApp.FindExtensionByCLSID(pID)8.9. If pEditor.SelectionCount <> 1 Then10. MsgBox "select one Curve"11. Exit Sub12. End If13.14. Dim pEnumFeat As IEnumFeature15. Dim pFeature As IFeature16.17. Set pEnumFeat = pEditor.EditSelection18.19. Dim pCurve As ICurve20. Dim pPointFrom As IPoint21. Dim pPointT o As IPoint22.23. Set pPointFrom = New Point24. Set pPointTo = New Point25.26. Set pFeature = pEnumFeat.Next27.28. While Not pFeature Is Nothing29. If pFeature.Shape.GeometryType = esriGeometryPolyline Or _30. esriGeometryPolyline Or esriGeometryLine Then31. Set pCurve = pFeature.Shape32. pCurve.QueryFromPoint pPointFrom33. pCurve.QueryToPoint pPointT o34. MsgBox "+++ICurve properties..." & vbCrLf _35. & "Curve.QueryFromPoint (x,y) = " & pPointFrom.X & "," & pPointFrom.Y & vbCrLf _36. & "Curve.QueryToPoint (x,y) = " & pPointTo.X & ","& pPointTo.Y & vbCrLf37. End If38. Set pFeature = pEnumFeat.Next39. WendIPolyline接口的第四个方法Generalize (maxAllowableOffset )(方法,用道格拉斯普克发来简化polyline)IPolyline接口的第五个方法Weed (maxAllowableOffsetFactor ) (方法,和方法Generalize类似,均为简化polyline的方法,不同的是参数。

ArcEngine复习指导

ArcEngine复习指导

GIS开发与应用GIS开发与应用——ArcEngine方法独立开发模式宿主型开发模式(组件式GIS 基本思想)组件式GIS 开发模式第1章GIS 二次开发概述1.1 GIS 开发模式GIS开发与应用——ArcEngine方法1.2 组件式GIS组件式 GIS (ComGIS) :采用了面向对象技术和组件式软件的GIS 系统(包括基础平台和应用系统)。

COM是组件式对象模型是组件式对象模型(Component Object Model) 的英文缩写。

GIS开发模式包括:开发模式包括:独立开发模式、宿主型开发模式、组件式GIS 开发模式。

组件式GIS 开发平台的结构有三种:基础组件、高级通用组件、行业性组件。

GIS开发与应用——ArcEngine方法基础组件——面向空间数据管理,提供基本的交互过程。

面向空间数据管理,提供基本的交互过程。

高级通用组件——面向通用功能。

行业性组件——抽象出行业应用的特定算法,固化到组件中,进一步加速开发过程。

GIS开发与应用——ArcEngine方法第二章 ArcEngine 基础2.1 ArcObjects 与ArcEngine 区别与联系2.2 ArcEngine 功能2.4 组件对象模型COM2.5 理解对象模型图OMD2.6 ArcEngine 类库结构GIS开发与应用——ArcEngine方法ArcEngine 从功能层次上分为五部分:1.基本服务—由GIS 核心ArcObjects 构成,几乎所有GIS应用程序都需要,如要素几何体(Feature geometry)和显示(Display)。

2.数据存取—ArcGIS Engine 可以对许多栅格和矢量格式进行存取,包括强大的地理数据库(Geodatabase)。

3.地图表达—创建和显示带有符号和标注的地图。

4.开发组件—用于快速开发应用程序的界面控件。

5.运行时选项—ArcGIS Engine 运行时可以与标准功能或其它高级功能一起部署GIS开发与应用——ArcEngine方法6-72.4.1 基本概念对象和类( Objects and Class )对象:系统中用来描述客观事物的一个实体,构成系统的一个基本单位。

ArcEngine接口大全

ArcEngine接口大全

ArcEngine接口大全[转载]ArcEngine接口大全(四)《转自ESRI中国社区》(2010-11-14 14:58:22)转载原文标签:分类:AE开发转载原文地址:ArcEngine接口大全(四)《转自ESRI中国社区》作者:GisEr27.怎样从Table中获取具体需求值的Row:1.ITable pTable = (ITable)pFC;2. int index =pTable.Fields.FindField("FieldName");3. IQueryFilter pQFilter = new QueryFilterClass();4. ICursor pCur;5. pCur = pTable.Search(pQFilter, false);6. IRow pRow = new Row();7. IRow pAnswerRow = new Row();8. pRow = pCur.NextRow();9. while (pRow != null)10. {11. string Value =pRow.get_Value(index).ToString();12. if (Value == "Value")13. {14. pAnswerRow = pRow;15. break;16. }17. pRow = pCur.NextRow();18. }28.怎样ZoomInCenter:1.Public Sub ZoomInCenter()2. Dim pMxDocument As IMxDocument3. Dim pActiveView As IActiveView4. Dim pDisplayTransform As IDisplayTransformation5. Dim pEnvelope As IEnvelope6. Dim pCenterPoint As IPoint7. Set pMxDocument = Application.Document8. Set pActiveView = pMxDocument.FocusMap9. Set pDisplayTransform =pActiveView.ScreenDisplay.DisplayTransformation10. Set pEnvelope = pDisplayTransform.VisibleBounds11. 'In this case, we could have set pEnvelope toIActiveView::Extent12. 'Set pEnvelope = pActiveView.Extent13. Set pCenterPoint = New Point14.15. pCenterPoint.x = ((pEnvelope.XMax - pEnvelope.XMin) / 2) +pEnvelope.XMin16. pCenterPoint.y = ((pEnvelope.YMax - pEnvelope.YMin) / 2) +pEnvelope.YMin17. pEnvelope.width = pEnvelope.width / 218. pEnvelope.height = pEnvelope.height / 219. pEnvelope.CenterAt pCenterPoint20. pDisplayTransform.VisibleBounds = pEnvelope21. pActiveView.Refresh22.End Sub29.怎样读取一个字段内的所有值:1. IFeatureClass pFC =m_SDEQuery.getFeatureClass();2. IFeatureCursor pFeaCur = pFC.Search(null,false);3. IFeature pFeature = pFeaCur.NextFeature();4. int pFieldIndex =pFC.Fields.FindField(this.m_cboQryFld.SelectedItem.Value.To String());5. System.Collections.ArrayList pArr = newSystem.Collections.ArrayList();6. while (pFeature != null)7. {8. string theFieldValue =pFeature.get_Value(pFieldIndex).T oString();9. if (!pArr.Contains(theFieldValue) &&(theFieldValue.Trim() != ""))10. {11. m_cboQryText.Items.Add(theFieldValue);12. pArr.Add(theFieldValue);13. }14. pFeature = pFeaCur.NextFeature();15. }30怎样编辑更改属性字段的值:1.IRow prow = (IRow)bendiFeatureC.GetFeature(1);2.MessageBox.Show(prow.Table.Fields.FieldCount.ToString());3.ITable ptable = (ITable)bendiFeatureC;4.IQueryFilter pqfilter = new QueryFilterClass();5.pqfilter.WhereClause = ""dkmc" = '北江路南郊一公里'";6.IFeatureCursor pfeatcur;7.pfeatcur = bendiFeatureC.Search(pqfilter, false);8.IFeature pfff = pfeatcur.NextFeature();9.while (pfff != null)10.{11. IRow prrr = (IRow)pfff;12. prrr.set_Value(prrr.Fields.FindField("dkmc"), "北江路南郊二公里");13. pfff = (IFeature)prrr;14. pfff.Store();15. pfff = pfeatcur.NextFeature();16.}31怎样将MapControl中的Map复制到PageLayoutControl中1.Public Sub CopyAndOverwriteMap()2. On Error GoT o CopyAndOverwriteMap_err3. Dim pObjectCopy As IObjectCopy4. pObjectCopy = New ObjectCopy5. Dim pToCopyMap As Object6. pToCopyMap = frmMap.AxMapControl1.Map7. Dim pCopiedMap As Object8. pCopiedMap = pObjectCopy.Copy(pToCopyMap)9. Dim pToOverwriteMap As Object10. pToOverwriteMap =PrintPageLayout.AxPageLayoutControl1.ActiveView.FocusM ap11. pObjectCopy.Overwrite(pCopiedMap, pToOverwriteMap)12. frmMap.AxMapControl1.MousePointer13.=ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPoin terArrow14. frmMain.StatusMessage.Text = ""15. PrintPageLayout.ShowDialog()16. Exit Sub17. CopyAndOverwriteMap_err:18. MsgBox(Err.Number & " - " & Err.Description,MsgBoxStyle.Critical, Application.ProductName & "- Copy Map")19. Exit Sub20.End Sub32怎样判断是否出于编辑状态:1.If m_pEditor.EditState = esriStateEditing Then2. m_pEditor.StartOperation3. '删除冗余节点4. DelSubPoint pMap5. m_pEditor.StopOperation "OK"6.End If33。

ArcGISEngine中的地图组成及图层控制接口函数全解

ArcGISEngine中的地图组成及图层控制接口函数全解
14
图层对象 -要素图层 -IFeatureLayer
IFeatureLayer接口的主要属性和方法: ? DataSourceType-返回图层的数据源属性; ? Search-返回一个ICursor的对象。
例:IFeatureLayer接口的Search方法(P87)
15
图层对象 -要素图层 -IFeatureLayer
? 教学重点:各对象、接口及接口的重要属性、方法
? 教学难点:在实际开发中运用各对象进行图层添加与删除 、各种设置等
? 教学课时:6
? 学术前沿:
湖南城市学院 GIS专业
地图对象
? IMap接口 ? IGraphicsContainer 接口 ? IActiveView 接口 ? IActiveViewEvents 接口 ? IMapBookmark 接口 ? ITableCollection 接口
DataSourceType的类型:
16
图层对象 -要素图层 -IGeoFeatureLayer
IGeoFeatureLayer接口继承了ILayer接口和 IFeatureLayer 两个接口,CadFeatureLayer 、 FeatureLayer、GdbRasterCatalogLayer 等3个图层类实 现了该接口。主要属性和方法有: ? SearchDisplayFeature-只显示复合查询要求的要素,
件中的文字可以使用 CadAnnotationLayer 对象 来操作。
下面的代码展示了在 ArcEngine 9.3中如何加载 DWG 文件:
using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.DataSourcesFile; private void AddCadLayers(string strCadPath, string strCadName, AxMapControl pMapControl)

ArcgisEngine(ae)接口详解(5):IGeometry几何基础操作

ArcgisEngine(ae)接口详解(5):IGeometry几何基础操作

ArcgisEngine(ae)接⼝详解(5):IGeometry⼏何基础操作//点操作~~~~~~~~~~~~~~~~~~~~~~~~~//通过坐标⽣成点IPoint point = new PointClass();point.PutCoords(100, 200);//获取点坐标double x = point.X;double y = point.Y;//线操作~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//通过点集⽣成线IPolyline polyline = new PolylineClass();//思路是通过点集接⼝IPointCollection添加线的点,创建线和⾯同样可⽤此⽅法IPointCollection pointColl = polyline as IPointCollection;point = new PointClass();point.PutCoords(100, 200);pointColl.AddPoint(point);point = new PointClass();point.PutCoords(300, 100);pointColl.AddPoint(point);//通过点集⽣成线完成~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//获取线的起点和终点IPoint pointStart = polyline.FromPoint;IPoint pointEnd = polyline.ToPoint;//获取线的长度double length = polyline.Length;//获取线的矩形范围(envelop),⾯的获取⽅式也⼀样//线和⾯都有envelope,不过点的envelop没有意义IEnvelope envelope = polyline.Envelope;//获取线是否是闭合的线bool isClosed = polyline.IsClosed;//把线的⽅向反转,就是起点和终点,点的顺序反转polyline.ReverseOrientation();//获取线的所有点,对于⾯同样可⽤此⽅法for (int i = 0; i < pointColl.PointCount; i++){IPoint point1 = pointColl.Point[i];}//⾯操作~~~~~~~~~~~~~~~~~~~~~~~~~~~IPolygon polygon = new PolygonClass();//通过点集⽣成线:与线⼀样//注意:⽣成⾯时点集要求第⼀个点做坐标和最后⼀个点的坐标⼀样,也可理解为同⼀个点添加了两次,否则会出错//获取⾯的周长length = polygon.Length;IArea area = polygon as IArea;//获取⾯的⾯积double area1 = area.Area;//获取⾯的所有点,跟线获取的⽅法⼀样//⼏何通⽤操作~~~~~~~~~~~~~~~~~~~~~~~~~~~//点线⾯都可以as到IGeometry,所有⼏何对象的类型都可以,因此所有⼏何类型接⼝都继承了IGeometryIGeometry geometry = polygon as IGeometry;//获取⼏何类型,可以区分出点,线,⾯等//如果有种情况获取到的⼏何对象的类型是IGeometry,那可以通过这个判断是什么⼏何类型,然后在as到对应的接⼝再做下⼀步操作esriGeometryType geometryType = geometry.GeometryType;//获取是否空⼏何对象//空⼏何对象和null不同,例如点对象可是没有点坐标,线对象没有⼀个点等等//空⼏何对象其中⼀种情况是,从feature获取到的⼏何对象,可能是空的,因为⼀条要素肯定有⼀个对应的⼏何对象,可是编辑时⼜可以不录⼊⼏何对象(⽽只是录⼊属性字段值)bool isEmpty = geometry.IsEmpty;//矩形范围(Envelope)操作~~~~~~~~~~~~~~~~~~~~~~~~~~~IEnvelope envelope2 = polygon.Envelope;//获取矩形的坐标,矩形⽤最⼩点(左下⾓的点)和最⼤点(右上⾓的点)两个点就⾜够表⽰double xmin = envelope2.XMin;double ymin = envelope2.YMin;double xmax = envelope2.XMax;double ymax = envelope2.YMax;//获取矩形的宽和⾼double height = envelope2.Height;double width = envelope2.Width;//通过坐标创建矩形envelope2 = new EnvelopeClass();envelope2.PutCoords(100, 200, 300, 400);//扩⼤和缩⼩//有两种情况,根据参数3设置,false=按长度,true=按⽐例//下例是⽔平扩⼤10(⽶),垂直扩⼤20(⽶)envelope2.Expand(10, 20, false);//下例是⽔平设为原来的0.8倍(可以理解为缩⼩了20%),垂直设为原来的1.1倍(可以理解为放⼤了10%) envelope2.Expand(0.8, 1.1, true);//移动//把矩形中⼼点移到某个点(实际是整个矩形移动)envelope2.CenterAt(point);//矩形转⾯//逻辑上矩形也是⾯,但在ae对象中IEnvelop和IPolygon不能互转,下⾯是edm的转换⽅法polygon = GeometryHelper.EnvelopeToPolygon(envelope);。

ArcEngine接口大全六

ArcEngine接口大全六

ArcEngine接口大全(六)《转自ESRI中国社区》44.Map接口在ArcMap中Map对象是由MXDocument对象的MapFrame对象管理,MapFrame是一个框架元素。

Map对象有双重身份,一方面是数据的管理容器,可以加载地理数据和图形元素,扮演了数据管理器的角色,另一方面它又可以让用户看到这些数据即扮演了数据显示器的角色,当加载数据到Map对象的时候,Map对象是数据的管理者;当改变视图范围,刷新地图的时候它是数据的显示者。

Map对象主要实现的接口由IMap,IGraphicContainer,IActiveView,IMapBookmarks 等接口。

IMap接口主要用于管理Map对象中的Layer对象,要素选择集对象,MapSourround对象,空间参考等对象。

Map对象可以显示图形元素(Graphics Element),Map对象通过IGraphicsContainer接口来管理这些元素对象,包括图形元素和框架元素。

IGraphicsContainer返回的是Map对象中处于活动状态的Graphics layer引用指针,它可以是一个Basicgraphicslayer,也可以是CompositeGraphicsLayer中的一个图层,或者是一个FDOGraphicsLayer注记图层。

45.IActiveView接口IActiveView接口定义了Map对象的数据显示功能。

使用该接口可以改变视图的范围,刷新视图。

IActiveView的PartialRefresh(esriViewGeography, pLayer, null)用于刷新指定图层:IActiveView的PartialRefresh(esriViewGeography, null, null) 用于刷新刷新所有图层:IActiveView的PartialRefresh(esriViewGeoSelection, null, null) 用于刷新所选择的对象:IActiveView的PartialRefresh(esriViewGraphics, null, null) 用于刷新图形元素:IActiveView的PartialRefresh(esriViewGraphics, pElement, null) 用于刷新指定图形元素IActiveView的PartialRefresh(esriViewGraphics, null, null) 用于刷新所有图形元素IActiveView的PartialRefresh(esriViewGraphicSelection, null, null)用于刷新所选择的图元。

ArcGIS_Engine类,接口一览表

ArcGIS_Engine类,接口一览表

Engine Core Core Core Core Core Core Core Core Core Core Core Core Core Core Core Core Core
Name IACAcetateLayer IACAcetateLayerAdmin IACAxl IACCalloutMarkerSymbol IACConnector IACFeatureLayer IACFeatureLayerAdmin IACGradientFillSymbol IACGroupRenderer IACHashLineSymbol IACImageLayer IACImageLayerAdmin IACLabelRenderer IACLayer IACLayerAdmin IACLineLabelPosition IACMap
第 3 页,共 120 页
Type
类型 Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface Interface
Engine Core Core Core Core Core Core Core Core Core Core Core Core Core Core Core Core Core
Name IACValueMapLabelRenderer IACValueMapRenderer IAOIBookmark IActiveView IActiveViewEvents IAnnoClass IAnnoClassAdmin IAnnoClassAdmin2 IAnnoClassAdmin3 IAnnotateFeature IAnnotateFeature2 IAnnotateLayerProperties

第二讲ArcGISEngine控件详解

第二讲ArcGISEngine控件详解
的每个工具条命令项的外观与其底层命令的Enabled、Bitmap和Caption属性同步。 更新频率由UpdateInterval属性控制, UpdateInterval为0时会停止自动更新, 这时可 以调用Update方法刷新每个工具条命令项的状态。 • 通过设置ToolbarControl的Customize属性可以使ToolbarControl处于定制模式, 开发 人员可以编程启动非模态定制对话框( CustomizeDialog), 定制对话框列出了所有的 控件命令以及任何自定义命令、工具集和菜单, 终端用户则可以打开对话框对 ToolbarControl上的命令添加、删除及改变命令项外观等。 • ToolbarControl维护着一个操作栈, 以便实现命令项的撤销( undo) 和重做( redo) 功 能。
MapControl、TOCC ontro l与Too lbarControl
• MapControl实现了接口ITOCBuddy 和接口IToolbarBuddy。ITOCBuddy 通过方法 GetActiveView( )返回IActiveView, TOCControl 通过方法SetActiveView( )设置 ActiveView, 这样MapControl与TOCControl就达到了交互。例如当从MapControl删 除一个图层时, 该图层也会从TOCControl删除,同样当从TOCControl中取消某个图 层的Visibility复选框时, 该图层在MapControl也不再可视。IToolbarBuddy 用于设 置MapControl的CurrentTool属性,ToolbarControl也维护着一个CurrentTool属性, 当
用于生成一幅成品地图
• 实现了IMxContent接口, 可写入地图文档
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

pPoint.PutCoords(1, 5);
pPolyline.FromPoint = pPoint; pPoint.PutCoords(80, 5); pPolyline.ToPoint = pPoint;
7
湖南城市学院
GIS专业
GIS二次开发
•使用ArcGIS Engine 9.3
Map对象
主要内容
A. 图层对象 B. 屏幕显示对象 C. 页面布局对象 D. 地图排版 E. Element对象
• • • • • ILayer接口 要素图层 CAD文件 TIN图层 GraphicsLayer
• • • •
Page对象 SnapGrid对象 SnapGuides对象 RulerSettings对象
例:IFeatureLayer接口的Search方法(P87)
15
图层对象-要素图层-IFeatureLayer
DataSourceType的类型:
16
图层对象-要素图层-IGeoFeatureLayer
IGeoFeatureLayer接口继承了ILayer接口和
IFeatureLayer两个接口,CadFeatureLayer、 FeatureLayer、GdbRasterCatalogLayer等3个图层类实 现了该接口。主要属性和方法有: • SearchDisplayFeature-只显示复合查询要求的要素,
出现Tip; • TipText-图层提示文字;
• SpatialReference-设置图层的空间参考。
13
图层对象-要素图层
1. 要素图层用于表示离散的矢量对象的信息。
2. 要素图层的主要接口主要有: • IFeatureLayer接口 • IGeoFeatureLayer接口 • IGeoDataset接口
using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.DataSourcesFile; private void AddCadLayers(string strCadPath, string strCadName, AxMapControl pMapControl) { IWorkspaceFactory pCadFactory = new CadWorkspaceFactoryClass(); IWorkspace pWorkspace = pCadFactory.OpenFromFile(strCadPath, 0); ICadDrawingWorkspace pCadDrawingWorkspace = pWorkspace as ICadDrawingWorkspace; ICadDrawingDataset pCadDataset = pCadDrawingWorkspace.OpenCadDrawingDataset(strCadName); ICadLayer pCadLayer = new CadLayerClass(); pCadLayer.CadDrawingDataset = pCadDataset; pMapControl.AddLayer(pCadLayer, 0); }
IGraphicsContainer接口
IGraphicsContainer接口的AddElement方法
ILineElement pLineElement = new LineElementClass(); IElement pElement = pLineElement as IElement;
pElement.Geometry = pPolyline as IGeometry;
IGraphicsContainer pGraCon = pMap as IGraphicsContainer;
pGraCon.AddElement(pElement, 0);
axMapControl1.ActiveView.PartialRefresh(esriViewDraw Phase.esriViewGraphics, null, null); 8
如矢量点、线、 面数据,栅格数 据,TIN数据等。
如指北针、 图例等。
4
湖南城市学院
GIS专业
GIS二次开发
•使用ArcGIS Engine 9.3
Map对象
IMap接口
例:选择要素
IMap pMap = axMapControl1.Map; IActiveView pActiveView = pMap as IActiveView; IEnvelope pEnvelope = axMapControl1.TrackRectangle(); ISelectionEnvironment pSelEnv = new SelectionEnvironmentClass(); pSelEnv.DefaultColor = GetRGB(110, 120, 210); pMap.SelectByShape(pEnvelope, pSelEnv, false); pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null); null,
刷新地图
10
湖南城市学院
GIS专业
GIS二次开发
•使用ArcGIS Engine 9.3
Map对象
IActiveView接口
IActiveView接口的重要属性和方法:
• Extent—返回Map对象当前视图的范围,返回值为一
个Envelope对象;
• FullExtent—返回Map对象当前视图的全图范围; • ScreenDisplay—用于指向一个ScreenDisplay对象; • PartialRefresh—Map对象视图的刷新方法,通过指定 esriViewDrawPhase参数,可以实现不同方式的局部刷 新。 11
的单个要素,返回一个IArray数组对象。
20
图层对象/ CAD文件
Hunnan City University
湖南城市学院
Map对象能够载入多种格式的地理和非地理数据,其中便包括AutoCAD的DWG文件。 DWG文件是两种不同形式的 混合体 :一是要素图层,保存矢量数据,使用FeatureLayer 对象管理;二是栅格图像,使用CadLayer对象管理。 当DWG文件载入Map对象时,ArcEngine将CAD元素分为4种类型:点、线、多边形和标 注,并在要素的属性表中建立标识字段,而不按照DWG文件本身的图层号进行分层。CAD文 件中的文字可以使用CadAnnotationLayer对象来操作。 下面的代码展示了在ArcEngine 9.3中如何加载DWG文件:
6
湖南城市学院
GIS专业
GIS二次开发
•使用ArcGIS Engine 9.3
Map对象
IGraphicsContainer接口
IGraphicsContainer接口的AddElement方法
IMap pMap = axMapControl1.Map;
IPolyline pPolyline = new PolylineClass(); IPoint pPoint = new PointClass();
• 图形元素 • 框架元素
12
图层对象-ILayer接口
ILayer接口是所有图层类都实现的接口,该接口定义了所
有图层的公共方法和属性。 • Name-返回图层名称; • MaximumScale(MinimumScale)-显示或设置图层可以 出现的最大(最小)比例尺;
• ShowTips-鼠标放在图层中某个要素上的时候,是否会
选择集。
18
图层对象-要素图层-ILayerFields
ILayerFields接口提供了Field、FieldCount、
FieldInfo和FindField等属性和方法,用于获取要素类 的字段信息。
19
图层对象-要素图层-IIdentify
IIdentify接口定义了一个方法Identify,用于获取图层
集的属性和方法。 • Add-将本图层的一个要素添加到图层的选择集中; • SelectFeatures-使用一个过滤器把符合要求的要素放 入图层的选择集中;
• Clear-把图层的所有选择集清空。
注:选择集有两种,要素选择集和元素选择集, PageLayout只有元素选择集,Map则有元素选择集和要素
图层对象
• ILayer接口 • 要素图层 • CAD文件 • TIN图层 • GraphicLayer
屏幕显示对象 页面布局对象
3
湖南城市学院
GIS专业
GIS二次开发
•使用ArcGIS Engine 9.3
Map对象
• 数据的管理容器; • 数据显示的主要载体; • 共35个接口,如IMap、IGraphicsContainer、 IActiveView、IActiveViewEvents、IMapBookmark、 ITableCollection等; • 能显示两类图形,一类是地理数据,一类是元素。
湖南城市学院
GIS专业
GIS二次开发
•使用ArcGIS Engine 9.3
地图对象
• IMap接口 • IGraphicsContainer接口 • IActiveView接口 • IActiveViewEvents接口 • IMapBookmark接口 • ITableCollection接口
第五讲 地图组成及图层控制(1)
1
• 课 题:地图组成及图层控制 • 目的要求:本章是GIS二次开发的重点内容之一,主要介 绍ArcGIS Engine中的地图对象、图层对象、屏幕显示对象 、页面布局对象、地图排版、Element对象、MapGrid对象 模型、MapSurround对象、Style对象等,通过介绍这些对 象,了解这些对象的相关接口及这些接口的属性、方法。 • 教学重点:各对象、接口及接口的重要属性、方法 • 教学难点:在实际开发中运用各对象进行图层添加与删除 、各种设置等 • 教学课时:6 • 学术前沿:
相关文档
最新文档