后记

下面给出项目中用到的自定义的封装类。

AE许可初始化封装类:

 public class AELicenseChecker

 {

          private static volatile AELicenseChecker _instance = null;

          private static readonly object lockHelper = new object();

        //AE许可对象

    private IAoInitialize _aoInitialize = null;

          private AELicenseChecker()

          {

                    ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);

          }

      /// <summary>

      /// 单例对象

      /// </summary>

      /// <returns></returns>

          public static AELicenseChecker CreateInstance()

          {

                    if (_instance == null)

                    {

                             lock (lockHelper)

                             {

                                      if (_instance == null)

                                                _instance = new AELicenseChecker();

                             }

                    }

                    return _instance;

          }

     /// <summary>

     /// 初始化许可

     /// </summary>

     /// <param name="pruductcode">产品类型</param>    

    public  void  InitApplicationwithProductCode(esriLicenseProductCode pruductcode)

          {

                    try

                    {

                             if (_aoInitialize == null)

                                      _aoInitialize = new AoInitializeClass();

                             ESRI.ArcGIS.esriSystem.esriLicenseStatus licenseStatus = (ESRI.ArcGIS.esriSystem.esriLicenseStatus)_aoInitialize.IsProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);

                             if (licenseStatus == esriLicenseStatus.esriLicenseAvailable)

                             {

                                      licenseStatus = (esriLicenseStatus)_aoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);

                                      if (licenseStatus != esriLicenseStatus.esriLicenseCheckedOut)

                                      {

                                               throw new Exception("没有ArcEngine中的GDBEdit许可!");

                                      }

                             }

                             else

                             {

                                      throw new Exception("没有ArcEngine中的GDBEdit许可!");

                             }

                             _aoInitialize.Initialize(pruductcode);

                    }

                    catch (Exception ex)

                    {

                             throw ex;

                    }

          }

          /// <summary>

          /// 停止许可对象

          /// </summary>

          /// <param name="ExtensionCode">扩展类型,可选</param>

          public void ShutdownApplication(params esriLicenseExtensionCode[] ExtensionCodes)

          {

                    try

                    {

                             if (_aoInitialize == null) return;

                             if (ExtensionCodes.Length >=)

                             {

                                      esriLicenseExtensionCode ExtensionCode = ExtensionCodes[];

                                      _aoInitialize.CheckInExtension(ExtensionCode);

                             }

                             //关闭 AoInitilaize对象

                             _aoInitialize.Shutdown();

                             _aoInitialize = null;

                    }

                    catch (Exception ex)

                    {

                             throw ex;

                    }

          }

          /// <summary>

          /// 初始化带扩展的许可

          /// </summary>

          /// <param name="pruductcode">产品类型</param>

          /// <param name="ExtensionCode">扩展类型</param>

          public void InitApplicationwithExtensionCode(esriLicenseProductCode pruductcode, esriLicenseExtensionCode ExtensionCode)

          {

                    try

                    {

                             //esriLicenseStatus myLicenseStatus = this.CheckOutLicenses(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);

                             esriLicenseStatus myLicenseStatus = this.CheckOutExtensionLicenses(pruductcode, ExtensionCode);

                             if (myLicenseStatus == esriLicenseStatus.esriLicenseNotLicensed)

                             {

                                      throw new Exception("本机器没有安装ArcEngine扩展认证,请安装!");

                             }

                             else if (myLicenseStatus == esriLicenseStatus.esriLicenseUnavailable)

                             {

                                      throw new Exception("本机器上安装的ArcEngine扩展认证不可用,请重新安装!");

                             }

                             else if (myLicenseStatus == esriLicenseStatus.esriLicenseFailure)

                             {

                                      throw new Exception("本机器上的ArcEngine扩展认证启动失败,请联系管理员!");

                             }

                             else if (myLicenseStatus == esriLicenseStatus.esriLicenseCheckedOut)

                             {

                                      return;

                             }

                    }

                    catch (Exception ex)

                    {

                             throw ex;

                    }

          }

          /// <summary>

          /// 检测带扩展的证书

          /// </summary>

          /// <param name="pProductCode">esriLicenseProductCode.esriLicenseProductCodeEngine</param>

          /// <param name="ExtensionCode">esriLicenseExtensionCode.esriLicenseExtensionCodeNetwork</param>

          /// <returns></returns>

          private esriLicenseStatus CheckOutExtensionLicenses(esriLicenseProductCode pProductCode, esriLicenseExtensionCode ExtensionCode)

          {

                    try

                    {

                             esriLicenseStatus myLicenseStatus = esriLicenseStatus.esriLicenseUnavailable;

                             if (this._aoInitialize == null)

                             {

                                      _aoInitialize = new AoInitializeClass();

                             }

                             myLicenseStatus = this._aoInitialize.IsExtensionCodeAvailable(pProductCode, ExtensionCode);

                             if (myLicenseStatus == esriLicenseStatus.esriLicenseAvailable)

                             {

                                      myLicenseStatus = this._aoInitialize.Initialize(pProductCode);

                                      if (myLicenseStatus == esriLicenseStatus.esriLicenseCheckedOut)

                                      {

                                                myLicenseStatus = this._aoInitialize.CheckOutExtension(ExtensionCode);

                                      }

                             }

                             return myLicenseStatus;

                    }

                    catch (Exception ex)

                    {

                             throw ex;

                    }

          }

 }

