ArcGISEngine的开发与部署.ppt
GIS应用开发_ArcEngine_

ArcGIS Engine 应用程序开发
课程目标
•ArcObjects 库 •ArcObjects Engine APIs •Engine应用程序开发 •许可
ArcGIS 体系结构
•共享ArcObjects •Engine 包括了ArcObjects的核心功能
ArcGIS 库
共享AO库
有些库不可以共享
ArcGIS Engine designer license
允许你设计和开发ArcGIS Engine应用 .ecp 包含了使得功能可用的代码 ������ Designer ������ standardengine ������ gdbedit ������ networkengine ������ spatialengine ������ 3dengine 对开发者来说可以获得所有级别的功能 使用AuthorizationSummary.exe 来检验 license 配置
������ 如: esriArcMapUI 识别属于不同产品的库 理解库的从属关系 开发工具 ������ ArcGIS Developer Help ������ ESRI Automatic Reference addin
开发控件类库
contains the MapControl, PageLayoutControl, TOCControl(Table of Contents), ToolbarControland, ReaderControltogether with a collection of ControlCommands.
安装和配置
Engine 开发需要:
安装
产品和开发包
配置
开发资源 开发环境
产品的许可
ArcEngine开发培训

什么是ArcGIS Engine Developer Kit?
是一组可嵌入的GIS组件,开发者可以
用来开发定制自己的应用程序
更容易
开发 部署 分发 是用来开发的产品
ArcGIS Engine 产品和扩展
ArcGIS
Engine Runtime
to run all Engine applications runtime options available
ArcGIS Engine 应用程序开发
课程目标
•ArcObjects 库 •ArcObjects Engine APIs •Engine应用程序开发 •许可
ArcGIS 体系结构
•共享ArcObjects •Engine 包括了ArcObjects的核心功能
ArcGIS 库
共享AO库 有些库不可以共享
������ 如: esriArcMapUI 识别属于不同产品的库 理解库的从属关系 开发工具 ������ ArcGIS Developer Help ������ ESRI Automatic Reference addin
开发控件类库
contains the MapControl, PageLayoutControl, TOCControl(Table of Contents), ToolbarControland, ReaderControltogether with a collection of ControlCommands.
地图分析
高级的空间和SQL查询 地图展现
标注,符号化,
开发组件
专题图渲染
开发包,地图控件,制图控件和3D控
件,工具条,TOC
你能构建哪些类型的应用程序?
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_Engine基础开发教程(2)

ArcGIS Engine基础开发教程(0)——目录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基础开发教程(1)——创建第一个ArcGIS Engine桌面应用程序ESRI BBS GIS大讲堂首发,转载请注明出处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所示:图11.5创建第一个ArcGIS Engine桌面应用程序在Visual Studio2008中新创建项à选择àArcGISàEngineàMapControl 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功能如:放大,缩小,信息查询等功能。
基于ArcGIS Engine的GIS开发

