ArcEngine入门详细教程

合集下载

牟乃夏ArcEngine教程:第1章 ArcGIS Engine编程基

牟乃夏ArcEngine教程:第1章 ArcGIS Engine编程基

1.1 ArcGIS Engine概述
ArcGIS Engine开发工具包的组成
1.1 ArcGIS Engine概述
• ArcGIS Engine运行时
➢ArcGIS Engine运行时是能够保证基于ArcGIS Engine开发的软件正常运行的 ArcObjects组件产品,是运行由ArcGIS Engine开发的应用程序的基础软件 环境。
• 2.CoClass类 • CoClass类,即可创建类。该类可以通过new关键字直接实例化对
象,它的实例对象不依赖其他对象的存在而存在,其生存周期也 不由其它的对象管理。如QueryFilter是一个组件类,可以用new关 键字来创建一个对象。
1.4 对象模型图(OMD图)
• 3. Class类 • Class类,即可实例化类。该类不能直接使用new关键字创建对
1.2 ArcGIS Engine开发资源
• 1.帮助文档
• 【开始】→【所有程序】→【ArcGIS】 →【Developer Help】→【ArcObjects Help for .NET】,即可启动ArcObjects 的帮助系统。
• 2.自带示例
• 在安装完ArcObjects SDK后,在 “..\Program Files\ArcGIS\DeveloperKit10.0\Samples” 文件夹下,包含有许多自带的代码示 例工程,这些都是开发人员学习 ArcGIS Engine开发很好的资源。
1.4 对象模型图(OMD图)
• 2)组合关系 • 组合关系指其中一个类对象是另外一个类对象的组成部分,由组
成对象控制被组成对象的整个生命周期,在OMD图中用实心菱形 表示。
Layer是Map的一部分,当Map消失的时候,Layer也 将不复存在。在ArcGIS Engine中,地图文档由多个地 图组成,工具条控制对象由多个工具项组成,这些

ArcEngine开发入门-6

ArcEngine开发入门-6


GlobeControl.ocx
3.1 SceneControl 控件命令
命令和工具
Pan, zoom, fly, set observer, select
工具条
ControlsSceneSceneToolbar

esriSceneControl.ocx esri3DAnalyst.olb
参考 对象模型图,技术文档或Categories.exe
3.2 GlobeControl控件命令
命令和工具
Pan, zoom, fly, target, select
工具条
ControlsGlobeGlobeToolbar ControlsGlobeRotateToolbar
OnDoubleClick OnSceneReplaced /OnGlobeReplaced OnKeyDown/Up OnMouseDown/Move/Up
ITOCBuddyEvents
ActiveViewChanged/Replaced
SceneGraph/GlobeDisplay 事件
Scene/Globe SceneGraph/GlobeDisplay SceneViewer/GlobeViewer
Camera/GlobeCamera
4、3D控件:数据
几种方式
直接加载3D文件
获得 MapDocument 使用LayerFactoryHelper
访问MapDocument
从mxd, lyr, pmf文件访问图层
使用ObjectCopy 或IBasicMap
通过LayerFactoryHelper访问数据

ArcEngine开发入门-1

ArcEngine开发入门-1
ArcEngine介绍
平台
ArcEngine SDK 9.x Visual Studio 2005/2008 C#

什么是ArcEngine
ArcEngine是一个面向GIS开发人员进行定 制开发的组件库。 由SDK、Runtime构成 支持Windows、Linux、Solaris
推荐的学习方法
看ArcEngine帮助文档 分析ArcEngine的示例程序 多练习



Class

类是对象的符号表示形式。与蓝图描述构成建筑的项一样,类以同样 的方式描述组成对象的属性、字段、方法和事件。就像一副蓝图可以 用于建成多座建筑一样,一个类也可以用于根据需要创建多个对象。 就像蓝图定义使用建筑的人可以访问建筑的哪些部分一样,类也可以 通过封装来控制用户对对象项的访问。
is判断
检查对象是否与给定类型兼容。 如果所提供的表达式非空,并且所提供的 对象可以强制转换为所提供的类型而不会 导致引发异常,则 is 表达式的计算结果将 是 true。 否则为false。 if (layer is IFeatureLayer) { }

as转换
as 运算符用于在兼容的引用类型之间执行转换。 如果无法进行转换,则 as 返回 null 而非引发异 常。
ArcEngine SDK控件
MapControl PageLayoutControl SceneControl GlobeControl ToolbarControl TOCControl LicenseControl SymbologyControl

ArcEngine标准功能和扩展功能

expression as type

ArcEngine二次开发入门介绍

ArcEngine二次开发入门介绍