AELicenseChecker定义

参考文献:

1 ESRI,网络分析,http://help.arcgis.com/zh-cn/ARCGISDESKTOP/10.0/HELP../index.html#/na/004700000001000000/

2 何宇兵, 网络分析与网络数据集,http://wenku.baidu.com/link?url=z1SUivF9acs6-WfNfSU4SjnyioLJyIHoqlB5_WtLiFEqhq_xDKUpNBbwk2tPzW2NIfkGRus_zao6JuQsC4h0LYZQHJVdcu_X6PKLWBVpj-7

3  ArcGIS的SanFrancisco网络数据集制作(网络分析数据篇),http://virgoooos.iteye.com/blog/340568

4  esri example:How to create a network dataset, http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//0001000000w7000000

5  AO许可问题,http://www.cnblogs.com/qb371/archive/2011/10/12/2366295.html

6 创建网络数据集(How to Create a Geodatabase Network Dataset),http://blog.sina.com.cn/s/blog_5d25ac4e0100uu47.html

7  arcengine创建network dataset,http://www.cnblogs.com/gisoracle/archive/2010/10/09/1846856.html

8 创建network dataset,http://jhlong12345.blog.163.com/blog/static/12306312920137217205787/

9  How to create a multimodal network dataset,http://edndoc.esri.com/arcobjects/9.2/net/de3d1979-ae9f-4e0a-8fba-6dc351e76822.htm

10 扩展许可设置,http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/How_to_use_extensions/00010000033w000000/

