ArcGISEngine中的地图组成及图层控制接口函数全解
ArcEngine接口详细说明

1. IField 接口(esriGeoDatabase)
IField 接口的第一个属性 AliasName(只读,获得字段的别名) IField 接口的第二个方法 CheckValue(Value)(方法,对于指定的属性字段,基于字 段类型判断参数值是否有效,有效,则返回 True,否则返回 False) 例子代码: IFeatureClass pFC_SCP_PT; editPT = new FieldClass(); editPT.Precision_2 = 8; editPT.Scale_2 = 3; _2 = "ELEV1"; editPT.Type_2 = esriFieldType.esriFieldTypeDouble; IField 接口的其他属性均为只读属性,常用有 Name(只读,获得字段的名称)
5. ITable 接口(esriGeoDatabase)
ITable 是把要素类当成一个表格来看,每一列对应一个字段(Field),每一行对应一 个要素(Feature),所以对要素类(IFeatureClass)接口的操作均可以类似的在 Itable 接口中找到。 两个接口可以进行如下强制转化:
ARCENGINE 接口详细说明
目录 ARCGIS 接口详细说明.......................................................................................................... 1 1. IField 接口(esriGeoDatabase)................................................................................... 2 2. IFieldEdit 接口(esriGeoDatabase)............................................................................. 2 3. IFields 接口(esriGeoDatabase) ................................................................................. 2 4. IRow 接口(esriGeoDatabase)....................................................................................... 3 5. ITable 接口(esriGeoDatabase) ..................................................................................... 3 6. IArea 接口(esriGeometry)............................................................................................ 4 7. IEnvelope 接口(esriGeometry)..................................................................................... 4 8. IPoint 接口(esriGeometry)........................................................................................... 5 9. IPointArray 接口(esriGeometry)................................................................................... 5 10. IPointCollection 接口(esriGeometry).......................................................................... 6 11. IPolyline 接口(esriGeometry)..................................................................................... 6 12. IGeometry 接口(esriGeometry).................................................................................. 6 13. IFeature 接口(esriGeoDatabase)................................................................................ 7 14. IFeatureLayer 接口(esriCarto).................................................................................... 8 15. IFeatureClass 接口(esriGeoDatabase) ........................................................................ 8 16. IFeatureCursor 接口(esriGeoDatabase).................................................................... 18 17. ISpatialFilter 接口(esriGeoDatabase)........................................................................ 19 18. IQueryFilter 接口(esriGeoDatabase) ........................................................................ 21 19. IFeatureSelection 接口(esriCarto)............................................................................ 21 20. IMap 接口(esriCarto)..................................................................................................... 21 21. IPropertySet 接口(esriSystem) ...................................................................................... 22 22. IFeatureWorkspace 接口(esriGeoDatabase)............................................................. 22 23. IWorkspaceEdit 接口(esriGeoDatabase)................................................................... 25 24. IWorkspaceFactory 接口(esriGeoDatabase)............................................................. 25 25. ITopologicalOperator 接口(esriGeometry) ............................................................... 32
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 等。
ArcGISEngine开发之地图显示和专题图制作分析

Color对象是一个抽象类,有5个颜色子类
Байду номын сангаас
CMYKColor、RGBColor、HSVColor、HLSColor、GrayColor
1.2 ColorRamp对象
ColorRamp类是一个抽象类,它包括4个子类分别是: RandomColorRamp(随机颜色带) PresetColorRamp(预设颜色带) AlgorithmicColorRamp(起止颜色带)
SimpleMarkerSymbol 简单类型的点状符号 五种类型:Square、Cross、Circle、X、Diamond
ArrowMarkerSymbol 箭头形式的符号
Length属性:箭头的顶点到底边的距离
Width属性:箭头底边的宽度 Style属性:箭头符号样式,esriAMSPlain
平排列方式、垂直排列方式和文本等内容。
2.5 3DChartSymbol对象
3DChartSymbol是一个抽象类,它拥有三个子类:
BarChart PieChart StackedChart 它本质上是一种Marker符号,一般用于ChartRenderer对象的着色,
而且这个着色方法常常是基于多个属性的。
StackedChartSymbol符号使用的柱是堆垒而成的。
3 使用ServerStyle
ArcGIS Desktop中的Style符号库文件,在ArcGIS Engine开发中
对应的是ServerStyle符号库,其体系如下图所示:
用于获取ServerStyle符号库中的符号主要涉及到以下接口如表所示:
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
ArcEngine开发教程:第3章地图操作基本功能 (1)

