AO开发.docx

上传人:b****6 文档编号:8432093 上传时间:2023-01-31 格式:DOCX 页数:9 大小:1.12MB
下载 相关 举报
AO开发.docx_第1页
第1页 / 共9页
AO开发.docx_第2页
第2页 / 共9页
AO开发.docx_第3页
第3页 / 共9页
AO开发.docx_第4页
第4页 / 共9页
AO开发.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

AO开发.docx

《AO开发.docx》由会员分享,可在线阅读,更多相关《AO开发.docx(9页珍藏版)》请在冰豆网上搜索。

AO开发.docx

AO开发

AO开发(ExploringArcObject)

第一卷应用程序和绘图(Vol.1ApplicationsandCartography)

第一章AO介绍

AO是ArcGIS家族应用程序(如:

ArcMap,ArcCatalog、ArcScene)的开发平台,AO组件提供了ArcInfo和ArcView的所有功能。

在AO框架的基础上可以通过其它组件创建特定领域的组件。

第一节AO开发帮助系统

一、AO框架

AO是用COM技术建立的,因此,可以使用任何支持COM的开发语言来编辑COM组件以扩展AO功能,可以和ESRI开发人员一样扩展AO结构的任何一部分。

第二章

第三章自定义用户界面(Customizingtheuserinterface)

第一节用文档的模板自定义程序(CUSTOMIZINGTHROUGHDOCUMENTSANDTEMPLATES)

一、文档和模板(DOCUMENTSANDTEMPLATES)

文档(document)保存了地图(map)的状态(state)、定制用户界面设置(customuserinterfacesettings)和一个VBA工程。

正确理解文档和模板是开发AO的关键。

每个文档和模板都包含用户界面的持久状态、一个VBA工程和程序其它信息,如地图布局。

二、定制ArcMap(CUSTOMIZINGARCMAP)

可以通过以下几个方式定制ArcMap:

(1)、为地理数据添加参考系(addreferencestogeographicdata)并定义数据的显示方式

(2)、创建一个带空间参考系和辅助地图要素的地图布局

(3)、添加、移除或重组标准用户界面

(4)、在VBA工程中写代码

对ArcMap所做的全部变动(如:

内容表(tableofcontents)、地图布局、工具栏及命令项和VBA代码)都保存在一个地图文档或地图模板中。

地图文档可以保存在文件系统的任何地方,以.mxd为后缀。

1、地图模板(Maptemplates)

可以使用地图模板来分别定制---全局的、工程的或文档的。

模板也是一种文档,它们的结构几乎一样,功能上的不同是ArcMap能识别并用模板来创建新的地图文档。

这和Office程序中的模板类似。

对用户界面或VBA工程所作的任何改变都成为新创建的文档的一部分。

另外,对模板的任何改变都会在下次载入时反应出来。

在ArcMap中模板和文档有三个层次,可以将所作改变保存在任何层次以决定定制的使用范围。

2、定制地图文档(Custommapdocuments)

3、Selectivecustomizationwithtemplates

4、使用normal模板进行全局定制(Globalcustomizationswiththenormaltemplate)

ArcMap中有个Normal模板,存储了每个帐户的界面设置,对Normal模板的任何改变都会在下次打开所有的地图文档中反映出来。

安装软件后第一次启动ArcMap时,在个人帐户文件夹下会自动生成一个Normal模板,根据操作系统的不同分别在:

对于WindowsNT

C:

\WINNT\Profiles\\ApplicationData\ESRI\ArcMap\Templates\

对于Wdindows2000

C:

\DocumentsandSettings\\ApplicationData\ESRI\ArcMap\Templates\

这是默认的Normal模板,它包含了所有的标准工具栏和命令,并将工具栏和内容表置于其默认位置。

对Normal模板的任何改变都保存在这个文件中。

如果想让所作的改变在任何时候启动ArcMap时都能出现,那么可以将其保存在Normal模板中。

假如管理员有自定义的工具栏或工具,想让组织中的每个人都能访问,那么可以创建一个自定义的Normal模板,并让所有的人都使用这个模板而不是默认的。

可以这样做,管理员先定制Normal模板,然后将Normal.mxt文件拷贝到\ArcGIS\arcexe81\bin\Templates文件夹下,那么所有的人都会以这个而不是默认的Normal模板来启动ArcMap。

下面是其工作原理的例子。

启动ArcMap时如果在个人帐户下没有Normal.mxt文件,程序会搜索\ArcGIS\arcexe81\bin\Templates文件夹,并将Normal.mxt文件拷贝到帐户下作为个人的Normal模板。

如果在帐户下和\ArcGIS\arcexe81\bin\Templates下都没找到Normal.mxt文件,则程序会自动生成一个默认的Normal.mxt文件并放置在帐户下。

三、定制ArcCatalog(CUSTOMIZINGARCCATALOG)

可以通过以下几种方法定制ArcCatalog:

(1)、添加、移除或重组标准用户界面的要素

(2)、在VBA工程中编写代码

ArcCatalog不像ArcMap一样使用文档和模板的完整结构,ArcCatalog不用文档,也不基于模板,它只使用一个Normal模板。

因此,对ArcCatalog界面的所有更改都存储在Normal模板中。

安装ArcCatalog后第一次启动时,在帐户下会自动生成一个名为Normal.gxt的Normal模板,根据操作系统的不同存储在以下位置:

对于WindowsNT:

C:

\WINT\Profiles\ApplicationData\ESRI\ArcCatalog\

对于Windows2000:

C:

\DocumentsandSettings\\ApplicationData\ESRI\ArcCatalog\

第二节可实例化应用程序类(APPLICATIONCOCLASS)

每个运行的ArcGIS程序都是一个Application对象实例----ArcCatalog是ESRIArcCatalog对象库(esriGx.olb)中的Application实例,ArcMap是ESRIArcMap对象库(esriMx.olb)中的Application实例。

IgxApplication在第7章“WorkingwiththeCatalog”中讲述,IMxApplication在第4章“Composingmaps”中讲述。

两个Application类都共享IApplication接口。

当ArcGIS程序启动时Application对象在VBA中实例化,它作为全局对象使用,可以用下面的方法来查看其属性:

MsgBoxApplication.Caption

也可以在VB或其它支持COM的语言环境中启动ArcMap,例如,在VB中启动时,创建一个新的工程,引用ESRI核心库(esriCore),将下面的代码加入一个过程,然后执行:

Dimm_docAsIDocumetn

Setm_doc=NewMxDocument‘startArcMap

 

通过Iapplication接口可以访问Document对象、扩展对象、状态栏对象、模板对象、当前工具对象和VBE。

有几种方式可以打开、保存、打印文档,加锁和解锁用户定制程序,显示对话框和退出应用程序。

ArcCatalog没有实现NewDocument、PrintDocument、PrintPreview和SaveAsDocument方法,其中SaveDocument方法是保存Normal模板,而不是保存一个文档。

Application对象实现了IVbaApplication接口,通过它可以程序化地插入、移除和运行VBA代码,而不用打开VBE(VisualBasicEditor)。

要访问这个接口可以对Application执行QueryInterface(QI)。

IvbaApplication接口有创建新模块、插入代码到特定模块、移除模块和运行宏等方法。

下面的代码显示了如何创建一个新的VBA模块、插入VBA宏到模块和运行宏:

DimpVbaAppAsIVbaApplication

DimsAsString

SetpVbaApp=Application

pVbaApp.CreateCodeModule"Project","MyModule"

s="PublicSubMyMacro"&vbNewLine&_

"MsgboxApplication.Document.Title"&vbNewLine&"EndSub"

pVbaApp.InsertCode"Project","MyModule",s

pVbaApp.RunVBAMacro"Project","MyModule","MyMacro",Nothing

IMultiThreadedApplication接口提供了注册和反注册程序线程管理器及返回程序进程ID的方法。

多线程(multithreading)指一种软件配置,程序同时使用相互独立的执行过程,每个线程都有栈和CPU状态。

Application对象实现了IMultiThreadedApplication接口,经提供了注册用户创建线程管理器对象的简单回调机制。

线程管理器对象可以是任何实现了IDllThreadManager接口的对象,它有程序关闭前得到通知的优先权,这样在Application线程关闭前所有当前运行的线程老师可以干净地退出。

如果要开发组件在任何ArcGIS程序进程中使用并能创建线程,那么包含这个组件的DLL也必须包含实线IDllThreadManager接口的对象。

同时还要用IMultiThreadedApplication接口将此线程管理器注册到程序中。

IdllThreadManager接口有个OnShutdown方法以通知DLL线程管理对象程序将关闭,这样DLL线程管理对象可以终止DLL中组件创建的所有线程。

IWindowPosition接口提供了移动和改变窗口大小的方法。

任何窗口对象都可以实现这个接口。

所有的ArcGIS程序窗口都实现了这个接口,可以询问(QI)程序的IWindowPosition接口。

Left和Top属性决定了窗口在屏幕坐标系中的位置(相对于显示屏幕左上角)。

Height和Width属性决定了窗口的大小。

可以用Move方法同时设置这4个属性。

esriWindowState枚举指定了窗口是否处于normal、minimized或maximized状态。

下面的代码强制程序启动时窗口总是指定的大小和位置,将代码加入到Normal模板的ThisDocument中。

PrivateFunctionMxDocument_NewDocument()AsBoolean

DimpWindPosAsIWindowPosition

SetpWindPos=Application

pWindPos.Move10,10,600,500

EndFunction

PrivateFunctionMxDocument_OpenDocument()AsBoolean

DimpWindPosAsIWindowPosition

SetpWindPos=Application

pWindPos.Move10,10,600,500

EndFunction

和三节扩展ArcGIS程序(EXTENDINGARCGISAPPLICATIONS)

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1