2.3.1 创建C#独立工程

1 Visual Studio.NET中创建一个新的解决方案(文件-->项目-->项目),弹出新建项目对话框,如下图:

(2.3-1)

2 选择Visual C#项目的“windows应用程序”。

3 输入工程名称为“EngineApp”,并作为默认的命名空间;选择工程存放的位置。

4 单击“确定”按钮,完成解决方案的创建。

5 修改窗体Form1name为“Frmmain”,作为系统的主窗体。Text设置为“一个简单的ArcEngine例子”。

 

2.3.2 ArcGIS类库的引用

1 手工加入ESRI assembly的引用,如图所示:

(2.3-2)

2 选择ESRI.ArcGIS.System添加其引用。

 

 

2.3.3 许可初始化

所有的应用必须在运行时初始化一个产品许可,使用esriSystem::Aoinitialize初始化产品许可。可以获得的产品许可有:ArcViewArceditorArcInofoEngineEngineGeoGDB

1 手工实现代码

    1)定义初始化变量m_AoInitialize(因在整个窗体中使用,所以需要定义为全局变量)

            /// <summary>

            /// 许可初始化变量

            /// </summary>

            private IAoInitialize m_AoInitialize = new AoInitializeClass();

        2)许可初始。在窗体“Frmmain”中增加Load事件,并添加如下代码:

            //许可初始化

            m_AoInitialize = new AoInitializeClass();

              m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);

        3)结束许可初始化。在窗体“Frmmain”中增加Closed事件,并添加如下代码:

            //结束初始化

            m_AoInitialize.Shutdown();

        4)为了在初始化的过程中更标准,我们对Load事件的代码进行完善和优化,完整代码如下:

        /// <summary>

        /// 许可初始化变量

        /// </summary>

        private IAoInitialize m_AoInitialize = new AoInitializeClass();

        private void Frmmain_Load(object sender, System.EventArgs e)

        {

            //************************************************************************

            //*许可初始化,开始

            //************************************************************************

            m_AoInitialize = new AoInitializeClass();

            if (m_AoInitialize == null)

            {

                MessageBox.Show("Unable to initialize. This application cannot run!");

                Application.Exit();

            }

            //初始化应用程序

            esriLicenseStatus licenseStatus = esriLicenseStatus.esriLicenseUnavailable;

            licenseStatus=m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);

            string message = "";

            //没有许可

            if (licenseStatus == esriLicenseStatus.esriLicenseNotInitialized)

            {

                message = "You are not licensed to run this product!";

            }

            //许可正在使用

            else if (licenseStatus == esriLicenseStatus.esriLicenseUnavailable)

            {

                message = "There are insuffient licenses to run!";

                MessageBox.Show (message);

                Application.Exit();

            }

            //未知错误

            else if (licenseStatus == esriLicenseStatus.esriLicenseFailure)

            {

                message = "Unexpected license failure! Please contact your administrator.";

                MessageBox.Show (message);

                Application.Exit();

            }

            //已经初始化

            else if (licenseStatus == esriLicenseStatus.esriLicenseAlreadyInitialized)

            {

                message = "The license has already been initialized! Please check your implementation.";

                MessageBox.Show (message);

                Application.Exit();

            }

           

            //************************************************************************

            //*许可初始化,结束

            //************************************************************************

        }

        private void Frmmain_Closed(object sender, System.EventArgs e)

        {

            //结束初始化

            m_AoInitialize.Shutdown();

            m_AoInitialize=null;

        }

2 使用License Control Manager 进行初始化

1)在工具箱中添加选项卡“ArcGIS

(2.3-3)

2)在选项卡“ArcGIS”中的右键菜单中,选择“添加/移除项”,添加组件。

(2.3-4)

(2.3-5)

3)选择“LicenseControl”控件,并单击“确定”添加到选项卡中。

(2.3-6)

4)像拖动其它控件一样,将LicenseControl控件添加到主窗体Frmmain上。

5)在窗体上选择加入的“LicenseControl”控件,并设置其属性。

(2.3-7)

注意:

    1.许可初始化必须在所有ArcObjects代码运行以前进行。

    2.在程序运行期间产品许可只能被确认一次。

    3.扩展许可可以在需要时被检入检出。

    4.不能合并或混合产品许可和扩展许可。

    5.应该写代码来检查可获取代码的级别并从中检出许可。

    6.尽可能使用最低级别的许可。

2.3.2 基本地图控件加载

    ArcGIS Engine提供了大量的高级开发控件,使开发人员可以建立或扩展GIS应用程序和创建高质量的地图用户界面,这些控件包括MapControlPageLayoutControlReaderControlTOCControlToolbarControl.GlobeControlSceneControl也可以获得,但使用这两个控件的应用程序必须具有ArcGIS Engine3D分析选项授权。这些控件都可以作为ActiveX控件、.NET Windows控件和Visual JavaBean获得。随着本教程的推进,我们逐步介绍常用的控件,在此我们首先介绍MapControl控件。

ArcGIS控件可以通过两种方式建立应用程序,首先,ArcGIS控件可以嵌入到现有的应用程序中以增加制图功能;其次,ArcGIS控件可用于创建新的独立应用程序。在前一种情况中,单个的ArcGIS控件可以嵌入到应用程序中,在后一中情况中,TOCControlToolbarControl控件可以其它的ArcGIS控件结合起来组成应用程序框架的组成部分。

2.3.2.1 MapControl控件

   MapControl控件是一个很有用的控件,当它添加到工程以后,对应于ArcMap桌面应用程序中的“数据”(Data View)。MapControl中封装了Map对象,用ArcMap创作的地图文档可以装载到MapControl中,以便节省开发人员编程创作的地图时间,它提供了许多方法、属性和事件,可以帮助我们完成以下主要功能:

1)管理控件的外观;

2)管理控件的显示属性;

3)管理Map的特性;

4)添加和管理控件中的地图图层数据,包括添加、删除数据文件,显示数据等。

2.3.2.2 添加MapControl控件

1)在选项卡“ArcGIS”中的右键菜单中,选择“添加/移除项”,添加组件。

(2.3-8)

(2.3-9)

3)选择“MapControl”控件,并单击“确定”添加到选项卡中。

(2.3-10)

4)像拖动其它控件一样,将MapControl控件添加到主窗体Frmmain上。

5)在窗体上选择加入的“MapControl”控件,并设置其属性。

注意:在添加MapControl的过程中系统会自动地添加ArcGIS的类库的引用。大家可以注意看看,都添加那些引用?

2.3.2.3 添加图层

   在这里我们通过设置MapControl控件的属性对话框来加载要显示的图层数据。实现步骤如下:

    1)右键单击MapControl控件,弹出右键菜单;

    2)在右键菜单中选择Properties菜单项,弹出属性对话框;

    3)选择Map标签;

    4)点击Add按钮并定位到需要添加的数据所在的目录(如);

    5)选取country.Shp文件。

(2.3-11)

2.3.2.4 地图和图层基本属性设置

    MapControl的属性页中可以设置地图和图层的相关属性项,设置完成后,单击“确认”关闭属性页,编译运行系统,可看到如下所示的结果。

 

(2.3-12)

到现在为止,我们实现了一个关于ArcGIS Engine的最基本的工程。当然,这只是一个最简单的工程,在后面的章节中,我们将详细的介绍如何实现高级的GIS功能,不断地丰富我们的这个工程功能,使它逐渐强大起来。

posted on 2006-10-11 13:56  地理信息人  阅读(3894)  评论(10)    收藏  举报