ArcGIS例子

2019-08-20 18:57

C#,ArcGIS Engine开发入门教程

利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用

Lcwld 整理

此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤。

你可以在下面的目录下找到相应的样例程序:

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

注:ArcGIS样例程序不包含在ArcGIS Engine开发工具包“典型”安装方式中。如果你没有安装它们,则可以重新运行开发工具包安装向导,选择“定制”或“修改”方式,并选择软件开发包下的样例项进行安装。

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 = @\

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控件的绑定控件

对于此应用程序,TOCControl和ToolbarControl控件将与

PageLayoutControl相互协作,而不是MapControl。为此PageLayoutControl必须设置为绑定控件。TOCControl使用绑定的ActiveView显示图形、图层和符号。而位于ToolbarControl上的任何命令、工具或菜单项会受绑定控件的显示影响。

1. 在Form_Load事件中的加载文档代码的后面键入以下红色部分内容:

private void Form1_Load(object sender, System.EventArgs e) {

// 使用相对路径向PageLayoutControl加载一个图形文档

string filename = @\ if ( axPageLayoutControl1.CheckMxFile(filename) ) {

axPageLayoutControl1.LoadMxFile(filename, \

}

// 设置绑定控件

axTOCControl1.SetBuddyControl(axPageLayoutControl1); axToolbarControl1.SetBuddyControl(axPageLayoutControl1); }

2. 生成并运行应用程序。图形文档被加载到PageLayoutControl,并且TOCControl列出了图形文档中的数据图层。使用TOCControl通过

复选和取消复选框控制图层的可见性。默认地,图形文档的焦点图(focus map)被装入MapControl控件。在这种当前情况下,ToolbarControl控件显示是空的,因为没有为它添加任何命令。试着缩放窗体,你会注意到控件不会改变尺寸。

(五) 处理窗口缩放

当窗口在运行时进行缩放时,PageLayoutControl和MapControl不会自动改变自身的尺寸。要改变控件的尺寸以便它们总是与匹配窗口的范围,你必须将控件锚定在窗口上。如果PageLayoutControl或MapControl包含大量的数据,在窗口缩放期间重绘这些数据显得相当重要。为了提高执行效率,你可以禁止数据重绘直到缩放操作完成后再重绘之。在缩放时,可以用一个可伸缩的位图来替代重绘数据。

1. 在设计模式显示窗体并从属性窗口中选择axPageLayoutControl1。单击Anchor属性,将axPageLayoutControl1锚

定在窗体的顶、左、底和右部。

2. 锚定axMapControl控件到窗体的顶、左和底部。 3. 在Form_Load事件的开头增加以下代码:

// 当缩放时禁止重绘

this.SetStyle(ControlStyles.EnableNotifyMessage, true);

4. 向类增加以下常量:

public class Form1 : System.Windows.Forms.Form

{

// ??

private const int WM_ENTERSIZEMOVE = 0x231; private const int WM_EXITSIZEMOVE = 0x232;

// ?? }

5. 向重载的OnNotifyMessage方法中增加下列代码:


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

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

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

马上注册会员

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