Arcengine实现创建网络数据集札记(三)的更多相关文章

  1. Arcengine实现创建网络数据集札记(二)

    四 ArcEngine实现创建网络数据集 ArcEngine创建网络数据集的过程,与ArcMap设置的过程类似,主要通过六个步骤即可以实现. 1 定义网络数据集对象,并设置基本属性,包括网络数据集名称 ...

  2. Arcengine实现创建网络数据集札记(一)

    一 引子 网络数据集,GIS空间分析基础的理论和知识,是最短路径分析.连通性分析等其他空间分析技术的数据基础. 以往,网络数据集的研究很少,此次项目开发过程中,对网络数据集以及arcengine创建网 ...

  3. ArcGIS 网络分析[8.3] 设置IDENetworkDataset的属性及INetworkDataset的对比/创建网络数据集

    创建网络数据集就得有各种数据和参数,这篇文章很长,慎入. 网络分析依赖于网络数据集的质量,这句话就在这里得到了验证:复杂.精确定义. 本节目录如下: 1. INetworkDataset与IDENet ...

  4. ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

    前言 似乎除了官方介绍的例子,我还没有在网上见过一篇介绍如何"使用自己的数据"创建"网络数据集"的文章. 有介绍几何网络的,有介绍如何用官方SanFrancis ...

  5. ArcGIS 网络分析[1.5] 使用点线数据一起创建网络数据集(如何避免孤立点/点与线的连通性组合结果表)

    ArcGIS中最基本的三种矢量数据是什么?点线面. 网络中除了路网之外,还会有地物点. 如上图,我们在建立网络数据集的时候,作为实验,当然可以只是公路网.但是在大型的决策任务中,网络数据集就不只是公路 ...

  6. ArcGIS 网络分析[8.2] 资料2 使用IDatasetContainer2接口的CreateDataset方法创建网络数据集

    上节提及如何使用IDatasetContainer2接口访问到网络数据集,上例可以封装为一个方法. 这节就使用IDatasetContainer2接口(Geodatabase类库)的CreateDat ...

  7. ArcGIS 网络分析[8.1] 资料1 使用AO打开或创建网络数据集之【打开】

    为了创建或打开一个网络数据集,你必须使用NetworkDatasetFDExtension对象(文件地理数据库中的数据集)或NetworkDatasetWorkspaceExtension对象(对于S ...

  8. ArcGIS 网络分析[1.3] 在个人地理数据库中创建网络数据集/并简单试验最佳路径

    上篇使用shp文件创建网络数据集,然而在ArcGIS 9中就支持地理数据库了,数据库的管理更为科学强大. 本篇就使用个人地理数据库进行建立网络数据集,线数据仍然可以是1.1中的线数据,但是我做了一些修 ...

  9. ArcGIS 网络分析[1.2] 利用1.1的线shp创建网络数据集/并简单试验最佳路径

    上篇已经创建好了线数据(shp文件格式)链接:点我 这篇将基于此shp线数据创建网络数据集. 在此说明:shp数据的网络数据集仅支持单一线数据,也就是说基于shp文件的网络数据集,只能有一个shp线文 ...

随机推荐

  1. ASP.NET MVC 4 Web编程

    http://spu.jd.com/11309606.html 第1章 入门第2章 控制器第3章 视图第4章 模型第5章 表单和HTML辅助方法第6章 数据注解和验证第7章 成员资格.授权和安全性第8 ...

  2. redmin3 忘记管理密码找回方法

    在网上找了一下都是redmine2的,而且比较复杂. 后来我看了一下redmin的数据库,如下: 注册一个新用户把admin的值改为1即可,就是管理员了. 如果忘记数据库密码,可以参考此文档修改数据库 ...

  3. 如何自学Android--转

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51217319 1. Java知识储备 本知识点不做重点讲解: 对于有基础的同学推荐看<J ...

  4. 直接拿来用!最火的Android开源项目

    GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你 ...

  5. js-初步了解

    一.javascript的由来 Javascript是一种web技术,最初起名叫LiveScript,它是Netscape开发出来一种脚本语言,其目的是为了扩展基本的Html的功能,用来替代复杂的CG ...

  6. UWP开发入门(二十)——键盘弹起时变更界面布局

    UWP APP在键盘弹起或隐藏时,并不会自动处理界面布局.有时会出现键盘遮挡了下一个需要填写的文本框,或是下一步按钮的情况.本篇我们以登录界面做例子,用一种巧妙简单的方式在键盘弹起和隐藏时更改界面的布 ...

  7. R提高篇(二): 图形初阶

    目录: 图形示例 图形参数 符号.线条 颜色 文本属性 尺寸与边界 自定义标题 自定义坐标轴 图例 文本标注 图形组合 图形示例 如下代码描述病人对两种药物五个剂量水平上的响应情况 > myda ...

  8. SQL Server技术问题之触发器优缺点

    优点: 1.强化约束:强制复杂业务的规则和要求,能实现比check语句更为复杂的约束. 2.跟踪变化:触发器可以侦测数据库内的操作,从而禁止数据库中未经许可的更新和变化. 3.级联运行:侦测数据库内的 ...

  9. Main.storyboard中使用navigationController

    传统使用navigationController的创建是在appdelegate中,使用storyboard的话必须在Main.storyboard文件中创建. 1.选中创建的navigationCo ...

  10. iOS实现图像的反色,怀旧,色彩直方图效果

    反色是与原色叠加可以变为白色的颜色,即用白色(RGB:1.0,1.0,1.0)减去原色的颜色.比如说红色(RGB:1.0,0,0)的反色是青色(0,1.0,1.0).在OPENGL ES中为1. 通过 ...