ArcObjects OMD图表上的虫洞
概念上,这是一个对象模型 事实上, 被分别在几张图表里存放
虫洞表现了图表与图表间的连接关系
虫洞
Element on ArcMap OMD
FeatureLayer on Map Layer OMD
例子: MxDocument > Map > layer
或者通过另一个类的实例化来创建对象。
在OMD中的关系类型主要有: 类型继承(AT和yBpe为in普h通eri类ta对nc象e),C为组件类对象,D为一普通类, 创建(Inst如an下tia面tio代n码): 组成(ComAp=osBit.iwornit)eA:()对象间的主次关系
) 关联(AssAoc=iaCtio.wnrsiteA()
*
Layer
ILayer pLayer = pMap. get_Layer(1);
// Is( pLayer is IFeatureLayer ) {
FeatureLayer
MessageBox.Show( "Yes!, it’s a feature layer" ); }
从当前的文档中取得聚焦的Map (active data frame)
MxDocument 可以包含一些 Maps ( * )
从一个 Map中取得图层对象
MxDocument
图层对象有多种的类型 ( )
*
Map
IMxDocument pMxDoc = LoadMxdDoc (@"c:\Temp\test.mxd"); IMap pMap = pMxDoc.FocusMap;
������ GeoTransformations(地理变换)对象等。

ArcEngine二次开发入门介绍

ArcEngine二次开发入门介绍
IToolControl接口。开发人员可以通过使用这些对象简化用户界面的开发。
Geometry类库:Geometry类库包含了核心的几何形体对象,如点、线、
面等,即在AO中的要素和图形元素的几何形体都可以在这个组件库中寻
找到。除此之外,这个库还包含了空间参考对象,包括
GeographicCoordinateSystem(地理坐标系统)、
联合

CoClass
Abstract
*
_____
小鸡
CoClass
ቤተ መጻሕፍቲ ባይዱ
*
羽毛
Class
2

Class
翅膀
Class
2021/10/10
13
ArcObjects 对象例子

类和他们相应的对象
Application
MxDocument
Map
Layer
*
*
FeatureLayer
2021/10/10
14
抽象类( Abstract Class )

它是基于Microsoft® COM技术所构建的一系列COM组件集。

AO是随ArcGIS产品一同发布的,要使用AO必须购买
ArcGIS Desktop,才能利用AO提供的组件对象来进行应用
开发。

在ArcGIS9 中发布了一个新的产品:ArcGIS Engine,
ArcGIS Engine 基于AO,并且实现了更好的封装,是一个
ProjectedCoordinateSystem (投影坐标系统)
GeoTransformations(地理变换)对象等。


Display类库:Display类库包含用于显示GIS数据的对象。它包括

ArcEngine开发教程:第3章地图操作基本功能 (1)

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);

ArcEngine开发入门

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)

ArcGIS Engine基础开发教程(5)

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对象或要素对象的桥梁。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

