ArcEngine调用GP工具许可问题

一、环境:win11,arcgis10.1,vs2012

二、问题描述:在进行普通GP复制、相交操作时候正常,但是执行Erase擦除操作时候提示000824:The tool is not licensed错误。

image

三、问题分析与处理

自己之前做过相关的GP处理,结合报错信息判断,应该是许可问题,当前系统的许可授权方式为:

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

1、首先查看工具所需的许可类型(ArcGIS Help 10.1 - 擦除 (Analysis)

Desktop产品的许可分为Basic、Standard、Advanced三个级别;Engine产品许可分为Engine、EngineGeoDB两个级别。Engine许可相当于Desktop的Basic许可级别,EngineGeoDB许可相当于Desktop的Standard许可。

image

image

这里可以看到,普通的相交权限较低,Basic、Standard、Advanced三种许可的都可以使用,但是擦除工具只有Advanced许可可以使用。那么找到原因了在许可初始化时候设置许可类型即可。

//arcgis10.1:Erase、identify许可初始化方法
ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);

IAoInitialize ao = new AoInitialize();
ao.Initialize(ESRI.ArcGIS.esriSystem.esriLicenseProductCode.esriLicenseProductCodeAdvanced);

通过上述方法初始化许可成功解决。

这里使用的是ESRI.ArcGIS.ProductCode.Desktop许可,不要使用Engine或者EngineOrDesktop

四、注意事项

注意许可的初始化方式:

1、通过LicenseControl控件初始化许可;

2、像本文中使用代码初始化许可;

这里一定需要注意,两种许可初始化方式不要同时使用,否则会有冲突,同时一个许可在一个程序里面只能初始化一次,如果出现多次初始化也是不起作用的,这两个一定要注意,我一开始就是犯了这个错误,同时使用了代码初始化和LicenseControl控件,浪费了很长时间。

在此期间还尝试过其他的方式,包括:

设置GP工具的后台运行属性

image

设置arcmap的扩展属性

image


posted on 2025-08-11 18:04  jingkunliu  阅读(32)  评论(0)    收藏  举报

导航