ArcGIS例子(5)

2019-08-20 18:57

base.m_caption = \添加日期\ base.m_category = \

base.m_message = \在页面布局中增加一个日期元素\ base.m_name = \ base.m_toolTip = \添加日期\

}

}

注:类构造函数是一个当类创建时被调用的方法。它可以用来初始化类成员变量。构造函数名与类名相同;与其他方法不同的是它没有返回类型。

程序中只个别地替换实现了位图、标题、目录、名称、消息和提示方法,你可以设置从这此方法返回的值,且依赖于BaseTool类为这此方法提供的实现。其它的成员保留BaseTool类返回的默认值。 一、项目描述

利用视窗控件建立应用程序的目标是演示并使你熟悉在微软Visual Studio .NET API中使用标准ArcGIS控件开发和部署GIS应用所需的步聚。本节中使用了Visual Studio .NET开发环境中的MapControl、 PageLayoutControl、TOCControl和ToolbarControl等视窗控件。COM、Java和C++程序员应该参考如下章节:利用ActiveX建立应用程序、利用可视化JavaBeans建立应用程序、建立命令行方式的Java应用和建立命令行方式的C++应用。

本节演示了创建查看ArcMap和ArcGIS桌面应用图形文档的GIS应用程序的步骤。此节包含了以下技术:

? 在微软Visual Studio .NET中加载和嵌入ArcGIS控件。 ? 向PageLayoutControl和MapControl中加载图形文档。 ? 设置ToolbarControl和TOCControl的绑定控件。 ? 处理窗口缩放。

? 向ToolbarControl添加ArcGIS Engine命令和工具。

? 创建弹出式菜单

? 在TOCControl中管理标签编辑 ? 在MapControl中绘制图形。

? 为MapControl、PageLayoutControl和ToolbarControl创建定制工具。 ? 用户化ToolbarControl。

? 在Windows操作系统中部署应用。

二、概述

本方案使用微软Visual Studio .NET开发环境加以实现,并使用了ESRI interop程序集(Interop Assemblies),它服务于被放置在.NET窗体上的、位于.NET 窗体控件(.NET Windows Controls)中的ArcGIS控件,这些程序集在托管的.NET代码和非托管的COM代码之间起了桥梁作用。对COM ArcGIS控件(COM ArcGIS Controls)成员的引用都要经过Interop程序集,然后到达实际的COM对象。同样,也从COM对象经过Interop程序集到达.NET应用程序。每个ArcGIS Engine控件具有方法、属性与事件,它们能够被控件嵌入的容器(如,.NET窗体)访问。每个控件对象及其功能可以与其他ESRI ArcObjects和自定义控件组合使用,创建用户化的客户应用程序。

此方案是使用了C#和Visual Basic .NET两种语言创建,但以下技术实现集中倾向于C#方案。许多开发者可能会感觉用Visual Basic .NET更舒服,那是因为他们已经比较熟悉Visual Basic 6.0代码,然而,对于Java和C++程序员来说,他们将会觉得对C#程序语言的语法更熟悉。无论你使用哪种开发环境,对于使用ArcGIS控件的好坏既依赖于你的编程环境技术,也依赖于你所掌握的ArcObjects技术。

在本方案中,使用ToolbarControl、TOCControl、PageLayoutControl和MapControl来为应用程序提供用户界面。这些ArcGIS控件与其他ArcObjects和ArcGIS Engine命令被开发者一起使用,用来创建一个GIS视窗应用。

三、设计

此方案在设计时,首先强调了ArcGIS 控件如何互相之间进行交互,其次,向开发者解释说明了ArcGIS 控件对象模型的一部分。

每个.NET ArcGIS Engine控件包含有一套能够被嵌入其内的窗口即时访问的属性页。这些属性些为控件属性和方法的选择提供了捷径,并且允许开发者不写任何代码即可创建一个应用程序。本方案并没有使用属性页,而是采用写代码的方式建立应用程序。关于属性页的更进一步的信息,请参考ArcGIS开发帮助(ArcGIS Developer Help)。

四、条件需求

