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 分析功能和丰富的空间处理工具。

另外,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。

 

ArcEngine10.x开发的许可问题的更多相关文章

  1. ArcEngine中License权限等级更改的问题

    曾经认为自己对于ArcGIS 开发许可问题比较理解了,并小结在<ArcEngine10.x开发的许可问题>中. 01.权限问题 今天在调用GP时失败(插值式开发,使用的是他人框架),因为需 ...

  2. ArcEngine9.3迁移至ArcObject10.1

    以前写的程序,现在看起来真是相当的青涩,当时写的东西是显得多么地无知啊,很多应该写成一个类,有些需要优化,需要多线程,代码需要加密--总一种想修改的冲动.但这也需要时间和精力.下面准备将原来的程序进行 ...

  3. 轻松搭建Windows8云平台开发环境

    原文:轻松搭建Windows8云平台开发环境 Windows Store应用是基于Windows 8操作系统的新一代Windows应用程序,其开发平台以及运行模式和以往传统平台略有不同.为了帮助更多开 ...

  4. APP store 上架过程中碰到的那些坑&被拒的各种奇葩原因整理&审核指南中文版

    苹果官方发布的十大常见被拒原因 1.崩溃次数和Bug数量.苹果要求开发者在将应用提交给App Store之前彻查自己的应用,以尽量避免Bug的存在. 2.链或错误的链接.应用中所有的链接必须是真实且有 ...

  5. LVL类及接口使用介绍(License Verification Library )

    原文:http://android.eoe.cn/topic/android_sdk LVL Classes and Interfaces-LVL类和接口 Table 1 lists all of t ...

  6. 了解Kubernetes主体架构(二十八)

    前言 Kubernetes的教程一直在编写,目前已经初步完成了以下内容: 1)基础理论 2)使用Minikube部署本地Kubernetes集群 3)使用Kubeadm创建集群 接下来还会逐步完善本教 ...

  7. VisionPro和Halcon的详细对比

    一.概括的对比 1.1  Halcon的优势 Halcon有着更加低廉的Lisence 1.并且提供更好.更强大的2D和3D的视觉软件库 2.Halcon支持的视觉图像采集设备数量是Visionpro ...

  8. 剖析虚幻渲染体系(14)- 延展篇:现代渲染引擎演变史Part 1(萌芽期)

    目录 14.1 本篇概述 14.1.1 游戏引擎简介 14.1.2 游戏引擎模块 14.1.3 游戏引擎列表 14.1.3.1 Unreal Engine 14.1.3.2 Unity 14.1.3. ...

  9. BizTalk开发系列(三十八)微软BizTalk Server定价和许可[解读]

    做BizTalk的项目一段时间了,但是对BizTalk的价格和许可还不是很了解.给客户设计解决方案时大部分产品都是直接按照企业版的功能来设计,很 少考虑到价格和许可方面的因素,以为这个不是我们的事情或 ...

随机推荐

  1. hdu 1026 bfs+记录路径

    题意:从0,0点出发到n-1,m-1点,路上的数字代表要在这个点额外待多少秒,求最短的路 递归输出路径即可 #include<cstdio> #include<iostream> ...

  2. 【洛谷】2473:[SCOI2008]奖励关【期望DP(倒推)】

    P2473 [SCOI2008]奖励关 题目背景 08四川NOI省选 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不 ...

  3. Python168的学习笔记4

    关于普通文本文件的读写 python2.7中,未注明的字符都是以acsii来编码的,而要让字符能够通用,必须声明为unicode. s=u'你好',s.encode('utf8')就是指用utf8来进 ...

  4. redux基础(1)

    redux ps:每个案例都是接着上一个案例写的 主要以案例讲解如何使用,具体概念请参考如下: 基本概念参考1 基本概念参考2 案例源码戳这里 一.Store.Action.Reducer简介 Sto ...

  5. MySQL从库com_insert无变化的原因

    大家都知道com_insert等com_xxx参数可以用来监控数据库实例的访问量,也就是我们常说的QPS.并且基于MySQL的复制原理,所有主库执行的操作都会在从库重放一遍保证数据一致,那么主库的co ...

  6. HDU 4649 Professor Tian(反状态压缩dp,概率)

    本文出自   http://blog.csdn.net/shuangde800 题目链接:点击打开链接 题目大意 初始有一个数字A0, 然后给出A1,A2..An共n个数字,这n个数字每个数字分别有一 ...

  7. Java学习笔记_22_Set接口的实现类

    22.Set接口的实现类: Set接口存放的元素是无序的且不包括反复元素. 1>实现类HashSet: HashSet类依据元素的哈希码进行存放,取出时也能够依据哈希码高速找到.HashSet不 ...

  8. FolderSync :The various features and how to use them

    Help - Tacit Dynamics Help This page describes the various features of FolderSync and how to use the ...

  9. oracle 存储过程循环体中的return和exit区别:

    oracle 存储过程循环体中的return和exit区别:   (1) return 跳出整个循环,终止该循环, 后面的不再执行.     相当于 Java 中的break;   (2)  exit ...

  10. java string常见操作题

    1. 每个基本类型封装类都有将string转换为基本数据类型的方法 对于非常大的数字请使用Long,代码如下 int age = Integer.parseInt("10");  ...