




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、主讲:蔡忠亮第五章第五章 Arc/Info环境下的环境下的GIS二次开发技术二次开发技术o一、基于工具型地理信息系统二次开发语言的软一、基于工具型地理信息系统二次开发语言的软件开发。件开发。VBAVisual Basic for ApplicationsAML ARC Macro Languageo二、基于有关地理信息系统的控件二、基于有关地理信息系统的控件(或构件或构件)的软的软件开发件开发MapObject(MO),ArcObject(AO),ArcEngine(AE)AO/AE关系关系什么是什么是AOo AO是ESRI公司ArcGIS 家族中应用程序ArcMap, ArcCatalog
2、和 ArcScene的开发平台,它是基于Microsoft COM技术所构建的一系列COM组件集。到目前为止,AO还不是一个独立的应用产品, 是依附在ArcGIS DeskTop产品中的软件开发包。也就是说,购买了ArcGIS Desktop的任何一个产品,不管是ArcView还是ArcInfo,都有了这套强大的AO组件集,利用AO提供的组件对象来进行应用开发。AO 、AE 、MO 比较比较o AO - ArcObjects,有上千个对象和接口,可以在其基础上开发出业界最强大的GIS应用程序。完全支持空间数据引擎。但由于运行时需要安装ArcGIS核心产品和开发时用到的扩展模块产品,软件发布成本
3、不菲,其下一代产品ArcGIS Engine则有望解决这个问题。o AE - ArcGis Engine是一个创建定制的GIS桌面应用程序的开发产品。ArcGIS Engine包括构建ArcGIS产品ArcView, ArcEditor, ArcInfo, 和 ArcGIS Server.的所有核心组件。使用ArcGIS Engine可以创建独立界面版本(stand-alone)的应用程序,或者对现有的应用程序进行扩展。o MO - MapObjects,只有十多个对象,用于简单的GIS应用程序开发,对空间数据引擎的支持度较低,但软件发布成本很低。o AO是主流,AO的分析功能比MO强,AO支
4、持的格式更多,开发时的模式和可扩展性等强些,也复杂多了。AO 、AE 、MO 比较比较o MOMO使用简单,也很不错。 其实,如果非特别专业和特别要求,MOMO没问题的。MOMO也可以连接geodatabase的,建议你采用AOAO, 因为MOMO现在基本上已经没有新版本了。o AOAO其实是一组COM接口,适用于任何语言,如VC+,VB,DELPHI等开发语言,而MOMO是一个产品。AOAO不能独立存在,只要安装成功ARCGIS就可以使用AOAO开发,听说今后arcgis的版本中AOAO可以单独发行了。o AOAO是AEAE、ArcGIS Desktop、ArcGIS Server三者的集合
5、,按功能AOAO大于AEAE大于MOMO,AOAO面向桌面扩展开发,需要有desktop支持,不能开发出独立发布的程序AEAE不需要desktop支撑,包括了AOAO中的大部分库,可以开发出独立发布的应用程序,MOMO功能简单,主要面向小型的系统开发如地图浏览,查询系统等等,或结合MIS系统运行。AE编写的代码可以在同版本的AO环境下运行, AO环境下编写的一部分对象在AE下可能无法使用。基于基于AE的的GIS二次开发(二次开发(AE+C#)o 一、安装一、安装C环境环境(VS2005)o 二、安装二、安装AE环境环境o 三、基于三、基于AE二次开发二次开发GIS系统系统AE环境配置环境配置o
6、 1 、安装、安装ArcGIS Engine Runtime(9.2)o 2 、安装、安装ArcGIS Engine Developer Kit( 9.2 )Developer Kit内容内容Help - 包含开发帮助文件:AODev.chm, ArcObjects.chm等 Kits - 附加的开发者素材诸如投影引擎头文件,类别ID文件和ESRI 示例命令的源代码 (在最新的9.2版本中,该代码位置有所变化) Object Model Diagrams - 包括所有的PDF格式对象模型图Samples - 包含所有示例工程文件的源代码Utilities - 包含ESRI 对象浏览器等工具安装
7、安装ArcGIS Engine Developer Kit基于基于AE二次开发二次开发GIS系统系统(AE+C#)o 新建C#工程(选择ARCGIS/Enginge工程)基于基于AE二次开发二次开发GIS系统系统(AE+C#)o 选择需要引入的库(也可以在向导完成后手动引入)基于基于AE二次开发二次开发GIS系统系统(AE+C#)o 完成后在窗口插入AE控件基于基于AE二次开发二次开发GIS系统系统(AE+C#)o C#中设置MapControl初始值基于基于AE二次开发二次开发GIS系统系统(AE+C#)o 设计器中预览设置控件属性Size:在NET环境下,可以直接设置控件的anchor属性
8、(例如left,top,right,bottom),不需要写Resize事件中调整控件位置。代码编写 C #的语言风格与C+相似,IDE与VB6.0下相似,大大简化了开发过程。一般来说,C#开发过程比VC简单,初学者容易上手,功能上比VB强大很多。C#语言风格1.变量类型及定义方式与C+相似。例如:int i=0;double d=0.00;2.不使用指针,改用委托。System.Drawing.Point pt = new System.Drawing.Point();3.不需要delete释放。4.事件使用委托。m_MapView.SelectFeatureEvent += new Map
9、View.SelectFeatureEventHandler(SelectFeature);基于基于AE二次开发二次开发GIS系统系统(AE+C#)o C#开发环境(属性编辑)基于基于AE二次开发二次开发GIS系统系统(AE+C#)o C#开发环境(对象事件)基于基于AE二次开发二次开发GIS系统系统(AE+C#)o C#开发环境开发环境(对象事件对象事件)private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)/处理地图鼠标
10、事件 switch (m_CurMapEventStyle)/判断地图时间类型,地图浏览or编辑or分析 case MapEventStyle.MapView: m_MapView.MapEvent(e); break; case MapEventStyle.MapEdit: m_MapEditor.MapEvent(e); break; case MapEventStyle.MapAnalysis: break; default: break; AE支持的数据格式支持的数据格式基于文件的数据集基于文件的数据集 1.Coverages 2.Shapefiles 3.栅格栅格 4.不规则三角网
11、(TIN)5.影像(多种各式) 6.矢量产品的格式文件 7.计算机辅助设计文件(多种格式) 8.地理标志性语言(很多的概述) 9.表(很多的格式) 10.直接读取100+矢量和栅格栅格格式 11.可扩展标示语言(XML) AE支持的数据格式支持的数据格式Geodatabase 数据集1.带有其特殊类型的DB2 2.具有其特殊类型的Informix 3.结构化查询语言SQL Server 4.Oracle 5.Oracle with Spatial or Locator 6.个人Geodatabase(Microsoft Access) AE支持的数据格式支持的数据格式o常用数据类型介绍1.Sh
12、apefile:一种基于文件方式存储GIS数据的文件格式。至少由.shp,.dbf,.shx三个文件作成,分别存储空间,属性和前两者的关系。是GIS中比较通用的一种数据格式。 2.Coverage:一种拓扑数据结构,一般的GIS原理书中都有它的原理论述。数据结构复杂,属性缺省存储在Info表中。目前ArcGIS中仍然有一些分析操作只能基于这种数据格式进行操作。 3.Geodatabase:ArcInfo发展到ArcGIS时候推出的一种数据格式,一种基于RDBMS存储的数据格式,其有两大类:1.Personal Geodatabse 用来存储小数据量数据,存储在Access的mdb格式中。2.A
13、rcSDE Geodatabse 存储大型数据,存储在大型数据库中Oracle,Sql Server,DB2等。可以实现并发操作,不过需要单独的用户许可。 基于基于AE二次开发二次开发GIS系统系统(AE+C#)AE能实现的功能能实现的功能通过AE可完成绝大部分的GIS功能: 1.空间数据的显示、查询检索、编辑和分析;2.创建各种专题图和统计报表;3.高级的制图和输出功能;4.空间数据管理和维护;AE主要模块主要模块1 3D Analyst Extension -用于3D可视化和表面建模的组件对象;2 Application Framework -让开发者在ArcMap和ArcCatalong
14、中通过程序来定制用户界面。3 ArcCatalog - 能够让开发者扩展数据对象模型并集成定制对象和视图到ArcCatalog应用框架中。4 ArcMap - 提供了ArcMap应用程序的核心功能,用于操作和显示地图文档。AE的主要模块的主要模块5 ArcMap Editor- 包括了对象编辑器扩展组件对象,要做编辑开发来这吧。6 Display - GIS的一个重要应用就是数据表现,对国内的许多最终用户更是热衷于此,利用这里包含的对象可以完成诸如地图符号显示、图形编辑反馈轨迹、坐标转换和屏幕控制等功能。7 Geocoding - 主要用于创建和管理地理编码服务等。AE的主要模块的主要模块8
15、Geodatabase- AE开发中一个不可或缺,毕竟GIS的应用都是围绕数据展开的,所以有关的GIS数据创建、加载、管理和存储等都是通过这里的对象进行的。9 Geometry- 不管是要素还是图形,涉及到空间信息的获取和应用来这儿找吧。10 IMS -提供了连接到ArcIMS服务器并访问ArcIMS图象和要素服务的功能。11 NetWork- 提供了网络创建、管理和完成分析操作等功能,打算定制和开发特定网络应用可以利用NetWork对象。AE的主要模块的主要模块12 OutPut -有入就有出,如果想把制作好的地图输出怎么办,通过这里提供的对象来完成吧。13 Raster - 用于访问和管理
16、栅格数据的AO对象。14 Spatial Reference- 用于完成空间参考的设置。15StreetMap USA Extension-这个和国内的用户关系不大。AE核心组件库核心组件库o System库Sysytem库是ARCGIS框架中最底层的库,提供一些可以被其他组件库使用的组件,如数组(Array)、集合(Sets)等。o SystemUI库SystemUI库定义了一些被ARCGIS用户界面组件所使用的对象,如(ICommand,ITOOL)。o Geometry库Geometry库包含了核心的几何形体对象,如点、线、面。还包含了空间参考对象,如几何坐标系统、投影坐标系统和地理变换
17、对象。AE核心组件库核心组件库o Display库 Display库主要包含了输出在设备上图形所需要的组件对象,包含Display、Color、Symbol等对象。o DisplayUI库DisplayUI提供具有可视化界面的对象用于辅助图形显示,如(Property Page和StyleGalleryCalss对象)。o Carto库 Carto库包含为了数据显示和服务的各种组件对象。如(MapElements、Layers)。AE核心组件库核心组件库o DataSourceFile库DataSourceFile库的对象用于打开文件格式的地理数据,通过使用特定的WorkSapceFactor
18、y(工作空间工厂)对象打开数据。o DataSourceRaster库 DataSourceRaster库的对象昂用于获取保存在多种数据源中的栅格数据。o GeoDataBase库GeoDataBase库包含的对象用于操作地理数据库的。包含(WorkSpace)、DataSet,还包括几何网络、拓扑、TIN、版本对象、数据转化等。AE接口编程接口编程oAO是基于COM的 。oCOM的概念:对象类,对象,接口,方法等。在OMD(对象模型图)中有三类class,分别是抽象类(AbstractClass)、组件类(CoClass)和普通类(Class)。抽象类的主要目的是为它的子类定义公共接口,一个
19、抽象类将把它的部分或全部实现延迟到子类中,因此,一个抽象类不能被实例化。一个组件类对象可以被直接创建,普通类对象虽然不能直接创建,但它可以作为其它类的一个属性或者从其它类的实例化来创建。AO中的Dataset或Geometry classes是抽象类的示例,一个Geometry类型对象不能被创建,但是一个Polyline可以被创建。这个Polyline对象实际上在抽象类的基础上实现了Geometry中定义的接口,因此在基类对象中被定义的接口可以从coclass来访问。AE接口编程接口编程在OMD中的关系类型主要有类型继承(Type inheritance)、创建(Instantiation)、
20、组成(Composition)以及关联(Associations)等。类型继承类似于c+的继承机制,实际上就是继承完全继承了超类的接口,这点可以利用AO对象浏览器工具清楚的看到,而组成关系指的是对象间的主次关系,也就是说主体的生命存在与否决定着次体的存在与否。AE接口编程(接口编程(C#代码)代码)IMap pMap =New MapClass(); pM =”地图名称为-Tour”. pMap.ClearLayers(); pMap.Clear();/ Error AE接口编程(接口编程(C#代码)代码)o 在COM中对对象的访问是通过接口来完成,因此不能象许多可视化控件那样,
21、可以直接通过其名称来调用属性或执行其方法。那么这句其实就是定义了一个接口变量(准确地讲应该是一个指向接口的指针变量才对,C#不使用指针。)有了这个接口变量还不行,因为接口是定义在对象上的,那么下来的步骤应该是产生一个对象,而对象来自类。AE接口编程(接口编程(C#代码)代码)IMap pMap =New MapClass(); 在这句中不单纯只是实例化出一个Map对象,并且将上句的pMap接口变量做为了该对象的缺省接口。可以通过这个接口来对地图名进行修改,或者调用ClearLayer方法来删除掉该地图中的所有图层了。代码最后一句的执行情况会出错,原因很简单,不同的接口中的方法或属性只能通过其接口来访问,而Clear方法属于Map类的另外一个接口IActiveView所有。AE接口编程(接口编程(C#代码)代码)可以通过查询接口(Query Interface)来切换到IActiveView上。代码如下:IActiveView pView=pM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年软件评测师考试经典题型解析试题及答案
- 网络规划设计师考试的整合复习法试题及答案
- 特殊病床护理试题及答案
- 全面复习多媒体应用设计师试题及答案
- 美术专业试题及答案
- 2025年软件评测师考试亮点试题及答案集合
- 小白入门系统分析师试题及答案
- 系统分析师职业前景探讨试题及答案
- 高考模式软件评测师试题及答案
- 公务员考试题奇葩及答案
- 2022北京朝阳区高二下学期期末英语试题和答案
- (高清版)JTGT 6420-2024 公路交通应急装备物资储备中心技术规范
- DZ∕T 0227-2010 地质岩心钻探规程(正式版)
- 国有企业经济责任审计工作方案-全套
- MOOC 电工学-西北工业大学 中国大学慕课答案
- 疗养活动方案
- 子宫脱垂的治疗与护理
- 养生自媒体的热门内容与传播策略
- 20以内加减法口算题(10000道)(A4直接打印-每页100题)
- 导游业务培训课程大纲
- 景区剧场演艺策划方案
评论
0/150
提交评论