Arcengin调用GP工具“对COM组件的调用返回了错误 HRESULTE_FAIL”解决方法 - Go语言中文社区

Arcengin调用GP工具“对COM组件的调用返回了错误 HRESULTE_FAIL”解决方法


最近在项目里面有几处要用到调用GP工具,之前没咋用过,后来用的时候发现了很多的问题,现在记下来留给以后使用或者有问题的朋友可以看看。一般调用GP工具都是这个错误

"对 COM 组件的调用返回了错误 HRESULT E_FAIL",

出现这个错误主要的原因大致可以概括为以下:

1.参数缺少或者参数类型不正确,这是最容易解决的,改变正确的参数类型即可:

解决方法:一般我们在调用GP时都会在GIS里面先使用一遍,看看用到哪些变量,

例如 以这个 ESRI.ArcGIS.AnalysisTools.Update updateTool = new ESRI.ArcGIS.AnalysisTools.Update();叠加分析中的更新工具为例


在这个界面里面有三个必须选择的参数, updateTool.in_features = inputLayer.FeatureClass;
            updateTool.update_features = updateFeaturelayer.FeatureClass;
            updateTool.out_feature_class =this.OutputPath;

这三个参数是必须的,但是有人会问怎么判断输入的参数是对的呢,不急,在上面的红色箭头上,TOOL Help,点击就会进入


往下看,有Data Type.这就是在说明输入的类型


这就解决了参数的问题

2.参数路径不正确,或者gp的overwrite属性未设置,例如一个不存在的路径或者该路径下已有同名文件,这个问题就需要设置overwrite属性为true,(个人认为这点不是太重要,先写下了).

3.这个是最重要的,也是重点了。就是Arcengine授权的问题,自从10.1之后,在授权没了arcinfo这个授权选项了,换成了如下:


这是一个license控件,用控件讲解方便,但是我们在程序中,还是推荐用代码授权(不知道为啥,反正听大神说的),

从上到下,权限递增,但是只能选择一个,切上面的权限优先使用,明白了吧,就是你都选了,权限也只是上面的ArcGis Engine

针对于上面的GP工具这个权限要高点,使用advanced.

代码: ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
            IAoInitialize aoInitialize = new AoInitialize();
          esriLicenseStatus licenseStatus = esriLicenseStatus.esriLicenseUnavailable;
          licenseStatus = aoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);

将这段代码加载你的程序,InitializeComponent()之前就可以了;
写的好累.....



版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/l974199574/article/details/49615813
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-04-10 20:28:15
  • 阅读 ( 2251 )
  • 分类:Go Web框架

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