后记

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

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

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. 解决php中echo出来的汉子乱码

    问的人太多了,就列出来展示给大家! 需要了解的概念: Content-Type:用于定义用户的浏览器或相关设备如何显示将要加载的数据,或者如何处理将要加载的数据 MIME:MIME类型就是设定某种扩展 ...

  2. oracle rac理解和用途扩展

    Oracle RAC的优势在于利用多个节点(数据库实例)组成一个数据库,这样在保证了数据库高可用性的情况下更充分的利用了多个主机的性能,而且可以通过增加节点进行性能的扩展.实现Oracle RAC需要 ...

  3. windbg加载sos.dll

    SOS.dll 中提供的 Son of Strike 扩展 (SOS),用于调试 WinDbg 中的托管代码.在启动了调试程序并将其附加到托管进程(或加载故障转储) .load C:\Windows\ ...

  4. MVC3.0学习笔记之元模型元数据ModelMetaData以及模型元数据提供系统

    模型元数据ModelMetaData是MVC中很重要的概念,它包括但不仅限于 模型的类型,模型包含了哪些属性,属性都是什么类型的,属性上都有什么特性. ASP.NET MVC3.0 提供了默认的模型元 ...

  5. DB2 v9.1 RACF 瞎学笔记

    一.DB2 RACF control module 定义在prefix.SDSNSAMP(DSNXRXAC)中,查找一下数据集 符合*.SDSNSAMP数据集有两个,我这里使用的DB V9,自然pre ...

  6. 栈的图文解析 和 对应3种语言的实现(C/C++/Java)

    概要 本章会先对栈的原理进行介绍,然后分别通过C/C++/Java三种语言来演示栈的实现示例.注意:本文所说的栈是数据结构中的栈,而不是内存模型中栈.内容包括:1. 栈的介绍2. 栈的C实现3. 栈的 ...

  7. 数据可视化(5)--jqplot经典实例

    本来想把实例也写到上篇博客里,最后发现太长了,拆成两篇博客了. 实例来源于官方文档:http://www.jqplot.com/tests/ 这篇博客主要是翻译了官方文档关于经典实例的解说,并在相应代 ...

  8. eclispe使用外部tomcat总结

    1. 配置tomcat Servers-->new 配置tomcat的路径,即可 2. 增加/移除application 注意:移除application时请使用"clean" ...

  9. Angular系列----AngularJS入门教程00:引导程序(转载)

    我们现在开始准备编写AngularJS应用——phonecat.这一步骤(步骤0),您将会熟悉重要的源代码文件,学习启动包含AngularJS种子项目的开发环境,并在浏览器端运行应用. 进入angul ...

  10. 请求参数到表述层的类型转换——Struts2

    一.简介 说明:HTTP 协议传输数据没有类型的概念,在服务器端是通过 request.getParameter().request.getParameterValue() 方法得到请求参数为 Str ...