各位大侠帮忙看下,我用Geoprocessor 调用Arctoolbox中的clip工具(analysistool)执行矢量裁切,过程如果小于一分钟就重复执行,超过一分钟结束循环。可是循环一次还行,在执行第二次时就失败了,出现错误提示:未处理的COMexception ,对COM 组件的调用返回了错误 HRESULT E_FAIL。 如何才能实现对已输出的shp文件进行覆盖?
代码如下:
while (DateTime.Compare(compareTime, endTimeMany) > 0) //当执行时间小于一分钟时执行循环
{
Geoprocessor gp = new Geoprocessor();
gp.OverwriteOutput = true; //这个overwriteoutput重写的到底是什么?不能对第一次执行时输出的文件进行覆盖么?
IFeatureClass inputfeatureclass = inputfeaturelayer.FeatureClass; // inputfeatureclass 被裁切的shp文件
IDataset dataset = inputfeatureclass as IDataset;
IFields outfields = inputfeatureclass.Fields;
IWorkspaceFactory pFWSF = new ShapefileWorkspaceFactoryClass();
pFWS = pFWSF.OpenFromFile(resultDataStorePath, 0) as IFeatureWorkspace; //resultDataStorePath是输出结果保存路径
IFeatureClass outfeatureclass = pFWS.CreateFeatureClass(resultDataStoreName, cliplayerClass.FeatureClass.Fields, null , null, esriFeatureType.esriFTSimple, "Shape", ""); //创建 ,就是在这一句出错的
Clip clipTool = new Clip(inputfeatureclass, cliplayerClass, outfeatureclass);//参数分别对应:输入图层,用于裁切的图层和输出图层
gp.Execute(clipTool, null);
IFeatureLayer outlayer = new FeatureLayerClass();
outlayer.FeatureClass = outfeatureclass;
outlayer.Name = outfeatureclass.AliasName;
pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
}
剩下分好少,大侠们莫怪啊
------解决方案--------------------
第一次使用shapefile文件后没释放文件句柄?
------解决方案--------------------
话说你初始化license了么?
还有就是在64位操作系统下也会出现这样的问题。要改成X86才可以编译。
------解决方案--------------------
你得手动写代码把上次生成的shapefile文件删除。