zoukankan      html  css  js  c++  java
  • Arcengine实现创建网络数据集札记(三)

    后记

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

        AE许可初始化封装类:

      1 public class AELicenseChecker
      2 
      3 {
      4 
      5          private static volatile AELicenseChecker _instance = null;
      6 
      7          private static readonly object lockHelper = new object();
      8 
      9         
     10 
     11        //AE许可对象
     12 
     13    private IAoInitialize _aoInitialize = null;
     14 
     15  
     16 
     17          private AELicenseChecker()
     18 
     19          {
     20 
     21                    ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
     22 
     23          }
     24 
     25  
     26 
     27      /// <summary>
     28 
     29      /// 单例对象
     30 
     31      /// </summary>
     32 
     33      /// <returns></returns>
     34 
     35          public static AELicenseChecker CreateInstance()
     36 
     37          {
     38 
     39                    if (_instance == null)
     40 
     41                    {
     42 
     43                             lock (lockHelper)
     44 
     45                             {
     46 
     47                                      if (_instance == null)
     48 
     49                                                _instance = new AELicenseChecker();
     50 
     51                             }
     52 
     53                    }
     54 
     55                    return _instance;
     56 
     57          }
     58 
     59     /// <summary>
     60 
     61     /// 初始化许可
     62 
     63     /// </summary>
     64 
     65     /// <param name="pruductcode">产品类型</param>    
     66 
     67    public  void  InitApplicationwithProductCode(esriLicenseProductCode pruductcode)
     68 
     69          {
     70 
     71                    try
     72 
     73                    {
     74 
     75                             if (_aoInitialize == null)
     76 
     77                                      _aoInitialize = new AoInitializeClass();
     78 
     79  
     80 
     81                             ESRI.ArcGIS.esriSystem.esriLicenseStatus licenseStatus = (ESRI.ArcGIS.esriSystem.esriLicenseStatus)_aoInitialize.IsProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
     82 
     83                             if (licenseStatus == esriLicenseStatus.esriLicenseAvailable)
     84 
     85                             {
     86 
     87                                      licenseStatus = (esriLicenseStatus)_aoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
     88 
     89                                      if (licenseStatus != esriLicenseStatus.esriLicenseCheckedOut)
     90 
     91                                      {
     92 
     93                                               throw new Exception("没有ArcEngine中的GDBEdit许可!");
     94 
     95                                      }
     96 
     97                             }
     98 
     99                             else
    100 
    101                             {
    102 
    103                                      throw new Exception("没有ArcEngine中的GDBEdit许可!");
    104 
    105                             }
    106 
    107  
    108 
    109                             _aoInitialize.Initialize(pruductcode);
    110 
    111                    }
    112 
    113                    catch (Exception ex)
    114 
    115                    {
    116 
    117                      
    118 
    119                             throw ex;
    120 
    121                    }
    122 
    123  
    124 
    125          }
    126 
    127  
    128 
    129          /// <summary>
    130 
    131          /// 停止许可对象
    132 
    133          /// </summary>
    134 
    135          /// <param name="ExtensionCode">扩展类型,可选</param>
    136 
    137          public void ShutdownApplication(params esriLicenseExtensionCode[] ExtensionCodes)
    138 
    139          {
    140 
    141                    try
    142 
    143                    {
    144 
    145                             if (_aoInitialize == null) return;
    146 
    147  
    148 
    149                             if (ExtensionCodes.Length >=1)
    150 
    151                             {
    152 
    153                                      esriLicenseExtensionCode ExtensionCode = ExtensionCodes[0];
    154 
    155                                      _aoInitialize.CheckInExtension(ExtensionCode);
    156 
    157                             }
    158 
    159                            
    160 
    161                             //关闭 AoInitilaize对象
    162 
    163                             _aoInitialize.Shutdown();
    164 
    165                             _aoInitialize = null;
    166 
    167                    }
    168 
    169                    catch (Exception ex)
    170 
    171                    {
    172 
    173                             throw ex;
    174 
    175  
    176 
    177                    }
    178 
    179          }
    180 
    181  
    182 
    183          /// <summary>
    184 
    185          /// 初始化带扩展的许可
    186 
    187          /// </summary>
    188 
    189          /// <param name="pruductcode">产品类型</param>
    190 
    191          /// <param name="ExtensionCode">扩展类型</param>
    192 
    193          public void InitApplicationwithExtensionCode(esriLicenseProductCode pruductcode, esriLicenseExtensionCode ExtensionCode)
    194 
    195          {
    196 
    197                    try
    198 
    199                    {
    200 
    201                             //esriLicenseStatus myLicenseStatus = this.CheckOutLicenses(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
    202 
    203  
    204 
    205                             esriLicenseStatus myLicenseStatus = this.CheckOutExtensionLicenses(pruductcode, ExtensionCode);
    206 
    207  
    208 
    209  
    210 
    211                             if (myLicenseStatus == esriLicenseStatus.esriLicenseNotLicensed)
    212 
    213                             {
    214 
    215                                      throw new Exception("本机器没有安装ArcEngine扩展认证,请安装!");
    216 
    217                             }
    218 
    219  
    220 
    221                             else if (myLicenseStatus == esriLicenseStatus.esriLicenseUnavailable)
    222 
    223                             {
    224 
    225                                      throw new Exception("本机器上安装的ArcEngine扩展认证不可用,请重新安装!");
    226 
    227                             }
    228 
    229  
    230 
    231                             else if (myLicenseStatus == esriLicenseStatus.esriLicenseFailure)
    232 
    233                             {
    234 
    235                                      throw new Exception("本机器上的ArcEngine扩展认证启动失败,请联系管理员!");
    236 
    237                             }
    238 
    239  
    240 
    241                             else if (myLicenseStatus == esriLicenseStatus.esriLicenseCheckedOut)
    242 
    243                             {
    244 
    245                                      return;
    246 
    247                             }
    248 
    249                    }
    250 
    251                    catch (Exception ex)
    252 
    253                    {
    254 
    255                      
    256 
    257                             throw ex;
    258 
    259                    }
    260 
    261  
    262 
    263          }
    264 
    265  
    266 
    267  
    268 
    269          /// <summary>
    270 
    271          /// 检测带扩展的证书
    272 
    273          /// </summary>
    274 
    275          /// <param name="pProductCode">esriLicenseProductCode.esriLicenseProductCodeEngine</param>
    276 
    277          /// <param name="ExtensionCode">esriLicenseExtensionCode.esriLicenseExtensionCodeNetwork</param>
    278 
    279          /// <returns></returns>
    280 
    281          private esriLicenseStatus CheckOutExtensionLicenses(esriLicenseProductCode pProductCode, esriLicenseExtensionCode ExtensionCode)
    282 
    283          {
    284 
    285                    try
    286 
    287                    {
    288 
    289                             esriLicenseStatus myLicenseStatus = esriLicenseStatus.esriLicenseUnavailable;
    290 
    291  
    292 
    293                      
    294 
    295                             if (this._aoInitialize == null)
    296 
    297                             {
    298 
    299                                      _aoInitialize = new AoInitializeClass();
    300 
    301                                     
    302 
    303                             }
    304 
    305  
    306 
    307                             myLicenseStatus = this._aoInitialize.IsExtensionCodeAvailable(pProductCode, ExtensionCode);
    308 
    309                             if (myLicenseStatus == esriLicenseStatus.esriLicenseAvailable)
    310 
    311                             {
    312 
    313                                      myLicenseStatus = this._aoInitialize.Initialize(pProductCode);
    314 
    315                                      if (myLicenseStatus == esriLicenseStatus.esriLicenseCheckedOut)
    316 
    317                                      {
    318 
    319                                                myLicenseStatus = this._aoInitialize.CheckOutExtension(ExtensionCode);
    320 
    321                                      }
    322 
    323                             }
    324 
    325                            
    326 
    327                             return myLicenseStatus;
    328 
    329                    }
    330 
    331                    catch (Exception ex)
    332 
    333                    {
    334 
    335                     
    336 
    337                             throw ex;
    338 
    339                    }
    340 
    341          }
    342 
    343  
    344 
    345 }
    346 
    347  
    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/

     

  • 相关阅读:
    讨喜的隔离可变性(十三)角色的特性
    讨喜的隔离可变性(十三)角色的特性
    解锁不可见索引新特性,处理ORA-01555故障
    django url 正则匹配
    django 往session写信息
    django 判断用户是否登录
    django 管理session
    Python爬虫入门教程 1-100 CentOS环境安装
    django session管理
    案发现场:被注入的软件及 ORA-600 16703 灾难的恢复
  • 原文地址:https://www.cnblogs.com/chuzhouGIS/p/3576183.html
Copyright © 2011-2022 走看看