ArcGIS Engine开发包的组成 开发包的组成
工具条和工具
• 提供了于地图和地理信息交互的工具,如 平移、缩放、点击查询和与地图交互的各 种选择工具。 • 在应用界面上展现为工具条。简化了开发 过程。
Outline
• • • • ArcGIS Engine的概述 Engine的概述 ArcGIS Engine的结构 Engine的结构 开发控件 许可和部署
= 核心功能
• esriLicenseProductCodeEngineGeoDB = 核心功能+geodatabase update
部 署
• 单独安装、配置ArcGIS Engine Runtime • 在应用程序安装中部署好ArcGIS Engine Runtime
谢谢
包含两个部分
• ArcGIS Engine Developer Kit • ArcGIS Engine Runtime
ArcGIS Engine的功能 的功能
• 读取所有支持的ESRI数据格式包括 读取所有支持的ESRI数据格式包括 geodatabase • 地图制作(创建和编辑MXD) 地图制作(创建和编辑MXD) • ArcGIS 级别的绘图 • 查询和分析 • 地理编码 • 简单编辑(shp 和pGDB) 简单编辑(shp
基于ArcGIS Engine的GIS开发 基于 的 开发
赵彦博
Topics
• • • • ArcGIS Engine的概述 Engine的概述 ArcGIS Engine的结构 Engine的结构 控件 许可和部署
ArcGIS Engine
• 是ArcGIS 9 中的新产品
◦ 在ArcGIS系列产品中 ArcGIS系列产品中
ArcGISEngine开发2

ArcGIS 控件介绍
ArcGIS的控件是高度集成化的,首先能够让开发者构建 和扩展ArcGIS的功能,其次能够提供图形用户界面 (GUI)。
ArcGIS的控件被称为Active X控件,.NET控件。 MapControl ——类似于“数据”。 PageLayoutControl ToolbarControl TOCControl(Tablet of Contents Control) SceneControl GlobleControl ReaderControl
(3)窗体上添加控件,编写代码
打开.NET窗体,双击“工具箱”中“ESRI”标签栏中的 AxMapControl控件,将MapControl加入到窗体上,再将 AxToolbarBox也添加到窗体上。
在窗体上双击显示窗体代码窗口,加载图层到MapControl 中,在Form_Load事件中添加地图文档加载代码:
ArcObjects简介
ArcObjects是ArcGIS Desktop的开发平台。 ArcGIS Desktop是一系列GIS软件系统:ArcInfo,
ArcEditor和ArcView。这些系统服务于GIS。
ArcGIS Desktop系统包含一系列的应用,如ArcCatalog、 ArcMap、ArcToolBox和ArcScene,并能够集成大量不 同的扩展产品。如,ArcGIS Spatial Analyst(空间分析 模块),ArcGIS Geostatistical Analyst(地理统计分 析模块), ArcGIS 3D Analyst(三维分析模块)等。
工具栏控件(ToolbarControl)
ToolbarControl需要与一个“伙伴控件”一起工作。 “伙伴控件”可以是一个 MapControl,PageLayoutControl,SceneControl或者是 GlobeControl。
arcgisengine开发实践

《ArcGIS Engine+C#实例开发教程》第七讲图层符号选择器的实现第一讲:桌面GIS应用程序框架的建立本讲主要是使用MapControl、PageLayoutControl、ToolbarControl、TOCControl四个控件建立起基本的桌面GIS应用程序框架。
最终成果预览如下:1、新建项目启动VS2005,选择“文件|新建|项目”,在项目类型中选择Visual C#,再选择Windows应用程序模板,输入名称“3sdnMap”,点击确定。
在解决方案管理器中将“”重命名为“”,在设计视图中,选中窗体,将其属性中的“Text”改为“3sdnMap”。
2、添加控件选择工具箱中的“菜单和工具栏|MenuStrip”,将其拖入窗体。
选择工具箱中的“ArcGIS Windows Forms”节,将“ToolbarControl”控件拖入窗体,并将其属性中的Dock设置为Top。
选择工具箱中的“菜单和工具栏|StatusStrip”,将其拖入到窗体。
选择工具箱中的“容器|SplitContainer”容器拖入窗体,并将其属性中的Dock设置为Fill。
将TabControl控件拖入Panel1,将Alignment属性设置为Bottom,Dock属性设置为Fill。
点击TabPages属性右边的按钮,弹出TabPage集合编辑器,将tabPage1的Name设置为tabPageLayer,Text设置为图层,将tabPage2的Name设置为tabPageProperty,Text设置为属性。
如下所示。
选择“图层”选项卡,拖入TOCControl控件,设置Dock属性为Fill。
选择“属性”选项卡,拖入DataGridView控件,设置Dock属性为Fill。
拖入TabControl控件到Panel2,设置Dock属性为Fill。
并上述类似的方法,将两个选项卡的Name和Text分别设置为:(tabPageMap、地图),(tabPageLayout,制版)。
最新ArcGISEngine开发2

IMapControl2定义控制控件外观界面的各种属性和方法。 如Appearance、BorderStyle 和BackColor。它定义的 主要方法有TrackLine、 TrackPolygon、 TrackRectangle和TrackCircle。
一个简单的应用程序 (1)创建一个新的工程 (2)添加控件及引用 (3)窗体上添加控件,编写代码(地图) (4)设置ToolbarControl 与MapControl控件关联 (5)运行程序
(1)创建一个新的工程 启动Visual ,从“新建项目”对话框中创建一
个新的Visual C#“Windows应用程序”项目,并设置项目 名称为“Sample”,选择位置保存该项目。
GlobeControl通过对象接口来操作IGlobe视图,用户可 以通过IGlobeViewer对象来操作ArcGlobe应用程序。
框架控件介绍
图层树控件(TOCControl) TOCControl用来管理图层的可见性和标签的编辑。
TOCControl需要一个“伙伴控件”一起工作, “伙伴控 件”可以是一个MapControl、 PageLayoutControl、 ReaderControl、SceneControl或者是GlobeControl。 “伙伴控件”能够在设计的时候通过ToolbarControl的 属性页设置。或者在程序运行中通过SetBuddyControl 方法来设置。 “伙伴控件”都实现了ITOCBuddy接口。 TOCControl 利用“伙伴控件”来显示交互性的树结构目录,包括“伙 伴控件”的地图、图层、符号等内容。
ArcEngine教程 第2章 桌面GIS应用软件的开发方式PPT参考课件

7
1. 使用VBA进行桌面软件开发
• 以“定位到所选范围”功能为例,介绍UIControl的用法。
代码
MouseDown 事件
2020/2/18
8
2. 使用DLL进行桌面软件开发
• 动态链接库(Dynamic Link Library,DLL)是Windows平台下的一 种类文件编译格式,这种格式的文件可以被任何支持COM规则的 语言所支持和引用,ArcObjects组件本身的物理文件就是DLL文件。 DLL开发方式的特点是开发环境脱离了ArcGIS Desktop软件,可以 使用如Java、C#等语言进行开发。
• 实际上,开发大型软件一般采用DLL的方式将一类相似的操作进 行封装,这样不仅提高了程序的复用性,减少了代码开发的工作 量,而且便于软件的更新和分发。
2020/2/18
9
2. 使用DLL进行桌面软件开发
• 1)启动Visual Studio 2010,创 建一个新项目。在【新建项目】 对话框中,在“Visual C#”选择 项下,选择 “ArcGIS”→“Extending ArcObjects”,在右侧窗口中选择 “Class Library(ArcMap)”, 并输入名称“SampleDll”、指定 存储位置“C:\”,点击【确定】 按钮,新建一个项目。
• 在ArcGIS 10.0版本中,进行VBA的开发需要单独安装VBA开发程序 模块,安装ArcGIS Desktop时不再附带VBA安装选项。根据操作方 式的不同,在ArcGIS Desktop中进行VBA编程的方法有两种:一种 是编写VBA宏命令,另一种是创建UIControl工具并在其事件中写 入实现代码。
• 使用宏命令
• 单击工具条上的宏命令按钮,ArcMap根据当 前选择集的情况自动创建临时图层,并将创 建的临时图层添加到当前地图中。
第二讲 ArcGIS Engine应用开发基础

