ArcEngine开发教程:第3章地图操作基本功能 (1)
ArcGIS Engine指导书3
ArcEngine开发实例三一、实例目标及其实现的主要功能1、学习编程实现打开、保存,另存地图文档的方法;2、运用工具栏工具进行地图要素的添加;3、运用状态栏控件实现地图坐标信息的显示。
二、具体的实现过程及代码1、如指导书中的过程,新建一个C#工程项目,并为默认建立的窗体分别添加“ToolBarControl”“TOCControl”“MapControl”“LicenseControl”控件,执行与MapControl 控件的绑定操作,并通过“dock”属性排好。
为工具栏添加如下图所示的工具按钮。
2、添加菜单控件,依次添加菜单栏的主菜单text属性为“文件”,其name属性为“menuFile”,依次添加子菜单,其text属性分别为“打开文档”,“新建文档”,“保存文档”,“另存为….”,“退出”,其name属性分别为“menuOpenDoc”,“menuNewDoc”,“menuSaveDoc”,“menuSaveAsDoc”,“menuExitApp”。
3、打开工具箱,通过添加选项,添加statusBar控件,并双击添加到窗体上。
4、添加ArcGIS的引用ESRI.ArcGIS.Geodatabase和ESRI.ArcGIS.ADF类库,在第一个窗体的代码窗口导入命名空间:using ESRI.ArcGIS.esriSystem;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.ADF;using ESRI.ArcGIS.SystemUI;5、在public partial class Form1 : Form代码下添加如下的初始化语句:private IMapControl3 m_mapControl = null;private string m_mapDocumentName = string.Empty;private IContainer components;6、为窗体添加load事件,并添加以下代码:private void Form1_Load(object sender, EventArgs e){m_mapControl = (IMapControl3)axMapControl1.Object;menuSaveDoc.Enabled = false; }7、为菜单“menuOpenDoc”添加click事件,并添加如下代码:ICommand command = new ControlsOpenDocCommandClass();command.OnCreate(m_mapControl.Object);command.OnClick();8、为菜单“menuSaveDoc”添加click事件,并添加如下代码:if (m_mapControl.CheckMxFile(m_mapDocumentName)){IMapDocument mapDoc = new MapDocumentClass();mapDoc.Open(m_mapDocumentName, string.Empty);if (mapDoc.get_IsReadOnly(m_mapDocumentName)){MessageBox.Show("Map document is read only!");mapDoc.Close();return;}mapDoc.ReplaceContents((IMxdContents)m_mapControl.Map);mapDoc.Save(esRelativePaths, false);mapDoc.Close();}9、为菜单“menuSaveAsDoc”添加click事件,并添加如下代码::ICommand command = new ControlsSaveAsDocCommandClass();command.OnCreate(m_mapControl.Object);command.OnClick();10、为菜单“menuExitApp”添加click事件,并添加如下代码:Application.Exit();11、为菜单“menuNewDoc”添加click事件,并添加如下代码:ICommand command = new CreateNewDocument();command.OnCreate(m_mapControl.Object);command.OnClick();12、为控件“axMapControl1”添加OnMouseMove事件,并添加如下代码:statusBar1.Text = string.Format("{0}, {1} {2}", e.mapX.ToString("#######.##"),e.mapY.ToString("#######.##"), axMapControl1.MapUnits.ToString().Substring(4));13、为控件“axMapControl1”添加OnMapReplaced事件,并添加如下代码:m_mapDocumentName = m_mapControl.DocumentFilename;if (m_mapDocumentName == string.Empty){menuSaveDoc.Enabled = false;statusBar1.Text = string.Empty;}else{menuSaveDoc.Enabled = true;statusBar1.Text = Path.GetFileName(m_mapDocumentName);}三、操作通过操作调试该程序源码,观察并掌握AE中对于地图文件保存的操作方法。
优-ArcEngine基础开发教程C#二次开发ArcGis
pLine.PutCoords(pPoint1,pPoint2); //QI 到 ISegment
ISegment pSegment= pLine as ISegment; //创建一个 Path 对象
SegmentCollection pPath= new PathClass();
object o=Type.Missing; //通过 ISegmentCollection 接口为 Path 对象添加 Segment 对象
04/04/2011
本文由 fxlcoco 编写 ESRI BBS GIS 大讲堂首发 第 1 页,共 80 页
山东农业大学资源与环境学院
世界有我精彩-【侯志伟】整理
地理信息系统08-3
可以看到在 Visual Studio 中看到在新创建的项目中自动加载了 ToolBarControl、TocControl、LicenseControl、 MapControl 四个 ArcGIS Engine 控件以及一个.NET ToolStripMenuItem 菜单控件,如图 3 所示:
pPolyline.AddGeometry(pPath as IGeometry, ref o, ref o); 2.4.4.2Polylgon 几何对象
2Polylgon 对象是由一个或多个 Ring 对象的有序集合,它可以是由单个 Ring 对象构成,也可以使用多个 Ring 组成如下图所示。其中 Ring 可以分为 Outer Ring(外环)和 Inner Ring(内环)之分。外环和内环都是有方向的, 它们的区别是外环的方向是顺时针的,内环的方向是逆时针。Polygon 通常用来代表有面积的多边形矢量对象, 如行政区,建筑物等。
04/04/2011
ArcGIS Engine10.0轻松入门级教程(1)——必备基础知识
ArcGIS Engine10.0轻松入门级教程(1)——必备基础知识分类:ArcEngine开发2012-06-13 22:56 2173人阅读评论(3) 收藏举报目录(?)[-]1. ArcGIS、ArcObjects和ArcGIS Engine简介1. ArcGIS简介2. ArcObject简介3. ArcSIS Engine简介1. ArcGIS Engine Software Developer Kit2. ArcGIS Engine Runtime3. ArcGIS Engine的功能4. net平台5. 接口编程思想6. QI六月的某一天,骄阳似火,夜幕已悄悄降临,坐在电脑前回想自己的大学四年时光,或痛心疾首,或微微憨笑,感概万千,在GIS专业学习了4年,有很多收获,也有很多遗憾,幸而考上了研究生可以继续深造。
于是乎心里的雄心一下被激发了,总结自己的所学知识,打算重新开始,把ArcGIS Engine写一本入门级的教程,为初学者少做弯路,也为自己总结下知识,更为打发着无聊时光。
以上为序,语无伦次自娱自乐!PS:本教程虽为入门及教程,但也要求你有入门级的知识,如果你是哲学专业的,那我也无力回天啊!还有本教程素材全部来源于互联网,版权未知,要我说感谢的话:感谢CCTV,感谢MTV……就此打住。
1 ArcGIS、ArcObjects和ArcGIS Engine简介1.1ArcGIS简介ArcGIS提供了一个可伸缩的框架,可以为独立用户或者多用户,既可以在桌面端也可以在服务器端提供GIS。
ArcGIS 9是用来构建一个完整GIS应用的GIS软件产品集成。
它是基于共享的GIS软件组件——ArcObjects。
ArcGIS 9由以下四部分组成:1)ArcGIS Desktop——高级GIS应用的集成2)ArcGIS Engine——根据应用程序接口来构建基本应用的嵌入式GIS组件库3)ArcGIS Server——在企业级或者网络框架下构建服务器端GIS应用的平台,用来构建Web服务和Web应用4)ArcIMS——通过公开的因特网协议来发布地图、数据和元数据的GIS Web服务器每一个GIS框架同样包含ArcSDE网关,这是在关系数据库(RDBMS)上组织地理数据的接口。
ArcGIS Engine基础开发教程(3)
ArcGIS Engine基础开发教程(3)——学习地图和地图布局Engine, ArcGIS, 教程, 地图, 基础本章是ArcGIS Engine基础开发教程的第三章,主要给大家大致讲解了,地图和地图布局的相关对象。
这些对象非常重要,如果这些基本对象都不熟悉就开始搞ArcGIS Engine开发是不科学的也走不远的。
3地图和地图布局3.1地图3.1.1Map对象Map对象是ArcGIS Engine的主要对象,本章将给大家介绍地图组成结构,如何创建地图,如何对组成地图的对象进行操作,在介绍这些内容时尽量结合ArcMap学习效果会更好。
在Map对象上能显示的图形有两类一类是地理数据,一类是元素。
地理数据包括矢量类型的要素数据,栅格数据,Tin等表面数据等,这些数据都保存在Geodatabase或数据文件如shapefile中,它们是用于GIS分析制图的源数据;图1而元素是另一种可以显示在Map上的对象,它分为两部分一类是图形元素,一类是框架元素,图形元素可以显示出来,而框架元素充当了“容器”的角色。
在ArcMap中可以使用“Draw”工具在Map上直接绘制一个矩形,圆形,文本等对象,在布局视图上也可以给地图添加指北针,图例,比例尺等图形对象,这些都是图形元素。
图2在ArcMap中Map对象是由MXDocument对象的MapFrame对象管理,MapFrame是一个框架元素。
Map对象有双重身份,一方面是数据的管理容器,可以加载地理数据和图形元素,扮演了数据管理器的角色,另一方面它又可以让用户看到这些数据即扮演了数据显示器的角色,当加载数据到Map对象的时候,Map对象是数据的管理者;当改变视图范围,刷新地图的时候它是数据的显示者。
Map对象主要实现的接口由IMap,IGraphicContainer,IActiveView,IMapBookmark等接口。
IMap接口主要用于管理Map对象中的Layer对象,要素选择集对象,MapSourround对象,空间参考等对象。
ArcGIS基本操作教程
Arcgis基本操作教程(所有资料来自网络)目录1.配准栅格地图 (1)1.1跟据图上已知点来配准地图 (1)1.1.1选择标志性程度高的配准控制点 (1)1.1.2从基础数据底图上获取控制点坐标 (1)1.1.3增加Georeferncing 工具条 (2)1.1.4加载需要配准的地图 (2)1.1.5不选择Auto Adjust (2)1.1.6在要配准的地图上增加控制点 (3)1.1.7重复增加多个控制点检查残差 (4)1.1.8更新地图显示 (4)1.1.9保存配准图像 (5)1.1.10增加有坐标的底图检验配准效果 (6)1.2根据GPS观测点数据配准影像并矢量化的步骤 (7)2.图形的失量化录入 (9)2.1半自动失量化 (9)2.1.1启动ArcMap (9)2.1.2栅格图层的二值化 (10)2.1.3更改Symbology设置 (10)2.1.4定位到跟踪区域 (11)2.1.5开始编辑 (12)2.1.6设置栅格捕捉选项 (13)2.1.7通过跟踪栅格像元来生成线要素 (14)2.1.8通过跟踪栅格像元生成多边形要素 (15)2.1.9改变编辑目标图层 (16)2.1.10结束你的编辑过程 (17)2.2批量矢量化 (18)2.2.1启动ArcMap,开始编辑 (18)2.2.2更改栅格图层符号 (18)2.2.3定位到实验的清理区域 (19)2.2.4开始编辑 (19)2.2.5为矢量化清理栅格图 (20)2.2.6使用像元选择工具来帮助清理栅格 (21)2.2.7使用矢量化设置 (24)2.2.8预览矢量化结果 (25)2.2.9生成要素 (26)2.2.10结束编辑过程 (27)2.3手工数字化 (27)2.3.1在ArcCatalog下新建一个空的shapefile: (27)2.3.2为boundary添加属性字段 (28)2.3.3新建地图,并添加需要的数据 (28)2.3.4进行栅格显示设置: (28)3.拓普错误检查 (29)3.1ArcGIS 拓扑介绍 (29)3.2Geodatabase组织结构。
ArcEngine地图基本操作的实现
FeatureClass、FeatureLayer等组件类或者抽象类。
三 地图基本操作实现
1.加载图层数据——ShapeFile文件
Workspace类
Workspace类表示工作区,它是空间数据和非空间数据集的容器,它是 一个类,因此不能被直接创建,而只能从别的对象那里获得;它提供 了使用和创建新的数据集的方法。根据esri Workspace的不同, Workspace可以分为以下几种:
一 使用ArcEngine控件开发
2. MapControl和PageLayoutControl
• MapControl和PageLayoutControl对应于ArcMap桌面应用程 序的“数据”和“布局”视图。用ArcMap创作的地图文 档可以装载到这两个控件中。 • 地图文档可在设计时通过这两个控件的属性页设置,控件 可以被设置为“链接”或“包含”地图文档;地图文档也 可以使用LoadMxFile方法通过编程装载到控件中。 • MapControl和PageLayoutControl不仅可以读取地图文档, 还可以写入地图文档(*.mxd)。
• ToolbarControl要与一个“伙伴控件”协同工作。“伙伴 控件”可在设计时通过ToolbarControl属性页设置或在驻 留ToolbarControl的容器被显示时用SetBuddyControl方 法通过编程设置。 ToolbarControl可以驻留操作其“伙伴 控件”显示的命令、工具和菜单。
axTOCControl1.SetBuddyControl(axMapControl1); axToolbarControl1.SetBuddyControl(axMapControl1);
ArcEngine开发入门-3
}
ISpatialFilter
继承了IQueryFilter,扩展Spatial部分 Geometry GeometryField:通常来自 IFeatureClass.ShapeFieldName SpatialRel:空间关系 SpatialRelDescription:用9交模型描述方式 给定空间关系,可以很精细
IFeatureSelection
FeatureLayer实现了IFeatureSelection接口 SelectFeatures:选择 SelectionSet:设置或获取选择集 Clear:清除选择集 显示选择集: m_mapControl.ActiveView.PartialRefresh( esriViewDrawPhase.esriViewGeoSelection, null, null);
IQueryFilter
AddField:添加字段到SubFields。与直接 给定SubFields效果一样。 SubFields:查询时需返回的字段。默认为*, 多个字段用“,”分隔。编辑时必须为“*”。 WhereClause:类似于SQL Where的语法, 字符串值必须用单引号。不指定代表返回 所有。
}
– – – – DeleteFeature InsertFeature UpdateFeature Flush
public void DisplayInternationalAirports(IFeatureClass featureClass) { IQueryFilter queryFilter = new QueryFilterClass(); queryFilter.WhereClause = "TYPE = 'International'"; queryFilter.SubFields = "NAME"; int fieldPosition = featureClass.FindField("NAME"); IFeatureCursor featureCursor = featureClass.Search(queryFilter, true); IFeature feature = null; while ((feature = featureCursor.NextFeature()) != null) { Console.WriteLine(feature.get_Value(fieldPosition)); }
ArcEngine_开发文档(ArcGIS AO开发)
ArcEngine 开发1.基础篇1.1.开发环境1.1.1.如何在ArcMap的VBA环境中编程ArcMap是ArcGIS家族的成员之一,它内置了一种集成编程环境―VBA (Visaul Basic for Apllications)。
通过VBA编程,用户不但可以扩展ArcMap 的菜单、工具条等,而且可以完成大多数用户的特定需求。
ArcMap中VBA编程的方法有两种,一种是写VBA宏,另一种是创建UIControl 并在其事件中写入实现用户需求的代码。
下面列出两种方法的一般步骤。
方法一:写VBA宏(直接在VBA编辑器中编辑函数和过程)1、如图1,单击菜单栏中的<Tools>命令,选择<Macros>的<Visual Basic Editor>项, 直接启动ArcMap的VBA编辑器;或者选择<Macros>的<Macros>项,进入如图2所示Macro对话框,在“Macro Name”文本框中输入要创建的宏的名称,并点<Create>按钮,启动VBA编辑器。
图1 启动Macro对话框/启动VBA编辑器图2 Macro对话框2、在图3所示的窗口中,用户可以根据实际选择在Normal节点或者Project 节点的ThisDocument、Forms、Modules中编写宏(函数或过程),Normal节点下所写的宏系统自动保存,除非用户删除,否则它将始终存在并在任何工程中都有效;而在Project节点下所写得宏随工程保存(如不保存工程,则宏也将不被保存),并只在工程中有效。
图3 VBA编辑器(VBE)3、运行VBA宏在VBA编辑器中写好VBA代码后,有两种方式运行:第一,点击VBA编辑器工具条中的(运行)按钮,可立即运行写好的代码;第二,退出VBA编辑器,重新启动Macro对话框,如图2,选择要运行的VBA宏名称,点击<Run>按钮即可运行相应的VBA宏。
ArcGIS_Engine基础开发教程(1)
ArcGIS Engine基础开发教程1创建第一个ArcGIS Engine桌面应用程序 (6)2几何对象与空间参考 (15)3地图和地图布局 (44)4图层符号化 (64)5地图查询 (91)6.空间分析 (110)7地图输出 (121)很多人是不熟悉ArcGIS Desktop就开始从网上Down代码修改代码开始了自己的开发之旅,包括我,我大学时代是MapInfo的粉丝,一直没学过ArcGIS。
这是非常不科学的,因为ArcGIS Desktop就是从AO开发起来的,你只有掌握了ArcGIS Desktop的使用,才能很容易理解AO接口提供的功能。
实际上ArcGIS Engine二次开发说白了就是在ArcGIS Desktop 所提供的功能和业务相结合进行的创新性开发。
所以熟悉ArcGIS Desktop以及ArcGIS数据模型对学习ArcGIS Engine二次开发非常重要!一、创建第一个ArcGIS Engine桌面应用程序ArcGIS Engine9.3提供了丰富的GIS组件方便用户快速的定制开发一个GIS应用程序,无需写代码即可实现GIS数据加载,地图操作等功能甚至可以实现高级编辑以及空间分析功能。
接下来使用ArcGIS Engine9.3提供了MapControl Application模块来创建第一个ArcGIS Engine桌面应用程序,并为桌面应用应用程序提供编辑功能。
1.1目标1)创建第一个ArcGIS Engine桌面应用程序2)为应用程序添加编辑功能。
1.2准备工作1)IDE:Visual Studio 2005/20082)ArcGIS Engine Developer kit 9.33)制作ArcGIS实验数据地图文档MXD1.3设计流程图1.4制作地图文档在ArcMap中加载数据后,点击保存生成一个*.mxd地图文档,如图1所示:图11.5创建第一个ArcGIS Engine桌面应用程序在Visual Studio2008中新创建项à选择àArcGISàEngineàMap Control Application,点击确定,如图2所示:图2可以看到在Visual Studio中看到在新创建的项目中自动加载了ToolBarControl、TocControl、LicenseControl、MapControl四个ArcGIS Engine控件以及一个.NET ToolStripMenuItem菜单控件,如图3所示:图31.6加载MXD地图文档数据单击F5键运行程序,然后单击打开MXD地图文档按钮打开MXD地图文档,如图4所示:图4可以看到应用程序把MXD地图文档加载到MapControl地图上,可以使用ToolbarControl 提供的常用GIS功能如:放大,缩小,信息查询等功能。
牟乃夏ArcEngine教程:第1章 ArcGIS Engine编程基
1.1 ArcGIS Engine概述
• ArcGIS Engine功能
• 使用ArcObjects SDK可以实现的功能主要有: ➢ 地图基本操作 ➢ 信息查询功能 ➢ 专题图的制作 ➢ 数据编辑 ➢ 网络分析 ➢ 空间统计分析 ➢ 三维分析
• 在产品架构上,ArcGIS Engine由两部分组成。一是构建GIS应 用软件所用的开发工具包(ArcGIS Engine Developer Kit);二是可 分发的、为应用程序提供运行基础的运行时(ArcGIS Engine Runtime)。
1.1 ArcGIS Engine概述
ArcGIS Engine在ArcGIS产品线中的地位
实现了一个或多个接口,这些接 口分为两种类型,一种是入接口 (Inbound Interface),另一种是 出接口(Outbound Interface), 分别用空心圆和实心圆来表示。 其中入接口封装了若干属性和方 法,出接口封装的主要是事件, 即对象支持哪些事件的触发,所 以出接口又称为回调接口。
象,但是可以借助其它对象类来创建该类的实例,如 Workspace类可以通过WorkspaceFactory类的OpenFromFile方法 来创建。
1.4 对象模型图(OMD图)
• 类的关系 • 1)继承关系:继承是面向对象编程的重要特点之一,在OMD图
中用空心三角箭头表示继承关系。抽象类不能直接创建类对象, 只能通过派生子类的方法来实现自己,类之间的继承可看作类功 能的扩展,即子类在继承父类属性和方法的基础上,还可增加自 己特有的属性和方法。
ArcGIS Engine入门教程
3
桌面平台
• ArcGIS for Desktop • ArcGIS Pro
开发平台
• Web API • ArcGIS Engine • ArcGIS Runtime
服务器平台
• ArcGIS for Server • Portal for ArcGIS
云平台
• ArcGIS Online
类库介绍 ................................................................ 11 2.1 2.2 2.3 接口和类 ................................................................................ 11 接口查询(QI) ....................................................................13 对象模型图(OMD) ...........................................................15
1
4.2.2 添加要素类(从数据源角度) ....................................78 4.2.3 矢量图层渲染 ................................................................84 4.3 实现右键菜单栏 ....................................................................89
7
ArcObjects SDK 除了可以进行 Engine 开发,还可以进行 ArcGIS for Desktop 的扩展,例如添加一些新的功能,改变 Desktop 的已有功 能,定制 Desktop 的界面等。当然利用 ArcObjects SDK 以及 Desktop 产品的许可(Basic、Standard、Advanced 三个级别)也可以构建控制 台和 winform 程序,但是需要特别注意:不能使用任何地图控件!比 如 IMapControl、IToolbarControl、ITOCControl、ILicenseControl 等, 因为这些控件只能在 Engine 产品下使用。 ArcGIS Engine 的 另 一 个 组 成 部 分 就 是 其 运 行 时 ( Engine Runtime) 。ArcGIS Engine 开发的所有应用程序在运行时都需要相应 级别的 ArcGIS Engine 运行时。ArcGIS Engine 运行时有两种版本级 别 — 标 准 版 ( ArcGIS Engine ) 和 高 级 版 ( ArcGIS Engine with Geodatabase Update extension) 。 Engine 标准许可。提供所有 ArcGIS 应用程序的核心功能。这个
ArcEngine入门详细教程
XML+
VBScript
C++
Services
JSP Java ActiveX (ASP) ColdFusion
ArcObjects
ArcSDE Geodatabase
File-based
2015-3-11
DBMS
XML
2
来吧,让我们一起走向成功!
1、ArcGIS的客户端
ArcGIS的客户端产品包括ArcView 、ArcEditor、ArcInfo
2015-3-11 来吧,让我们一起走向成功! 10
目
1 2 3 4 5 6 7 8 9 10 11
2015-3-11
录
ArcGIS体系结构 ArcGIS Engine是什么 ArcGIS Engine的主要功能 ArcGIS Engine类库 ArcGIS Engine控件 接口的概念 对象模型图的阅读 什么是地理数据库 ArcGIS Engine开发环境与流程 ArcGIS Engine许可与部署 开发综合实例
— 数据和地图的显示 (MapControl & TOC)
— 跟踪形状和显示绘制(Map)
— 定制工具和命令 (Toolbar) — 地图布局和打印 (PageLayout) — 访问底层的ArcObjects
2015-3-11
来吧,让我们一起走向成功!
20
ArcGIS Engine扩展模块
GeoDatabase Updata 3D 分析 空间分析
软件与创建自己的应用程序。
ArcObjects 是 ArcGIS 的核心。
2015-3-11
来吧,让我们一起走向成功!
8
ArcEngine开发个人手册
ArcEngine开发个⼈⼿册第⼀章Arc Engine 介绍第⼆章Arc Engine结构⼀、Arc Engine包含的主要库⽂件1、System库ArcGIS结构中最底层的库,包含为其它库提供服务的组件。
2、SystemUI包含为⽤户界⾯组件(在ArcEngine中可以进⾏扩展)定义的接⼝,包括:ICommand, ITool, 和ItoolControl接⼝。
3、Geometry处理存储在要素类或其它图形元素中的⼏何图形要素。
我们经常遇到的基本⼏何⽬标有Point, MultiPoint, Polyline 和Polygon4、Display包含显⽰地理数据的像,如:symbols,colors 等。
我们通常通过类似Map或PageLayout 对像提供的视图(view)来访问Display5、Server包含⽤来连接到ArcGIS Servers的对像。
我们可以通过GISServerConnection对象访问ArcGIS Server。
6、Output⽤来将图形输出到设备上,如printers、plotters和hardcopy formats(如:EMF,JPG,BMP等)。
可扩展7、GeoDatabase为geodatabase提供API函数。
可以扩展以⽀持特定数据格式(Features, Classes, etcetera),可通过PlugInDataSource对象加⼊⾃定义的⽮量数据源。
Geodatabase⽀持的本地数据类型⽆法扩展8、GISClient⽤来接受ArcIMS和ArcGIS Server.提供的⽹络服务。
9、DataSourcesFile包含以⽂件为数据源的(shapefile,coverage, TIN, CAD, SDC, StreetMap, and VPF)部分GeoDatabase API函数的实现。
10、DataSourcesGDB包含以数据库为数据源(Microsoft Access、ArcSDE—IBM DB2, Informix, Microsoft SQL Server, and Oracle)部分GeoDatabase API函数的实现。
ArcGISEngine二次开发——基础篇
ArcGIS Engine二次开发——基础篇1ArcGIS Engine二次开发——基础篇1.1第一个简单的ArcGIS Engine地图显示程序这个例子将引导您创建第一个简单的地图显示程序,并添加基本的缩放和漫游功能。
如果您之前没有接触过ArcGIS Engine的开发,那么这个例子是您迈入ArcGIS Engine二次开发大门的极好例子,将从零开始引导您一步一步完成任务。
1.1.1创建一个新的工程首先打开Microsoft Visual Studio 2005,点击菜单栏中的“文件”—>“新建”—>“项目”,在弹出的对话框中选择新建一个Visual C#的Windows应用程序,之后更改项目名称为“地图浏览”,更改文件的路径为个人实习文件夹,点击“确定”即可。
图1新建项目对话框选中项目“地图浏览”中的窗体“Form1”,修改其Name属性为“MainForm”,Text属性为“地图浏览”,图2窗体命名1.1.2添加控件及引用点击编译器最左侧的“工具箱”(不存在时可通过“视图”“工具箱”打开),在弹出的选择项中找到“ArcGIS Windows Forms”项,单击其中的MapControl,之后在Form1的空白处单击鼠标左键不放并拖拽鼠标,直到调整MapControl到合适的大小再松开鼠标(您也可以直接在工具箱中双击MapControl,该控件则会自动加入到Form1中)。
用同样的方法,再将LicenseControl添加到Form1中。
图3 打开工具箱图4工具箱如果您在工具箱中找不到MapControl,则请依次尝试以下两种解决方案。
首先单击工具栏,待工具箱弹出之后,在工具箱的任意位置上单击鼠标右键,从弹出菜单中选择“重置工具箱”。
如果这一步操作之后仍然无法看到MapControl,则在工具箱的任意位置上单击鼠标右键,找到“常规”选项卡,然后在“常规”选项卡上单击鼠标右键,在弹出菜单中单击“选择项(I)…”,在弹出的对话框中选择“.NET Framework组件”,找到“LicenseControl”和“MapControl”,将这两项前的复选框打上勾,最后点击确定即可(如果在“.NET Framework 组件”这个面板中找不到这两项,则选择“COM 组件”面板,在“ESRI LicenseControl”和“ESRI. MapControl”前面打勾)。
ArcEngine开发入门
checkout/checkin 的离线GeoDatabase的对象。
DataSourcesOleDB
DataSourcesOleDB 库为通过OleDB方式提供的数据
提供空组空间。
DataSourcesRaster
DataSourcesRaster 包含了为基于文件方式的栅格数
就不能改变。
使用 ArcObjects COM 类
使用一个接口实例化一个COM类
Dim <variable> As <some interface>
接口集合了属性和方法
Dim pGarbage As IDrive
Set pGarbage = New GarbageTruck
pGarbage.Fuel = "Full"
Set pBBox = New BoomBox
pBBox.FM = True
IRadio
ITape
ICD
多态
许多不同的类可以支持相同的接口
拥有相同的所有的方法和属性
可以有不同的执行方式和拥有不同的属性值
IDrive
燃料
加速
刹车
多态
ArcObjects 多态
许多ArcGIS的类都表现出多态的特性
pGarbage.Accelerate
IDrive
GarbageTruck
Fuel
Accelerate
Brake
IGarbage
Dump
PickUp
更多的接口例子 …
一个组合音响的例子
一个对象可以播放收音机、磁带、CD
Engine 开发手册(1)
开发工作。
◆ Extensions
在图中我们可看出,ArcEngine 的开发体系是一条纵线,功能丰富,层次清晰。最上层的 Extensions 包含
了许多高级开发功能,如 GeoDatabase Update、空间分析、三维分析、网络分析、Schematics 逻辑示意图
ometry 和 Display 等。
◆ Data Acce ss
包含了访问矢量或栅格数据的 GeoDatabase 所有的接口和类组件。
◆ Map Pre sentation
包含了 GIS 应用程序用于数据显示、数据符号化、要素标注和专题图制作等需要的接口和类
组件。
问中。ArcGIS 桌面和 ArcGIS Engine 可以运行在便携式电脑或平板电脑上,用户可以在野外进行数据采集、
分析和乃至制定决策。
ArcGIS Engine 介 绍
ArcGIS Engine 是一组完备的并且打包的嵌入式 GIS 组件库和工具库,开发人员可用来创建新的或扩展已
ArcGIS Engine 开发工具包是一个基于组件的软件开发产品,可用于构建自定义 GIS 和制图应用软件。它
并不是一个终端用户产品,而是软件开发人员的工具包,支持四种开发环境(C++, COM, .NET,以及
Java),适于为 Windows、 UNIX 或 Linux 用户构建基础制图和综合动态 GIS 应用软件。
一ArcGIS介绍 1
1、1ArcGIS Engine 中的类库 5
1、2 和ArcGIS Engine开发相关的C#知识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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);
3.数据加载
• 1)加载地图文档的方式有三种:
使用IMapControl接口的LoadMxFile方法加载; 通过IMapDocument接口加载; 使用ArcGIS Engine中封装好的类库资源ControlsOpenDocCommandClass加 载。
3.数据加载
• 使用IMapControl接口的LoadMxFile方法加载地图文档 • 实现思路如下:
• 5)IMapControlEvents2接口
• IMapControlEvent2接口为事件接口,它定义了MapControl能够处理的全 部事件,如OnMouseDown、OnMouseMove、OnKeyUp、 OnBeforeScreenDraw、OnAfterDraw、OnExtentUpdated等。
• 通过.NET框架类提供的打开文件对话框选择要打开的地图文档; • 用IMapControl接口提供的CheckMxFile方法检查是否为有效的地图文档, 若有效,则调用IMapControl接口提供的LoadMxFile方法进行加载。
核心代码
3.数据加载
• 通过IMapDocument接口加载
1. 空间数据与工作空间
• 1.空间数据
• 在GIS软件中,空间数据有多种不同的存在形式。按照不同的划分标准可 以分为矢量数据和栅格数据、GIS格式的地理数据与非GIS格式的数据 (如CAD格式等)、空间数据库数据(如个人数据库、ArcSDE数据库等) 和文件数据(ShapeFile格式、Coverage格式)等。
2. MapControl控件接口
• 4)IMapControl4接口
• IMapControl4接口在IMapControl3接口的基础上,增加了两个属性,分别 是AutoKeyboardScrolling和AutoMouseWheel。 • AutoKeyboardScrolling:确定键盘滚动轮是否起作用。 • AutoMouseWheel:确定鼠标滚轮是否起作用。
• KeyIntercept:返回或设置MapControl控件截取的键盘按键信息。
• Object:返回MapControl控件。 • ShowMapTips:控制是否显示地图的Map Tips。 • TipDelay:设置Map Tips的延迟时间。 • TipStyle:设置Map Tips的显示样式。 • SuppressResizeDrawing::当控件尺寸发生变化时阻止数据实时重绘。
1. 空间数据与工作空间
• 工作空间
• 数据加载需要先打开相对应的工作空间。 • IWorkspace接口:IWorkspace接口定义了访问工作空间各种属性的方法,如工作 空间的连接属性等。通过IWorkspace接口可实例化现有数据集和创建新数据集。 由于WorkSpace是一个普通类,要获得WorkSpace,需要通过工作空间工厂 (WorkspaceFactory)来创建。 • IWorkspaceFactory接口:IWorkspaceFactory接口定义了创建、打开工作空间的方 法和对工作空间工厂信息成员的访问。用户可通过工作空间工厂管理不同类型 的工作空间,所有的工作空间对象都可通过此接口产生。 • IWorkspaceFactory接口的Create方法可产生一个新的工作空间对象,不同类型的 WorkspaceFactory对象,其Create方法产生的工作空间对象是不同的。 • IWorkspaceShapefileFactory接口的Open方法和OpenFromFile方法可以用于打开一 个已经存在的工作空间,Open方法用于打开一个SDE数据库,OpenFromFile方法 用于打开一个文件类型的数据,如*.tif、*.img等。
核心代码
3.数据加载
• 使用ControlsOpenDocCommandClass加载地图 • 使用ArcGIS Engine中封装好的类库资源 ControlsOpenDocCommandClass实现地图文档的加载的核心代码如 下:
3.数据加载
• 2)加载ShapeFile数据 • ShapeFile文件是目前主流的一种空间数据的文件存储方式,也是 不同GIS软件进行数据格式转换常用的中间格式。加载ShapeFile数 据的方式有两种:
3.数据加载
• 通过工作空间加载ShapeFile文件的实现思路
• (1)创建ShapefileWorkspaceFactory实例pWorkspaceFactory,使用 IWorkspaceFactory接口的OpenFromFile方法打开pFeatureWorkspace中存储 的基于ShapeFile的工作区; • (2)创建FeatureLayer的实例pFeatureLayer,并定义数据集; • (3)使用IMap接口的AddLayer方法加载pFeatureLayer到当前地图。
• 2.工作空间
• 工作空间(Workspace)对象,在物理级别上相当于地理数据库本身,在 逻辑上是一个包含空间数据集和非空间数据集的数据容器。它包含数据 集(Dataset)、要素类(FeatureClass)、表(Table)等数据。
1. 空间数据与工作空间
常用的工作空间及工作空间对象 工作空间工厂对象 AccessWorkspaceFactor y ArcInfoWorkspaceFacto ry CadWorkspaceFactory OLEDBWorkspaceFactory 工作空间对应类型 描述 esriLocalDatabaseWorkspace 打开Personal GeoDatabase esriFileSystemWorkspace 打开ArcInfo工作空间文件
通过工作空间加载; 通过IMapControl接口的AddShapeFile方法加载。
3.数据加载
• 通过工作空间加载ShapeFile文件 多图层的集合,就像ArcMap的mxd文档一样,可以包括
Map、Layer、FeatureLayer三者之间的关系:Map是很 很多Layer。Layer 是图层对象,是数据的外壳,必须建 • 通过工作空间加载ShapeFile文件主要用到 IMap 、ILayer、IFeatureLayer和 立在数据的基础上才有意义。FeatureLayer是具体的要素 IFeatureClass四个接口。 图层,需要经过Layer添加到Map 中进行显示。 • IMap接口是对地图进行操作的起点,主要用于管理 Map 对象中的图层对 FeatureLayer、FeatureClass的区别: 象,要素选择集和空间参考等对象。 FeaturLayer是加载在地图文档中的矢量数据层,只是要 • ILayer接口是图层对象的通用接口,它提供了操作图层的属性和方法,可 素类的表现形式。FeatureClass是一组空间实体的集合, 用于所有的图层,例如要素图层( FeatureLayer)、栅格图层 在数据表中存储了统一的属性和行为,每一个 (RasterLayer)和图形图层集合( CompositeGraphicsLayer )等。 FeatureClass 都有一个Geometry类型。 接口继承自ILayer接口,IFeatureClass接口 • IFeatureLayer接口继承自ILayerIFeatureLayer 接口,提供了访问基于矢量数据图层的属 IClass接口; 性和方法,图层的数据可以是继承自 Geodatabase ,ShapeFile或Coverage数据。 FeatureLayer可以创建自己的对象,而FeatureClass不行。 • IFeatureClass接口是获取和设置要素类属性的主要接口。如:获取要素类 的类型,得到满足某个查询条件的要素个数,或在要素类中创建一个新 的功能等。
esriFileSystemWorkspace
打开CAD文件的工作空间
SdeWorkspaceFactory