22
空间分析扩展
创建、查询和分析基于像元的栅格数据
坡度计算 坡向计算 用数字高程模型生成等高线 ……
2015-3-11
来吧,让我们一起走向成功!
23
3D分析扩展
实现数据的三维可视化 提供SceneControl和GlobeControl 创建表面和分析表面的多层3D数据 把3D功能嵌入到应用系统中。
来吧,让我们一起走向成功!
6
2、ArcGIS 的服务器端
ArcSDE
ArcSDE是ESRI的空间数据库引擎,用于对海量空间数据及其属性数据的管
理和驱动,为并发访问的客户端提供快速、安全的数据服务。ArcSDE支持 工业标准的DBMS平台(如:ORACLE、SQL Server、DB2、Informix等),
开发者使用的 包含了所有开发库和开发资源 可以进行所有的选项开发
两个产品都通过软件许可文件授权
2015-3-11 来吧,让我们一起走向成功! 12
ArcGIS Engine Developer Kit产品
用来创建独立、嵌入式的桌面应用程序
包含构建ArcGIS Engine应用程序所需的许可 构建在ArcObjects基础之上
是基于ArcGIS Engine应用的运行时
可分发安装
跨平台
Windows, UNIX & Linux
没有ArcGIS桌面应用框架或对话框 需要许可授权
通过代码或应用工具配置
2015-3-11
来吧,让我们一起走向成功!
15
ArcGIS Engine Runtime产品
ArcGIS Engine运行时包含:
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许可与部署 开发综合实例

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许可与部署 开发综合实例
浏览器即可对ArcIMS服务站点进行访问和交互操作。ArcIMS支持
包括Servlet、ColdFusion、ASP等多种Web Server端技术,同时 开发了有望成为未来Internet环境中GIS通用语言的ArcXML,为空
间数据跨厂商跨平台的广泛交流和共享打下了坚实的基础。
2015-3-11
来吧,让我们一起走向成功! 18
ArcEngine产品结构
ArcEngine是开发人员用于建立自定义应用程 序的嵌入式GIS组件的完整类库。包含以下五 个部分:
•基本服务:由GIS核心ArcObjects构成。几乎所有的GIS应用 程序都需要,如几何体和显示。
•数据存取:对许多栅格和矢量格式的数据进行存取,包括 GeoDatabase。
Builder
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
三个客户端都有统一风格的桌面应用:ArcCatalog、ArcMap和ArcToolbox。
ArcCatalog:
ArcCatalog是一个集成化的空间数据管理器,主要用于空间数据浏览, Geodatabase的结构定义、数据的导入导出、网络模型的生成、对象关系和 规则的定义、元数据的定义和编辑修改等。
ArcCatalog支持大量的数据格式,包括:ESRI shapefiles,
Geodatabases, ArcSDE layers, INFO tables, Image, Grid, Tin, CAD文件, 动态分段事件以及其它ESRI数据类型和文件等。
2015-3-11 来吧,让我们一起走向成功! 3
2015-3-11
来吧,让我们一起走向成功!
13
ArcGIS Engine Developer Kit 产品
不是最终用户的应用产品
是面向开发人员的工具包
开发工具包包含
对象/控件 文档 帮助 示例代码
2015-3-11
来吧,让我们一起走向成功!
14
ArcGIS Engine Runtime产品
2015-3-11 来吧,让我们一起走向成功! 4
1、ArcGIS的客户端
ArcToolbox
是一个用于空间数据格式转换、叠加
处理、缓冲区生成、坐标转换等的集
成化“工具箱”。ArcToolbox以树形 结构方式组织了120多个不同的空间 数据处理工具,并且都是以菜单驱动 的方式提供出来,这为我们以一种确 定的、轻松的方式去完成哪怕是很复 杂的工作提供了前所未有的方便。
不包含ArcMap, ArcCatalog, ArcToolbox, ArcScene 等应用程序
框架 运行在桌面上(Windows, Unix & Linux)
提供多种开发APIs
C++, .Net, Java, COM 4种APIs使用了相同的对象
包括了构建定制ArcGIS Engine独立应用的所有功能
1、ArcGIS的客户端
ArcMap
是集空间数据显示、编辑、查询检索、统计、报表生成、空间分析和高级制 图等众多功能于一体的桌面应用平台。
ArcMap提供面向对象的类似CAD的空间数据编辑工具,全面支持空间数
据的可视化交互操作。 ArcMap提供了所见即所得的符号编辑器,令使用者可以随心所欲地生成任 意复杂的点线面符号。 ArcMap进一步拓展了ESRI强大的空间数据直接读取能力,多种格式的数据 无需进行转换或利用中间交换格式即可动态地直接使用。ArcMap支持的空 间数据格式包括:ArcInfo coverages, ESRI shapefiles, ArcSDE layers, DXF and DWG, DGN, 大量的图像格式, GRID、TIN,等等。 ArcMap还支持空间数据的动态投影(on-the-fly projection)。
— 数据和地图的显示 (MapControl & TOC)
— 跟踪形状和显示绘制(Map)
— 定制工具和命令 (Toolbar) — 地图布局和打印 (PageLayout) — 访问底层的ArcObjects
2015-3-11
来吧,让我们一起走向成功!
20
ArcGIS Engine扩展模块
GeoDatabase Updata 3D 分析 空间分析
2015-3-11 来吧,让我们一起走向成功! 5
2、ArcGIS 的服务器端
ArcIMS
用户的空间数据和应用可以通过ArcIMS 在 Intranet/Internet环境 中进行发布和共享。ArcIMS提供用户在服务器端可以以影像方式 或矢量数据流方式进行数据发布。客户端用户通过工业标准的通用
提供了开放的API编程接口,供用户或开发商开发自己的客户端应用或产品。
2015-3-11
来吧,让我们一起走向成功!
7
4、ArcGIS 与 ArcObjects
ArcGIS是构建在ArcObjects组
件库之上。
ESRI 使用 ArcObjects来开发软
件和应用程序。
开发者使用ArcObjects去客户化
2015-3-11
来吧,让我们一起走se Updata扩展
提供创建和更新多用户企业级地理数据库的功能。 版本管理、离线编辑 提供了拓扑、子类和几何网络等地理数据库行为的程序实
现。
释放相应的ArcObjects的功能。
2015-3-11
来吧,让我们一起走向成功!
同时引入了其独有的异步缓冲机制和协同操作机制,使得空间数据服务的响
应效率得到提高,真正起到了“引擎”的作用,而并不仅仅是提供一种空间 数据存储方式。另外,ArcSDE具有丰富的客户端可供用户选用,如:
ArcInfo、ArcView、ArcIMS、MapObjects、ArcExplorer等。同时,还
标准Engine Runtime
Engine扩展
企业GeoDatabase编辑 更新要素和编辑方案 空间分析 3D分析 StreetMap USA
2015-3-11
来吧,让我们一起走向成功!
16
标准Engine功能
地图浏览 地图制作 数据查询 数据分析 所有的开发控件 —MapControl, PageLayout, Toolbar, TOC, ArcReader 对所有矢量和栅格数据源的读权限 对Shapefile和pGDB的写权限 读/写 MXD文件
ArcGIS Engine
来吧,让我们一起走向成功!
ArcGIS Server
相关文档
最新文档