3.数据加载
• 3)加载栅格数据
• 栅格数据是GIS的数据源之一,主要有卫星影像、航空影像、扫描的地图、 照片等。常见的栅格数据格式有*.bmp、*.tif和*.jpg等,这几种栅格数据 的工作空间是其所在的文件夹。添加栅格数据主要用到IRasterPyramid3、 IRasterLayer等接口。
• IMapDocument接口定义了操作和管理地图文档对象的方法和属性。使用 这个对象可以获取、更新一个文档的内容,设置文档文件的属性以及读、 写和保存一个文档文件等。IMapDocument接口同时扮演着数据显示和数 据容器的双重身份,可以通过ActiveView获得Map数据视图,通过 FocusMap属性获得当前正在使用的Map对象的数据容器身份。一个文档 对象可能拥有多个Map对象(相当于ArcGIS中的数据框Data Frame),但 是在同一时刻内只能有一份Map处于使用状态。
2. MapControl控件接口
• 1)IMapControlDefault接口
• IMapControlDefault接口是MapControl控件的缺省接口,是代表当前版本的最新接口,开发环境自动使用这个接口定 义的属性和方法。
• 2)IMapControl2接口
• IMapControl2接口提供了一系列的属性和方法,如设置MapControl控件的显示属性、控件外观、添加和管理数据图层 和地图文档、在控件上绘制图形和返回几何对象等。
核心代码
3.数据加载
• 通过MapControl的AddShapeFile方法加载ShapeFile文件
• 用MapControl控件的AddShapeFile方法同样可加载ShapeFile文件,这样省 去了建立工作空间、数据集等步骤。调用该方法需要传入两个参数,分 别是文件路径和不带扩展名的文件名,调用方法如下: • mainMapControl.AddShapeFile(string Path,string fileName);
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接口总结

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教程-第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控件编程详解一、主要内容1、在 VB 中使用 ArcGIS Engine 的四个常用控件 MapControl、PageLayoutControl、TOCControl和 ToolBarControl;2、向地图控件中装载地图文档、增加不同类型的图层;3、伙伴控件的设置;4、ToolBarControl的设置;5、VB 窗体大小变化的控制事件 Form_Resize 的设置。
二、学时安排:2 学时三、预习内容回顾 ArcGIS Engine 的四个常用控件 MapControl、PageLayoutControl、TOCControl 和 ToolBarControl 所实现的接口及所包含的属性和方法,了解一些相关的常量。
四、ArcGIS Engine 控件编程1、实验准备1)在 D 盘上建立一文件,命名为 EnginePractice;2)启动 VB,新建一工程,命名为 EngineControl,并将其保存到 EnginePractice中;3)在 Form1 窗体中分别引入 MapControl、PageLayoutControl、TOCControl、两个 ToolBarControl、一个 TabStrip 控件及一个 CommonDialog 控件。
ØTabStrip 控件的引入如下图:Ø CommonDialog控件的引入如下图:4)将控件布局到窗体 Form1 上,并添加菜单,如下图:5)菜单的添加—选择[Tools]菜单项选择[Menu Editor… Ctrl+E]如下图:Ø编辑[File]菜单各子菜单分别命名为:LoadMenu、SaveMenu、SaveAsMenu 、AddNewLayerMenu 、AddShapeMenu 、AddLayerMenuØ编辑[Edit]菜单各子菜单分别命名为:LabelEditMenu 、AutomaticMenu、ManualMenuØ编辑[Tool]菜单各子菜单分别命名为:SelectFeaturemenu 、ClearSelectMen2、ArcGIS Engine 许可初始化1)按照实验三的方式引入类库:ESRI System Object Library、ESRI SystemUI Object Library 等,如下图:2)定义初始化对象Option ExplicitPrivate m_pAoInitialize As IAoInitialize3)在 Form_Load 事件中添加许可初始化代码:Set m_pAoInitialize = New AoInitializeIf m_pAoInitialize Is Nothing ThenMsgBox "Unable to initialize. This application cannot run!"Unload LabelEditExit SubEnd If'Determine if the product is availableIf m_pAoInitialize.IsProductCodeAvailable(esriLicenseProductCodeEngine) = esriLicenseAvailable ThenIf m_pAoInitialize.Initialize(esriLicenseProductCodeEngine) <> esriLicenseCheckedOut ThenMsgBox "The initialization failed. This application cannot run!"Unload LabelEditExit SubEnd IfElseMsgBox "The ArcGIS Engine product is unavailable. This application cannot run!"Unload LabelEditExit SubEnd If3、ToolBarControl 设置1)ToolBarControl1的设置使用属性对话框进行设置,单击[Add…]命令按钮进行添加,找到作用于 MapControl 控件的对象,Item 选项为:1-esri3D,如图:2)ToolBarControl2的设置使用属性对话框进行设置,单击[Add…]命令按钮进行添加,找到作用于 PageLayoutControl控件的对象,Item选项为:1-esri3D,如图:3)将 ToolBarControl1 和将 ToolBarControl2叠置在一起4、TabStrip 容器控件的设置在 Form_Load 事件中添加如下代码:TabStrip1.Tabs(1).Caption = "MapControl"TabStrip1.Tabs.Add 2, , "PageLayoutControl"Set TabStrip1.SelectedItem = TabStrip1.Tabs(1)5、TabStrip1_Click 事件设置用鼠标双击 TabStrip1 控件,将会显示 TabStrip1_Click 事件,在该事件中添加如下代 码(本段代码主要用于伙伴控件的设置):Private Sub TabStrip1_Click()'Toggle control visiblity and set the buddyIf TabStrip1.SelectedItem.index = 1 ThenPageLayoutControl1.Visible = FalseMapControl1.Visible = TrueToolbarControl1.Visible = TrueToolbarControl2.Visible = FalseTOCControl1.SetBuddyControl MapControl1ToolbarControl1.SetBuddyControl MapControl1ElsePageLayoutControl1.Visible = TrueMapControl1.Visible = FalseToolbarControl1.Visible = FalseToolbarControl2.Visible = TrueTOCControl1.SetBuddyControl PageLayoutControl1ToolbarControl2.SetBuddyControl PageLayoutControl1End IfEnd Sub6、MapControl1_OnMapReplaced 事件的设置此段代码是用于控制当 MapControl1 的内容改变时 PageLayoutControl1 的内容也随之 改变。
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开发第四章 地图显示

