3echo

心有多大,世界便有多大!
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

关于调用ArcGIS中GP工具Erase等得不到结果解决方法

Posted on 2009-11-11 11:24  3echo  阅读(1434)  评论(1编辑  收藏  举报

关于调用ArcGISGP工具.EraseSymDiff

得不到生成结果问题解决方法

/ 3echo

一、问题描述:

最近在做一个数据检查工具,检查空间数据拓扑关系的正确性,我使用以下代码实现图形擦除效果、图形差集效果,总是得不到生成结果文件,觉得非常奇怪。

1、  擦除效果代码

Erase tErase = new Erase();

tErase.in_features = tInfeatures;                  //待擦除图层

tErase.erase_features = tEraseFeatures;            //擦除图层

tErase.out_feature_class = strFileName;            //输出文件路径

tErase.cluster_tolerance = this.m_Tolerance;       //容差值

 

2、   差集效果代码  

SymDiff tSymDiff = new SymDiff();

tSymDiff.in_features = tInfeatures;

tSymDiff.update_features = tupdatefeatures;

tSymDiff.out_feature_class = strFileName;

tSymDiff.cluster_tolerance = "0.01";           // this.m_Tolerance; 

tSymDiff.join_attributes = "ALL";

 

二、问题分析

得到不生成结果文件有几中可能情况,一种是参数设置不正确,如容差值应该为数字型的文字,如果弄成文本型文字,就是出现得不到生成结果文件的情形;第二种是要素类设置不正确。

我仔细核对了这两种情形,发现自己写的代码确实是没有问题,但是就是出不来结果,真是奇怪了。

三、问题解决

最后发现是license授权问题,我们在程序启动运行时,如果将权限设置低于ArcInfo,都会得不到生成结果,不信你可以利用ArcMap试试看。所以这就要求我们在初始化License时要授予正确的权限。