http://www.cnblogs.com/3echo/archive/2009/11/11/1600793.html
关于调用ArcGIS中GP工具.Erase、SymDiff
得不到生成结果问题解决方法
□/文 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时要授予正确的权限。