ArcEngine10.x开发的许可问题

简介: 1. ArcEngine9.x迁至ArcEngine10.x   相信很多同学都知道,在ArcEngine9.x下正常编译的代码到ArcEngine10.x会报错:ArcGIS version not specified.

1. ArcEngine9.x迁至ArcEngine10.x

  相信很多同学都知道,在ArcEngine9.x下正常编译的代码到ArcEngine10.x会报错:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS components.

  解决方法是添加Version引用,在InitializeComponent之前绑定桌面产品:

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

  这称之为Runtime绑定,即任何ArcObjects代码(包括许可初始化代码)被执行之前,指定相称的ArcGIS产品——ArcGIS Desktop或者ArcGIS Engine应用程序。绑定的ProductCode有ArcReader、Engine、Desktop、EngineOrDesktop、Server五种类型,一般建议是EngineOrDesktop。

2. ArcGIS for Desktop产品级别

  我们必须了解Desktop产品级别,以便确定调用功能所涉及的许可权限。在ArcGIS9.x中分为ArcInfo/ArcEditor /ArcView/ ArcReader等新产品,而ArcGIS10.x则换了一个方法,分为三大级别的新产品。

ArcGIS for Desktop 基础版:提供了综合性的数据使用、制图、分析,以及简单的数据编辑和空间处理工具。

ArcGIS for Desktop 标准版:在 ArcGIS for Desktop 基础版的功能基础上,增加了对 Shapefile 和 Geodatabase 的高级编辑和管理功能。

ArcGIS for Desktop 高级版:是一个旗舰式的 GIS 桌面产品,在 ArcGIS for Desktop标准版的基础上,扩展了复杂的 GIS 分析功能和丰富的空间处理工具。

clip_image002

  另外,ArcGIS 还提供了两个免费的桌面端产品。ArcReader,免费的地图数据(PMF)浏览、查询以及打印出版工具;ArcGIS Explorer Desktop:相比 ArcReader 更强大,支持浏览本地数据和 ArcGIS for Server 提供的服务,支持数据的查询和分析任务,具有开放性和互操作能力。

  虽然大家都是用的盗版,拥有最高级别的新产品,但不小心则会在开发过程中遇到权限问题。

3. 初始化许可的两种方法

  直接式:编写AoInitialize代码,一般来说,可以使用ArcGIS许可初始化向导。对于开发者来说,可以使用Visual Studio集成开发环境下的ESRI工具,通过Add ArcGIS License Checking命令可以调用ArcGIS许可初始化向导。

  间接式:在Windows窗体上放置一个LicenseControl控件。

  示例:(ArcEngine10.1环境下)

private static LicenseInitializer m_AOLicenseInitializer = new ArcEngineTest.LicenseInitializer();
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
    //绑定Runtime
    if (!RuntimeManager.Bind(ESRI.ArcGIS.Engine))
    {
        if (!ESRI.ArcGIS.RuntimeManager.Bind(ProductCode.Desktop))
        {
            MessageBox.Show("不能绑定ArcGIS runtime,应用程序即将关闭.");
            return;
        }
    }
    //初始化产品代码和扩展代码

    m_AOLicenseInitializer.InitializeApplication(
    new esriLicenseProductCode[] { esriLicenseProductCode.esriLicenseProductCodeStandard },
    new esriLicenseExtensionCode[] { esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst, 
    esriLicenseExtensionCode.esriLicenseExtensionCodeNetwork,
    esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst,
    esriLicenseExtensionCode.esriLicenseExtensionCodeDataInteroperability });

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Main());

    //关闭程序后关闭许可初始化
    m_AOLicenseInitializer.ShutdownApplication();
}

(1) AreEngine许可类型一旦执行后,在程序运行期间无法进行修改;

(2) 使用扩展模块中的功能时,不但要初始化ProductCode,还要初始化ExtensionCode;

(3) 使用GP调用了spatialanaly中的工具,报错:the tool is not licensed,是因没许可初始化是没有初始化ExtensionCode。

 

 
目录
相关文章
|
8月前
|
算法 NoSQL 区块链
Avatar阿凡达众筹模式项目开发合约源代码详情
def contribute(): data = request.get_json() campaign_name = data[&#39;name&#39;] contribution_amount = data[&#39;amount&#39;]
|
11月前
关于原创工具箱版本更新问题的解决
关于原创工具箱版本更新问题的解决
121 0
|
C# 开发工具
基于C#的ArcEngine二次开发47:Addins常见问题解决方案集锦
基于C#的ArcEngine二次开发47:Addins常见问题解决方案集锦
基于C#的ArcEngine二次开发47:Addins常见问题解决方案集锦
|
Linux 开发工具 Android开发
嵌入式软件开发十二种开发工具与链接之优秀
嵌入式软件开发十二种开发工具与链接之优秀
93 0
嵌入式软件开发十二种开发工具与链接之优秀
|
开发者
苹果开发者计划许可协议更新:持续更新
苹果开发者计划许可协议更新:持续更新
199 0
苹果开发者计划许可协议更新:持续更新
|
Python
Qt发布版权问题
Qt发布版权问题
1333 0
Qt发布版权问题
|
数据库 开发者
Dropplets 重拾简单的开源博客平台 Markdown 撰写、上传即发布
Dropplets 是一个开源的博客平台,让写博客变得更简单。无需数据库,你可以在几十秒内在任何服务器上安装 Dropplets。博客可以离线使用 Markdown 撰写,然后上传即可发布。
245 0
Dropplets 重拾简单的开源博客平台 Markdown 撰写、上传即发布
|
安全 前端开发 Java
权限设计的杂谈
这篇文章的定位,不是宣传某个框架,仅仅之是梳理一下有关权限方面的一些想法和最近项目中的一些探索过程。
2566 0

热门文章

最新文章