ArcObjects拾遗之一——初始化许可

ArcObjects是ArcGIS的底层API,基于COM技术搭建,所以能够自然地支持C++,VB,.Net在内的多种语言。然而也因为是基于COM的,所以它的API很是难用(相比.Net framework那样的)。虽然我用它来开发也有些时日了,但每次用起来,总能遇到一些烦人的小问题。既然这样,那就把他们记录下来,和大家一起分享好了。

 

我所用的系统环境是Windows 7 64位,Visual Studio 2010和ArcGIS 9.3/10。
当然,对于使用ArcObjects的项目,都请先在项目属性中设定生成的目标平台X86(考虑到64位的开发环境和运行环境)。

ArcObjects拾遗之一——初始化许可

Visual Studio 2010对所有ArcObjects的引用,都缺省设定了嵌入互操作类型:True
所以大家在我的代码中看不到组件类后面的-Class后缀。

ArcObjects拾遗之一——初始化许可


请使用Visual Studio 2008或者更低版本的同学把-Class后缀加上

 

在调用其他ArcObjects API之前,首先得初始化许可证:

using System;

using ESRI.ArcGIS.esriSystem; // ESRI.ArcGIS.System.dll

// using ESRI.ArcGIS.Version;



// 省略若干行



static void Initialize()

{

    // ArcGIS10需要绑定产品代码

    //RuntimeManager.Bind(ProductCode.EngineOrDesktop);



    // 初始化AO许可

    var aoi = new AoInitialize();

    var s = aoi.Initialize(

        esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);



    if (s == esriLicenseStatus.esriLicenseUnavailable)

        throw new NotSupportedException("请求的许可不可用");

}

 

ArcGIS 10新加了一个RuntimeManger(包含在ESRI.ArcGIS.Version中,这个dll也是新增的),在初始化AO前必须调用它的Bind方法,绑定对应的产品。

此外,esriLicenseProductCode一般可是设成Engine,在需要访问Geodatabase的时候,得设成EngineGeoDB(当然,前提是你有那GeoDB的许可)。

 

 

 

你可能感兴趣的:(object)