2-13
.NET 类
.NET 托管类代表ArcObjects 对象 Two types available
<COMobjectName>”Class”: 在类中实现所有的接口和成员函数 <COMobjectName>: 代表真正的ArcObjects 对象
创建类实例化真正的COM对象
Dim map as MapClass Dim map as MapClass map == New MapClass() map New MapClass() map.Extent == envelope map.Extent envelope
Copyright © 2004 ESRI. All rights reserved.
Developing Applications with ArcGIS Engine
2-8
COM 类
COM 类实现接口 所有类都实现Iunknown接口
管理对象生命周期 成员: QueryInterface, AddRef 和 Release
.NET Assemblies
开发工具
ArcGIS Developer Help (.NET) ILDASM.exe
Interop
COM Type Libraries
ArcObjects C++
Copyright © 2004 ESRI. All rights reserved.
Developing Applications with Ae以避免处理Implicit Casting带来的 InvalidCastException 异常
geometry == point geometry point geometry == CType(point, IGeometry) geometry CType(point, IGeometry) ‘Implicit cast ‘Implicit cast ‘Explicit cast ‘Explicit cast
ArcGIS Engine二次开发入门(课堂PPT)

.
72
.
73
如上图所示,对象模型图展示了每个对象内的各类之间的接口,继承、派生关系,属性及方法之 间的联系等,是对整个对象最完整的定义。对象模型图可视化的表达了ArcObjects的继承关系, 因而您能识别关键对象,查看哪些对象之间具有联系(如对象的创建关系),理解接口继承和派 生类型的定义,并且找出实现了一个类所实现的全部接口。参考对象模型图与参看帮助系统中具 体的接口所获得的信息是一致的,只不过查看具体的接口信息将更方便获得具体的使用方法,属 性设置方法等,而参看对象模型图是从全局来把握整个对象,更容易找出各接口之间的联系和调 用方式等。 对象模型图的放置路径为“X:\Program Files\ArcGIS\DeveloperKit\Diagrams”(X代表ArcGIS 安装所在的盘符)。 对象模型图的书写类似于UML图,对象模型图中也对其基本规则也有所解释,因而UML的具体语 法规则、定义等这里不再赘述,如果需要更加详细的信息,您可以参考UML方面的相关书籍,或 者参考《Exploring ArcObjects》中的相关章节。
.
3
5.6 BaseTool开发实例
.
4
.
ArcGI教材SEngine的开发跟部署培训资料