通过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控件的加载
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接口大全[转载]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中的地图组成及图层控制接口函数全解

图层对象 -要素图层 -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⼏何基础操作//点操作~~~~~~~~~~~~~~~~~~~~~~~~~//通过坐标⽣成点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接口大全(六)《转自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接口详细说明

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对象的集合。
第二讲ArcGISEngine控件详解

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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
湖南城市学院 GIS专业
Map对象 IGraphicsContainer接口
GIS二次开发
? 使用 ArcGIS Engine 9.3
IGraphicsContainer 接口的AddElement 方法
ILineElement pLineElement = new LineElementClass();
IGraphicsContainer 接口的DeleteElement 方法
? IGraphicsContainer pGraCon = axMapControl1.Map as IGraphicsContainer;
? pGraCon.Reset(); ? IElement pElement; ? pElement = pGraCon.Next(); ? while (pElement != null) ?{ ? pGraCon.DeleteElement(pElement); ? pElement = pGraCon.Next(); ?} ? axMapControl1.ActiveView.Refresh();
9
湖南城市学院 GIS专业
Map对象 IActiveView接口
GIS二次开发
? 使用 ArcGIS Engine 9.3
IActiveView 接口是Map对象最主要、最常用 的接口之一,该接口定义了 Map对象的数据 显示功能。通过该接口,可以在 Map上
IElement pElement = pLineElement as IElement;
pElement.Geometry = pPolyline as IGeometry;
IGraphicsContainer pGraCon = pMap as IGraphicsContainer;
pGraCon.AddElement(pElement, 0);
IActiveView 、IActiveViewEvents 、IMapBookmark 、 ITableCollection 等; ? 能显示两类图形,一类是 地理数据 ,一类是 元素。
如矢量点、线、 面数据,栅格数 据,TIN数据等。
4
如指北针、 图例等。
湖南城市学院 GIS专业
Map对象 IMap接口
? 教学重点:各对象、接口及接口的重要属性、方法
? 教学难点:在实际开发中运用各对象进行图层添加与删除 、各种设置等
? 教学课时:6
? 学术前沿:
湖南城市学院 GIS专业
地图对象
? IMap接口 ? IGraphicsContainer 接口 ? IActiveView 接口 ? IActiveViewEvents 接口 ? IMapBookmark 接口 ? ITableCollection 接口
5
湖南城市学院 GIS专业
Map对象 IGraphicsContainer接口
GIS二次开发
? 使用 ArcGIS Engine 9.3
Map对象通过 IGraphicsContainer 接口来管理 图形元素和框架元素。
AddElement —添加元素
UpdateElement —更新元素
DeleteElement —删除元素
6
湖南城市学院 GIS专业
Map对象 IGraphicsContainer接口
GIS二次开发
? 使用 ArcGIS Engine 9.3
IGraphicsContainer 接口的 AddElement 方法
IMap pMap = axMapControl1.Map; IPolyline pPolyline = new PolylineClass(); IPoint pPoint = new PointClass(); pPoint.PutCoords(1, 5); pPolyline.FromPoint = pPoint; pPoint.PutCoords(80, 5); pPolyline.ToPoint = pPoint;
图层对象
? ILayer接口 ? 要素图层 ? CAD文件 ? TIN图层 ? GraphicLayer
屏幕显示对象
页面布局对象
3
GIS二次开发
? 使用 ArcGIS Engine 9.3
湖南城市学院 GIS专业
GIS二次开发
? 使用 Arc的管理容器; ? 数据显示的主要载体; ? 共35个接口,如IMap、IGraphicsContainer 、
axMapControl1.ActiveView.PartialRefresh(esriViewDraw Phase.esriViewGraphics, null, null);
8
湖南城市学院 GIS专业
Map对象 IGraphicsContainer接口
GIS二次开发
? 使用 ArcGIS Engine 9.3
GIS二次开发
? 使用 ArcGIS Engine 9.3
例:选择要素
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);
第五讲 地图组成及图层控制( 1)
1
? 课 题:地图组成及图层控制
? 目的要求:本章是GIS二次开发的重点内容之一,主要介 绍ArcGIS Engine中的地图对象、图层对象、屏幕显示对象 、页面布局对象、地图排版、Element对象、MapGrid对象 模型、MapSurround对象、Style对象等,通过介绍这些对 象,了解这些对象的相关接口及这些接口的属性、方法。