利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤。
你可以在下面的目录下找到相应的样例程序:
<安装目录>\DeveloperKit\Samples\Developer_Guide_Scenarios\ ArcGIS_Engine\Building_an_ArcGIS_Control_Application\Map_Viewer
注:ArcGIS样例程序不包含在ArcGIS Engine开发工具包“典型”安装方式中。如果你没有安装它们,则可以重新运行开发工具包安装向导,选择“定制”或“修改”方式,并选择软件开发包下的样例项进行安装。
一、项目描述
利用视窗控件建立应用程序的目标是演示并使你熟悉在微软Visual Studio .NET API中使用标准ArcGIS控件开发和部署GIS应用所需的步聚。本节中使用了Visual Studio .NET开发环境中的MapControl、 PageLayoutControl、TOCControl和ToolbarControl等视窗控件。COM、Java和C++程序员应该参考如下章节:利用ActiveX建立应用程序、利用可视化JavaBeans建立应用程序、建立命令行方式的Java应用和建立命令行方式的C++应用。
本节演示了创建查看ArcMap和ArcGIS桌面应用图形文档的GIS应用程序的步骤。此节包含了以下技术:
l 在微软Visual Studio .NET中加载和嵌入ArcGIS控件。
l 向PageLayoutControl和MapControl中加载图形文档。
l 设置ToolbarControl和TOCControl的绑定控件。
l 处理窗口缩放。
l 向ToolbarControl添加ArcGIS Engine命令和工具。
l 创建弹出式菜单
l 在TOCControl中管理标签编辑
l 在MapControl中绘制图形。
l 为MapControl、PageLayoutControl和ToolbarControl创建定制工具。
l 用户化ToolbarControl。
l 在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)。
四、条件需求
要顺利地完成以下方案,你需要以下条件(对于部署的需求将在后续的部署章节涉及到):
l 安装具有授权文件的ArcGIS Engine开发工具包(Developer Kit),使之能够用于开发。
l 安装有微软Visual Studio .NET 2003开发环境和微软.NET Framework 1.1及其相应协议。
l 熟悉微软Windows操作系统和Microsoft Visual Studio .NET的工作知识,会用C#或Visual Basic .NET编程语言。当然,此方案中提供了一些如何在Microsoft Visual Studio .NET中使用ArcGIS控件的信息,但它不能替代对开发环境的培训。
l 不需要对ESRI其它软件有足够的经验,但如果以前对ArcObjects有所接触并对ArcGIS应用(如,ArcCatalog,ArcMap)有一个基本了解,则对于开发更有利。
l 访问来自本方案的样例数据和代码,它位于:
<安装目录>\DeveloperKit\Samples\Developer_Guide_Scenarios\ ArcGIS_Engine\Building_an_ArcGIS_Control_Application\Map_Viewer
本方案中使用到的控件和库如下:
l AxMapControl
l AxTOCControl
l AxPageLayoutControl
l AxToolbarControl
l ESRI.ArcGIS.Carto
l ESRI.ArcGIS.System
l ESRI.ArcGIS.Display
l ESRI.ArcGIS.SystemUI
l ESRI.ArcGIS.Geometry
l ESRI.ArcGIS.Utility
l esriMapControl
l esriTOCControl
l esriPageLayoutControl
l 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窗体标签栏中。
5. 单击项目菜单,并选择“添加引用(R)…”。
6. 在添加引用对话框中,双击“ESRI.ArcGIS.Carto”,“ESRI.ArcGIS.Display”,“ESRI.ArcGIS.Geometry”,“ESRI.ArcGIS.System”,“ESRI.ArcGIS.SystemUI”,“ESRI.ArcGIS.Utility”。单击确定。
注:对于ESRI .NET程序集,将通过具体实例来说明,并使用.NET框架提供的COM传送服务从你的C#项目中调用ESRI对象库中的实体对象。
(二) 在容器中嵌入ArcGIS控件
在你能够访问每个控件的事件、属性和方法之前,需要将控件嵌入到.NET容器中。一旦将控件嵌入窗体内,它们将图形化应用程序的用户界面。
1. 在设计模式下打开.NET窗体。
2. 双击工具箱Windows标签栏中的AxMapControl控件,将MapControl加入到窗体上。
3. 再将AxPageLayoutControl、AxTOCControl和AxToolbarControl如上添加到窗体中。
4. 重新调整窗体上各个控件的大小和位置,调整结果如下所示。
5. 在窗体上双击显示窗体代码窗口,在代码窗口的顶部增加“using”命令:
using System;
using System.Windows.Forms;
// ArcGIS Engine引用
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.ToolbarControl;
using ESRI.ArcGIS.TOCControl;
注:需注意C#是区分大小写的。当你键入“ESRI.”时,智能敏感的自动完成功能将允许你通过按Tab键完成下一节。
(三) 加载Map文档到MapControl与PageLayoutControl
单独的数据层或者使用ArcMap、ArcGIS桌面应用程序产生的图形文档,能够被加载到MapControl和PageLayoutControl中。你可以加载样例图形文档,或者加载你自己的图形文档。后面你将增加一个浏览图形文档的对话框。
1. 选择Form_Load事件,并输入下列代码(如果你使用你自己的图形文档,要替换为正确的文件名):
// 使用相对路径向PageLayoutControl加载一个图形文档
string filename = @"..\..\..\..\..\..\..\..\Data\\ArcGIS_Engine_Developer_Guide\\gulf of st. lawrence.mxd";
if ( axPageLayoutControl1.CheckMxFile(filename) )
{
axPageLayoutControl1.LoadMxFile(filename, "");
}
2. 在设计模式显示窗体并从属性窗选择axPageLayoutControl1控件,显示axPageLayoutControl事件。在OnPageLayoutReplaced事件上双击向代码窗口添加该事件的处理函数。
3. 在axPageLayoutControl1_OnPageLayoutReplaced事件中键入以下向MapControl加载样例图形文档的代码。当文档被装载入PageLayoutControl时OnPageLayoutReplaced事件将会被触发。
private void axPageLayoutControl1_OnPageLayoutReplaced(object sender, ESRI.ArcGIS.PageLayoutControl.IPageLayoutControlEvents_OnPageLayoutReplacedEvent e)
{
// 加载同样的文档到MapControl
axMapControl1.LoadMxFile(axPageLayoutControl1.DocumentFilename, null, null);
// 设置MapControl显示范围至数据的全局范围
axMapControl1.Extent = axMapControl1.FullExtent
(四) 设置ToolbarControl与TOCControl控件的绑定控件
对于此应用程序,TOCCont
没有合适的资源?快使用搜索试试~ 我知道了~
网上整理的AO开发代码
共488个文件
txt:115个
gdbtablx:83个
gdbtable:83个
2星 需积分: 10 23 下载量 134 浏览量
2008-11-20
20:45:39
上传
评论
收藏 5.56MB RAR 举报
温馨提示
常用的AO开发代码,函数齐全,可以直接使用
资源推荐
资源详情
资源评论
收起资源包目录
网上整理的AO开发代码 (488个子文件)
a0000002a.N_1_Desc_0.atx 276KB
a0000002a.N_1_Desc_1.atx 276KB
a00000042.N_1_J6_0.atx 4KB
a0000002c.N_1_JTopo2_0.atx 4KB
a00000047.N_1_E8_0.atx 4KB
a00000040.N_1_E5_0.atx 4KB
a0000004c.N_1_T10_0.atx 4KB
a0000002b.N_1_JTopo_0.atx 4KB
a0000004b.N_1_E10_0.atx 4KB
a0000004f.N_1_E12_0.atx 4KB
a0000003d.N_1_E2_0.atx 4KB
a00000045.N_1_E7_0.atx 4KB
a0000004e.N_1_J12_0.atx 4KB
a0000003b.N_1_J0_0.atx 4KB
a0000004d.N_1_E11_0.atx 4KB
a0000003f.N_1_E4_0.atx 4KB
a0000003a.N_1_TStatus_0.atx 4KB
a00000039.N_1_TDesc_0.atx 4KB
a00000044.N_1_T6_0.atx 4KB
a00000050.N_1_T12_0.atx 4KB
a00000055.N_1_E15_0.atx 4KB
a0000002d.N_1_JDesc_0.atx 4KB
a00000038.N_1_ETurn2_0.atx 4KB
a0000002f.N_1_ETopo_0.atx 4KB
a00000049.N_1_E9_0.atx 4KB
a00000030.N_1_EDesc_0.atx 4KB
a0000003e.N_1_E3_0.atx 4KB
a00000034.N_1_J0_0.atx 4KB
a00000032.N_1_FloDir_0.atx 4KB
a00000035.N_1_E0_0.atx 4KB
a00000053.N_1_E14_0.atx 4KB
a00000052.N_1_J14_0.atx 4KB
a00000051.N_1_E13_0.atx 4KB
a00000043.N_1_E6_0.atx 4KB
a0000004a.N_1_J10_0.atx 4KB
a00000054.N_1_T14_0.atx 4KB
a00000046.N_1_J8_0.atx 4KB
a0000003c.N_1_J1_0.atx 4KB
a00000048.N_1_T8_0.atx 4KB
a00000037.N_1_ETurn_0.atx 4KB
a0000002e.N_1_JStatus_0.atx 4KB
a00000031.N_1_EStatus_0.atx 4KB
ResolveAssemblyReference.cache 132KB
ResolveAssemblyReference.cache 110KB
FindShortPath.csproj.GenerateResource.Cache 842B
WindowsApplication3.csproj.GenerateResource.Cache 769B
Form1.cs 14KB
Form1.Designer.cs 13KB
Form1.Designer.cs 10KB
ClsPathFinder.cs 10KB
Form1.cs 5KB
Resources.Designer.cs 3KB
AssemblyInfo.cs 1KB
AssemblyInfo.cs 1KB
Settings.Designer.cs 1KB
Settings.Designer.cs 1KB
Program.cs 483B
Program.cs 478B
FindShortPath.csproj 5KB
WindowsApplication3.csproj 4KB
Properties.Resources.Designer.cs.dll 12KB
FindShortPath.exe 36KB
FindShortPath.exe 36KB
WindowsApplication3.exe 28KB
WindowsApplication3.exe 28KB
FindShortPath.vshost.exe 6KB
WindowsApplication3.vshost.exe 6KB
a00000033.freelist 120KB
a0000001c.freelist 12KB
a00000001.freelist 8KB
a0000001d.freelist 8KB
a00000007.freelist 4KB
a00000037.freelist 4KB
a00000051.freelist 4KB
a00000028.freelist 4KB
a00000047.freelist 4KB
a0000004f.freelist 4KB
a00000006.freelist 4KB
a0000004d.freelist 4KB
a0000004b.freelist 4KB
a00000026.freelist 4KB
a00000049.freelist 4KB
gdb 81B
a00000026.gdbindexes 1KB
a00000033.gdbindexes 1KB
a00000041.gdbindexes 1KB
a00000028.gdbindexes 1KB
a0000002a.gdbindexes 605B
a00000031.gdbindexes 430B
a0000002e.gdbindexes 430B
a0000003a.gdbindexes 430B
a00000038.gdbindexes 428B
a00000032.gdbindexes 428B
a0000002c.gdbindexes 428B
a0000002d.gdbindexes 426B
a0000002f.gdbindexes 426B
a00000030.gdbindexes 426B
a00000037.gdbindexes 426B
a00000039.gdbindexes 426B
a0000002b.gdbindexes 426B
共 488 条
- 1
- 2
- 3
- 4
- 5
资源评论
- dk12012-06-16内容比较多,都是vb的代码需要用户自行处理一下啊。
wljheart
- 粉丝: 1
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功