要顺利地完成以下方案,你需要以下条件(对于部署的需求将在后续的部署章节涉及到):

? 安装具有授权文件的ArcGIS Engine开发工具包(Developer Kit),使之能够用于开发。 ? 安装有微软Visual Studio .NET 2003开发环境和微软.NET Framework 1.1及其相应协议。

? 熟悉微软Windows操作系统和Microsoft Visual Studio .NET的工作知识,会用C#或Visual Basic .NET编程语言。当

然,此方案中提供了一些如何在Microsoft Visual Studio .NET中使用ArcGIS控件的信息,但它不能替代对开发环境的培训。

? 不需要对ESRI其它软件有足够的经验,但如果以前对ArcObjects有所接触并对ArcGIS应用(如,ArcCatalog,ArcMap)

有一个基本了解,则对于开发更有利。 ? 访问来自本方案的样例数据和代码,它位于:

<安装目录>\\DeveloperKit\\Samples\\Developer_Guide_Scenarios\\ ArcGIS_Engine\\Building_an_ArcGIS_Control_Application\\Map_Viewer

本方案中使用到的控件和库如下:

? AxMapControl

? AxPageLayoutControl ? ESRI.ArcGIS.Carto ? ESRI.ArcGIS.Display ? ESRI.ArcGIS.Geometry ? esriMapControl

? esriPageLayoutControl

? AxTOCControl ? AxToolbarControl ? ESRI.ArcGIS.System ? ESRI.ArcGIS.SystemUI ? ESRI.ArcGIS.Utility ? esriTOCControl ? esriToolbarControl

五、实现

下面的实现过程中提供了你成功完成方案所需所有代码。假设你对于开发环境已经有了一定的知识,所以下面没有逐步地详细介绍如何用Microsoft Visual Studio .NET开发应用。

(一) 加载ArcGIS控件

在你为应用程序编写代码之前,应该先将应用程序将用到的ArcGIS控件和其他ArcGIS Engine库引用装载到开发环境之中。

1. 启动Visual Studio .NET,并从新建项目对话框中创建一个新的Visual C# “Windows应用程序”项目。

2. 将项目命名为“Controls”,并选择位置存取该项目。

3. 在“工具箱”的“Windows窗体”标签栏中单击右键,然后从上下文菜单中选择“添加/移除项(I)…”。

4. 在“自定义工具箱”中选择“.NET Framework组件”,并复选“AxMapControl”,“AxPageLayoutControl”,“AxTOCControl”和“AxToolbarControl”,单击确定按钮。这样所选择的控件将显示在工具箱的Windows窗体标签栏中。

12. 向AddDateTool类增加下列成员变量。

public sealed class AddDateTool : BaseTool {

// HookHelper对象处理通过OnCreate事件的回调

private IHookHelper m_HookHelper = new HookHelperClass();

??

13. 在类视图窗口中,定位到BaseCommand类的OnCreate方法,右键点击之显示上下文菜单。选择增加,然后重载

并增加该方法至代码窗口。

14. 在重载的OnCreate方法中增加以下代码。

public override void OnCreate(object hook) {

m_HookHelper.Hook = hook;

}

注:要在Visual Basic .NET中重载属性和方法,从代码窗口顶部的“Class Name”组合框中选择“Overrides”,从“Method Name”组合框中选择属性或方法。

15. 在类视图中定位到BaseCommand类的Enabled属性并在其上点击右键显示上下文菜单。选择添加,然后点重写增

加该属性至代码窗口。

16. 增加以下代码,重写BaseTool类的默认Enabled值。

public override bool Enabled {

get {

// 设置使能属性

if ( m_HookHelper.ActiveView != null ) {

return true;

}

else {

return false;

}

}

}

注:ICommand_OnCreate事件向命令工作的应用程序传送一个句柄或回调。在这种情况下,它可以是MapControl,PageLayoutControl或ToolbarControl。除向OnCreate事件增加代码外,你可以使用HookHelper判断传向命令的回调类型。命令或工具需要知道如何处理传送的回调,


ArcGIS例子(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:华工-大学英语B(一)-2016秋

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: