牟乃夏ArcEngine开发教程:第3章地图操作基本功能
牟乃夏--ArcMap的基本操作
学习指导:本实验的ArcGIS软件为ArcGIS 9版本。
如果需要学习ArcGIS10,请参阅作者主编的教材:ArcGIS 10 地理信息系统教程——从初学到精通(测绘出版社)的第二、三、五、八等章等相关内容。
如需进一步了解学习ArcGIS的方法及其他问题,请访问作者的人人网主页:/mounaixiaArcMap的基本操作一、主要内容通过练习ArcMap的基本操作,了解ArcMap模块的主要功能和作用。
二、学时安排:2学时三、预习内容ArcMap的主要功能和作用:是一个桌面程序用来完成所有基于地图的任务,包括地图制图、图编辑和分析等。
使用ArcMap我们可以进行数据的浏览、符号化、查询、分析和输出等。
ArcMap主要用于图形的编辑处理和符号化显示等。
四、具体内容及操作1、启动ArcMap[1]. 运行“启动\程序\ArcGIS\ArcMap”,或者运行桌面上的快捷方式。
2、熟悉ArcMap用户界面2.1缺省用户界面当ArcMap启动之后,缺省方式的用户界面包括主菜单和“Standard”工具条。
图表 0-1 缺省用户界面2.2用户界面的定制我们可以通过菜单“tools->Customs…”或者在菜单区或者工具条区按鼠标右键进行界面的定制。
这些菜单和工具条可以停靠在窗口的任意位置。
图表 0-2 用户界面定制另外还可以通过下面方式打开或者关闭工具条。
[1]. 在主菜单中点击:View-Toobars;[2]. 从工具条列表中, check一个工具条,则显示此工具条,uncheck一个工具条,则隐藏此工具条;[3]. 在主菜单区或者工具条区按鼠标右键,重复第2步,查看结果;[4]. 重复以上步骤,以保证主菜单,Standard, Tools工具条显示。
2.3用户界面介绍图表 0-3 用户界面地图窗口:用来显示数据和数据的表达(地图,图表等);Contents窗口: 在这个窗口中包含两个标签:Display和Source标签。
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中对于地图文件保存的操作方法。
说明书
基于ARCGIS ENGINE的地图基本操作程序说明第一部分设计说明1.目的对于一个GIS软件来说,其基本功能之一就是展示地理数据并实现对地理数据的操作。
2.使用工具2.1 软件ARCGIS ENGINE开发工具2.2 工具条主视图:Ribbon菜单栏、AxmapControl、axTOCControl、acLicenseControl、SplitContainer、StatusStrip、menuStrip、toolStripStatusLabel。
辅视图:Textbox、Label、Button、DataGridView、GroupBox、ComboBox、TreeView、SplitContainer。
3.各实体设计说明3.1 数据加载本程序支持加载多类型的数据,如矢量数据的Coverage、Shapefile,栅格数据的BMP、GRID、空间数据库,以及通过ARCMAP制作的地图文档(*.mxd)或ARCMAP 模版(.*mxt)等。
3.1.1 地图文档的加载本程序包含加载地图文档的三种方式,即IMapControl接口的LoadMxFile方法、IMapDocument接口、以及AE中封装好的类库资源ControlsOpenDocCo- MmandClass方法。
3.1.2 Shapefile数据的加载本程序采用了通过工作空间记载shapefile的方法,主要用到了IMap、ILayer、IFeatureLayer和IFeatireClass四个接口。
3.1.3 加载栅格数据常见栅格数据有*.bmp、*.tif、*.jpg等格式。
添加栅格数据主要用到IRasterPyramid3(提供对栅格数据集的金字塔属性的访问)、IRasterLayer等接口。
3.1.4 加载CAD数据本程序使用两种方式加载CAD数据,一是作为要素图层,以矢量数据来使用;二是作为地图背景,以栅格数据来使用(采用CadLayer对象管理)。
ArcGIS Engine基础开发教程(5)--学习地图输出
ArcGIS Engine基础开发教程(5)——学习地图查询地图查询地图查询、统计是一个GIS系统的基本的功能模块,实际上统计功能的前提也是通过查询获取结果以文字或者图表等报表的形式展现查询结果数据。
地图查询有两种类型的查询:1.空间查询:在地图上设置一定范围,查询这一范围内的要素。
例如在地图上画一范围查询这一区域内的所有消防栓,这一范围的所有消防栓高亮显示(或者其他显示方式)并展现出所有的消防栓的属性信息。
2.属性查询:通过一定的查询条件获取目标要素。
例如我们需要查询中国行政区上人口大于5000万,同时GDP大于1万亿的省份,通过执行查询,符号条件的省份高亮显示(或者其他显示方式)并展现出这些省份的属性信息。
ArcGIS Engine9.3为开发者提供了无需写代码即可进行查询功能的Identify工具,但是这个工具是一个通用的信息查询新工具。
而开发者通常需要自己开发一套符合自己业务需求更加灵活的查询功能模块,甚至一些功能不仅仅是查询信息,很多编辑编辑功能以及和业务相结合的功能开发都用到查询功能。
所以很有必要了解ArcGIS Engine的查询机制。
5.1目标1.熟悉Cursor,FeatureCursor对象,使用IFeatureCursor接口2.熟悉QueryFilter, SpatialFilter对象使用IQueryFilter,ISpatialFilter接口3.熟悉要素选择集SelectionSet对象,会使用IFeatureSelection,ISelectionSet接口4.开发一个属性查询小功能Demo, 获取符号查询条件的Feature,并IFeatureLayerDefinition接口创建一个新的要素图层加载到Mapcontrol上5.开发一个空间多边形查询功能的小Demo, 学会创建内存半透明图层用于显示选择范围5.2准备工作1.IDE:Visual Studio 2005/20082.ArcGIS Engine Developer kit 9.33.准备一份用于查询的的矢量数据(文章内有说明)5.3Cursor对象Cursor(游标)本质上是一个指向数据的指针,本身并不包含数据内容,它是连接到Row对象或要素对象的桥梁。
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教程:第3章 地理数据库
3.3.4 创建关系类
• • • • 关系类的一个明显特征就是基数。基数是描述一种类型的对象与另一种类型 的对象之间关联的个数。关系的基数通常分为一对一、一对多、多对多。 Geodatabase支持两种关系:简单关系,复合关系。 简单关系是指Geodatabase中相互独立的两个或多个对象之间的关系。 复合关系总是一对多的,但也可以通过关系规则限制到一对一。
• • • • 对于地理现象的表述,既有空间信息,又有非空间的属性信息。 地理数据库注记存储于标记要素类中。 注记通常为文本,但也包括其他类型符号系统的图形形状。 每个文本注记要素都具有符号系统,其中包括字体、大小、颜色以及其他任 何文本符号属性。
地理数据库注记包含两种类型:标准注记和要素关联的注记。 创建标准注记要素类 创建与要素关联的注记要素类 创建尺寸注记要素类
《ArcGIS 10 地理信息系统教程:从初学到精 通》教学PPT 第三章 地理数据库 牟乃夏
第三章 地理数据库
地理数据库(Geodatabase)是一种面向对象的空间数据模 型,它对于地理空间特征的表达更接近我们对现实世界的认 识。 地理数据库在一个公共模型框架下,对GIS处理和表达的空 间特征进行统一描述和存储。
地理数据库按照面向对象的模型存储地理信息,也可以将其非空间信息保 存在表中。对于要素和表可以设置一些规则进行限制,对属性的约束称为 属性域。 属性域是描述字段合法值的规则,是一种增强数据完整性的方法,用于约 束表或要类的任意特定属性中的允许值,可分为【范围】和【属性域的删除与修改 属性域的关联 注意事项 并非表或要素类中的所有对象都必须在相同字段中应用相 同的【属性域】或默认值。
18
※
•
3.3 Geodatabase的智能化操作
ArcGISEngine基础开发教程
ArcGISEngine基础开发教程部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑ArcGIS Engine基础开发教程1.创建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所示:b5E2RGbCAP图11.5创建第一个ArcGIS Engine桌面应用程序在Visual Studio2008中新创建项à选择àArcGISàEngineàMapControl Application,点击确定,如图2所示:p1EanqFDPw图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开发入门
DCOM 和 COM+
COM 类拥有接口
对象拥有一个或多个接口
接口是定义了一组方法和属性的逻辑关系
与对象的通信是通过接口来进行的
IDrive
IGarbage
垃圾车
燃料
加速
刹车
倾倒
拾起
IDrive
IRace
RaceCar
Fuel
Accelerate
Brake
圈速度
停靠站
通信契约——接口
DataSourcesFile
DataSourcesOleDB
DataSourcesRaster
Cato
Location
NetWorkAnalysis
Controls
主要Library介绍
System
System库是ArcGIS框架中最底层的一个库,它包含了一些被其他库使用的一
针对ArcEngine
使用开发控件
扩展控件
其他东西
基于COM接口编程基础(1)
小节内容
COM组件对象模型简介
如何使用COM类
接口Interfaces
多态Polymorphism
接口查询QueryInterface
测试一个对象的引用的常用方法
Is it nothing?
所有的子类都是集成了接口
ILayer: All layer types (raster, tin, feature, etc.)
IGxFile: All ArcCatalog (shapefile, map, table, etc.)
IActiveView: Map (data view) and PageLayout (layout view)
地理信息系统开发ArcEngine方法
2.1 什么是对象模型图
可创建类(CoClass)
可创建类是唯一可以用New关键字来创建对象 的。也就是说,可创建类可以直接被创建或者实 例化。例如在ArcMap中,可以创建新的Maps, FeatureLayers,FillSymbols或GraphicElements等。 在对象模型图中可创建类是用3D有阴影的立方体 表示的。
第2章 ArcGIS Engine基础
内容提要
什么是对象模型图 ArcEngine 类库结构 ArcEngine 的常用控件 ArcEngine 的开发资源 利用ArcEngine 开发一个简单的GIS工程
2.1 什么是对象模型图(Object Model Diagram,OMD)
虫洞 ArcEngine包含的AO类库是非 常多的,而且所有的这些类基 本上和其他的类有联系。为了 更清晰的认识这些类间的关系, 对象模型图在介绍一个类的同 时增加了一些虫洞。 虫洞就表示该类所关联的类。 如右图所示,在Element上有 一个指向它的虫洞。这表示类 Element和类Geometry有关联
1.2 ArcEngine的主要特点
对所有矢量和栅格数据源的读权限 对Shapefile和pGDB的写权限 读/写MXD文件 数据的显示和地图浏览 绘制来自于航空照片或卫星影像的图像 跟踪和绘制要素(如点、线、圆及多边形) 绘制非GIS要素,如描述性文本、图形元素 地图数据的坐标转换 搜索地图上的要素或通过单击来识别地图上的要素 多种要素选择方式,如点选、框选、SQL属性选择 显示要素属性字段的文本标注 TOC图层管理,如显示具有多个地图图层的地图
内容提要
ArcEngine 介绍 ArcEngine的主要特点 ArcEngine与其他组件的区别与联系 ArcEngine的安装
第三章 ArcGIS Engine基础
3.1.4 使用 ESRI Object 浏览器
列表类、接口、属性和方法
• 位置:<ArcGIS installation folder>\ArcGIS\Developer Kit\tools\EOBrowser.exe
3.2 理解对象模型图(OMD)
3.2.1 ArcObject 的对象模型图
不能用于创建一个新的对象,即不能用new关键字来产生对象 OMD中:用没有阴影的3D矩形表示普通类 可以从其他对象中获取对象实例 IRow pNewRow; pNewRow = pTable.CreateRow();
生
成
组件类 (CoClass)
可以直接创建,用new关键字
IMap pMap; pMap = new Map();
COM的优越性
使得编程技术难度和工作量降低,降低开发周期和 成本
使得软件的复用性得到提高
语言独立,可以使用任何一种语言编写COM组件
• 语句——面向过程——面向对象
学习ArcGIS Engine需要了解的COM内容
COM不是接口,也不是类,它是一种二进制级别的组件通信 标准 符合COM标准的对象称为COM对象,COM对象是实现了很多接 口的对象,它可以以DLL或者EXE文件形式存在
COM是创建类的一个标准 COM类可以在不同的工程中重用
不依赖于具体的开发语言
所有的 ArcObjects 都是 COM 类 ArcObjects基于COM技术构建
对象连接与嵌入技术 (OLE) OLE DB技术 ActiveX 技术是 COM 技术的一种封装 DCOM 和 COM+
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对象,空间参考等对象。
牟乃夏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实现地图文档的加载的核心代码如 下:
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复习指导
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教程桌面GIS应用软件的开发方式
2. 使用DLL进行桌面软件开发
• 运行程序后并没有显示ZoomIn工具,这时需要对DLL功能应用部 署。
3. 使用Add-In进行桌面软件开发
• Add-In是ArcGIS 10.0提供的一种能够快速扩展桌面应用程序的全新 的扩展方式。其特点包括:
• 1). 容易创建 • 2). 更易共享 • 3). 更加安全 • 4). 更易安装和管理
• 实际上,开发大型软件一般采用DLL的方式将一类相似的操作进 行封装,这样不仅提高了程序的复用性,减少了代码开发的工作 量,而且便于软件的更新和分发。
2. 使用DLL进行桌面软件开发
•1)启动Visual Studio 2010,创建 一个新项目。在【新建项目】对 话框中,在“Visual C#”选择项下, 选择“ArcGIS”→“Extending ArcObjects”,在右侧窗口中选择 “Class Library(ArcMap)”,并 输入名称“SampleDll”、指定存储 位置“C:\”,点击【确定】按钮, 新建一个项目。
• 本节通过一个简单的实例,来讲解如何应用ArcGIS Engine所提供 的控件来构建一个GIS系统的基本流程与步骤。
4. 使用ArcGIS Engine构建独立应用程序
• 1)启动Visual Studio 2010,创 建Sample工程
• 2)选择需要添加的ArcGIS引用 项,在【License Checking】选
应用程序扩展 编辑扩展
3. 使用Add-In进行桌面软件开发
• 4)在生成的Add-In工程中,包含两部分内容,即Config.esriaddinx 和SelectTool.cs。其中Config.esriaddinx文件包含Add-In的配置信息, SelectTool.cs文件是实现获取选择集功能的类文件。
牟乃夏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图
中用空心三角箭头表示继承关系。抽象类不能直接创建类对象, 只能通过派生子类的方法来实现自己,类之间的继承可看作类功 能的扩展,即子类在继承父类属性和方法的基础上,还可增加自 己特有的属性和方法。
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函数的实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 空间数据与工作空间
• 1.空间数据
• 在GIS软件中,空间数据有多种不同的存在形式。按照不同的划分标准可 以分为矢量数据和栅格数据、GIS格式的地理数据与非GIS格式的数据 (如CAD格式等)、空间数据库数据(如个人数据库、ArcSDE数据库等) 和文件数据(ShapeFile格式、Coverage格式)等。
核心代码
3.数据加载
• 使用ControlsOpenDocCommandClass加载地图 • 使用ArcGIS Engine中封装好的类库资源 ControlsOpenDocCommandClass实现地图文档的加载的核心代码如 下:
3.数据加载
• 2)加载ShapeFile数据 • ShapeFile文件是目前主流的一种空间数据的文件存储方式,也是 不同GIS软件进行数据格式转换常用的中间格式。加载ShapeFile数 据的方式有两种:
1. 空间数据与工作空间
• 工作空间
• 数据加载需要先打开相对应的工作空间。 • IWorkspace接口:IWorkspace接口定义了访问工作空间各种属性的方法,如工作 空间的连接属性等。通过IWorkspace接口可实例化现有数据集和创建新数据集。 由于WorkSpace是一个普通类,要获得WorkSpace,需要通过工作空间工厂 (WorkspaceFactory)来创建。 • IWorkspaceFactory接口:IWorkspaceFactory接口定义了创建、打开工作空间的方 法和对工作空间工厂信息成员的访问。用户可通过工作空间工厂管理不同类型 的工作空间,所有的工作空间对象都可通过此接口产生。 • IWorkspaceFactory接口的Create方法可产生一个新的工作空间对象,不同类型的 WorkspaceFactory对象,其Create方法产生的工作空间对象是不同的。 • IWorkspaceShapefileFactory接口的Open方法和OpenFromFile方法可以用于打开一 个已经存在的工作空间,Open方法用于打开一个SDE数据库,OpenFromFile方法 用于打开一个文件类型的数据,如*.tif、*.img等。
核心代码
3.数据加载
• 通过MapControl的AddShapeFile方法加载ShapeFile文件
• 用MapControl控件的AddShapeFile方法同样可加载ShapeFile文件,这样省 去了建立工作空间、数据集等步骤。调用该方法需要传入两个参数,分 别是文件路径和不带扩展名的文件名,调用方法如下: • mainMapControl.AddShapeFile(string Path,string fileName);
3.数据加载
• 3)加载栅格数据
• 栅格数据是GIS的数据源之一,主要有卫星影像、航空影像、扫描的地图、 照片等。常见的栅格数据格式有*.bmp、*.tif和*.jpg等,这几种栅格数据 的工作空间是其所在的文件夹。添加栅格数据主要用到IRasterPyramid3、 IRasterLayer等接口。
• IRasterPyramid3接口提供了对栅格数据集的金字塔属性的访问,Present属性用于判 断栅格数据集是否存在金字塔,Create方法用于为栅格数据集创建金字塔。 • IRasterLayer接口继承自ILayer接口,CreateFromDataset方法用于从已有的栅格数据 集对象创建图层;CreateFromRaster方法用于从已有的栅格对象创建图层;Raster属 性用于获取IRasterLayer接口中的Raster对象,DisplayResolutionFactor属性用于设置 栅格数据的分辨率。 • 在加载栅格文件时,需引用ESRI.ArcGIS.DataSourcesRaster命名空间。
2. MapControl控件接口
• 1)IMapControlDefault接口
• IMapControlDefault接口是MapControl控件的缺省接口,是代表当前版本的最新接口,开发环境自动使用这个接口定 义的属性和方法。
• 2)IMapControl2接口
• IMapControl2接口提供了一系列的属性和方法,如设置MapControl控件的显示属性、控件外观、添加和管理数据图层 和地图文档、在控件上绘制图形和返回几何对象等。
• KeyIntercept:返回或设置MapControl控件截取的键盘按键信息。
• Object:返回MapControl控件。 • ShowMapTips:控制是否显示地图的Map Tips。 • TipDelay:设置Map Tips的延迟时间。 • TipStyle:设置Map Tips的显示样式。 • SuppressResizeDrawing::当控件尺寸发生变化时阻止数据实时重绘。
3.数据加载
• 1)加载地图文档的方式有三种:
使用IMapControl接口的LoadMxFile方法加载; 通过IMapDocument接口加载; 使用ArcGIS Engine中封装好的类库资源ControlsOpenDocCommandClass加 载。
3.数据加载
• 使用IMapControl接口的LoadMxFile方法加载地图文档 • 实现思路如下:
• 通过.NET框架类提供的打开文件对话框选择要打开的地图文档; • 用IMapControl接口提供的CheckMxFile方法检查是否为有效的地图文档, 若有效,则调用IMapControl接口提供的LoadMxFile方法进行加载。
核心代码
3.数据加载
• 通过IMapDocument接口加载
• 2.工作空间
• 工作空间(Workspace)对象,在物理级别上相当于地理数据库本身,在 逻辑上是一个包含空间数据集和非空间数据集的数据容器。它包含数据 集(Dataset)、要素类(FeatureClass)、表(Table)等数据。
1. 空间数据与工作空间
常用的工作空间及工作空间对象 工作空间工厂对象 AccessWorkspaceFactor y ArcInfoWorkspaceFacto ry CadWorkspaceFactory OLEDBWorkspaceFactory 工作空间对应类型 描述 esriLocalDatabaseWorkspace 打开Personal GeoDatabase esriFileSystemWorkspace 打开ArcInfo工作空间文件
• 5)IMapControlEvents2接口
• IMapControlEvent2接口为事件接口,它定义了MapControl能够处理的全 部事件,如OnMouseDown、OnMouseMove、OnKeyUp、 OnBeforeScreenDraw、OnAfterDraw、OnExtentUpdated等。
• IMapDocument接口定义了操作和管理地图文档对象的方法和属性。使用 这个对象可以获取、更新一个文档的内容,设置文档文件的属性以及读、 写和保存一个文档文件等。IMapDocument接口同时扮演着数据显示和数 据容器的双重身份,可以通过ActiveView获得Map数据视图,通过 FocusMap属性获得当前正在使用的Map对象的数据容器身份。一个文档 对象可能拥有多个Map对象(相当于ArcGIS中的数据框Data Frame),但 是在同一时刻内只能有一份Map处于使用状态。
esriFileSystemWorkspace
打开CAD文件的工作空间
SdeWorkspaceFactory
ShapefileWorkspaceFac tory TinWorkspaceFactory TextFileWorkspaceFact ory
esriRemoteDatabaseWorkspac 使用OLEDB打开数据库的工作空间文件 e esriRemoteDatabaseWorkspac 打开SDE数据库的工作空间 e esriFileSystemWorkspace 打开ShapeFile文件的工作空间 esriFileSystemWorkspace esriFileSystemWorkspace 打开TIN数据文件的工作空间 打开文本文件的工作空间
通过工作空间加载; 通过IMapControl接口的AddShapeFile方法加载。
3.数据加载
• 通过工作空间加载ShapeFile文件 多图层的集合,就像ArcMap的mxd文档一样,可以包括
Map、Layer、FeatureLayer三者之间的关系:Map是很 很多Layer。Layer 是图层对象,是数据的外壳,必须建 • 通过工作空间加载ShapeFile文件主要用到 IMap 、ILayer、IFeatureLayer和 立在数据的基础上才有意义。FeatureLayer是具体的要素 IFeatureClass四个接口。 图层,需要经过Lay行操作的起点,主要用于管理 Map 对象中的图层对 FeatureLayer、FeatureClass的区别: 象,要素选择集和空间参考等对象。 FeaturLayer是加载在地图文档中的矢量数据层,只是要 • ILayer接口是图层对象的通用接口,它提供了操作图层的属性和方法,可 素类的表现形式。FeatureClass是一组空间实体的集合, 用于所有的图层,例如要素图层( FeatureLayer)、栅格图层 在数据表中存储了统一的属性和行为,每一个 (RasterLayer)和图形图层集合( CompositeGraphicsLayer )等。 FeatureClass 都有一个Geometry类型。 接口继承自ILayer接口,IFeatureClass接口 • IFeatureLayer接口继承自ILayerIFeatureLayer 接口,提供了访问基于矢量数据图层的属 IClass接口; 性和方法,图层的数据可以是继承自 Geodatabase ,ShapeFile或Coverage数据。 FeatureLayer可以创建自己的对象,而FeatureClass不行。 • IFeatureClass接口是获取和设置要素类属性的主要接口。如:获取要素类 的类型,得到满足某个查询条件的要素个数,或在要素类中创建一个新 的功能等。