欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

geoprocessor 循环疏失,寻求原因

更新时间: 2014-01-05 02:58:36 责任编辑: Author_N1

 

Geoprocessor 循环出错,寻求原因
各位大侠帮忙看下,我用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文件删除。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:58:36
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/16861/
本文WWW.DOC100.NET DOC100.NET版权所有。