ArcGIS Engine的开发与部署朱政ESRI中国(北京)有限公司2004年4月目录z ArcGIS9的开发框架z ArcGIS Engine的概念以及功能z ArcGIS Engine的license部署z ArcGIS Engine的开发z实例1 2 3ArcGIS9 概况ArcGIS9 在8版本上扩展的主要功能–地理处理–3D 可视化–开发工具新产品–ArcGIS Engine–ArcGIS ServerArcGIS 9的开发z ArcGIS Enginez ArcGIS Serverz ArcGIS Desktop 上的开发ArcGIS 9 的开发ArcGIS 9 为开发桌面和服务器应用提供了一个完整的系统,它允许开发人员:1 嵌入GIS地图/功能到其他的应用中2 创建和分发自定义的桌面应用3 配置/客户化ArcGIS的应用,比如ArcMap4 扩展ArcGIS 框架和模型5 创建网络服务和应用ArcGIS Desktop ArcGISEngine ArcGISServerArcGIS9 的产品共享ArcObjectsArcGIS9 开发框架z ArcGIS9 建立在ArcGIS8的基础上z ArcGIS9是在新的模块化的框架下建立.–相同的对象–改进的功能z框架改变的几个方面–模块化–多种APIs–跨平台ArcGIS模块化的框架z模块化在ArcGIS9的各个部分中都被考虑了。
z ArcGIS对象模型被组织成一系列的库。
z库是基于功能来分的对象类。
z These libraries definez Type librariesz Name spacesz Java packagesz C++ header filesArcGIS Engine关键特征z标准的GIS框架z有效的license配置方案z跨平台windows unixz跨语言com,.Net,C++,Javaz ArcGIS的扩展功能z开发控件ArcGIS Engine的简介z ArcGIS Engine是为开发商建立应用提供的完整的嵌入式的GIS组件库z ArcGIS Engine由两部分组成:z开发包(开发人员)z运行包(最终用户)分发ArcGIS Engine能做什么?z显示多个图层组成的地图z漫游和缩放地图z查找地图中的要素z用某一字段显示标注z显示航片和遥感影像的栅格数据z绘制几何要素z绘制描述性的文字z沿线,或者用多边形,圆等选择要素z根据一定距离选择要素z通过sql表达式查询要素z渲染要素z动态显示实时数据,或时间序列数据z地图定位z几何操作z维护几何要素z创建和更新地理要素和属性ArcGIS Engine的功能ArcGIS Engine开发包z ArcGIS Engine开发包包括了支持开发任务所需要的所有的开发资源。
ArcGIS Engine 10 开发

ArcGIS Engine 10 开发手册ESRI中国(北京)有限公司2011年9月版权声明本文档版权为ESRI中国(北京)有限公司所有。
未经本公司书面许可,任何单位和个人不得以任何形式摘抄、复制本文档的部分或全部,并以任何形式传播。
制定及修订记录目录1ArcGIS 介绍 (2)2和ArcGIS Engine开发相关的C#知识 (10)3使用控件创建第一个桌面应用程序 (21)4空间数据库 (70)5几何对象和空间参考 (121)6矢量数据空间分析 (153)7符号化 (169)8栅格数据分析 (202)9编辑 (239)10地图输出 (261)11ArcGIS Engine实战 (264)12安装部署 (305)1ArcGIS 介绍1.1A rcGIS 软件架构ArcGIS是ESRI在全面整合了GIS与数据库、软件工程、人工智能、网络技术及其它多方面的计算机主流技术之后,成功地推出了代表GIS最高技术水平的全系列GIS产品。
ArcGIS是一个全面的,可伸缩的GIS平台,为用户构建一个完善的GIS系统提供完整的解决方案。
ArcGIS的基本体系能够让用户在任何需要的地方部署GIS功能和业务逻辑,无论是在桌面、服务器、还是在野外。
桌面GIS(ArcGIS Desktop)—ArcGIS桌面GIS软件产品是用来编辑、设计、共享、管理和发布地理信息和概念。
ArcGIS桌面可伸缩的产品结构,从ArcReader,向上扩展到ArcV iew、ArcEditor和ArcInfo。
目前ArcInfo被公认为是功能最强大的GIS产品。
通过一系列的可选的软件扩展模块,ArcGIS Desktop产品的能力还可以进一步得到扩展。
嵌入式GIS(Embedded GIS)—ArcGIS Engine是一个完整的嵌入式GIS组件库和工具包,开发者能用它创建一个新的、或扩展原有的可定制的桌面应用程序。
使用ArcGIS Engine,开发者能将GIS功能嵌入到已有的应用程序中,如基于工业标准的产品以及一些商业应用,也可以创建自定义的应用程序,为组织机构中的众多用户提供GIS功能。