private void button1_Click(object sender, EventArgs e) { path = textBox1.Text; Geoprocessor gp = new Geoprocessor(); gp.OverwriteOutput = true; ESRI.ArcGIS.AnalysisTools.Erase erase = new ESRI.ArcGIS.AnalysisTools.Erase(featureLayer1, featureLayer2, path); try { gp.Execute(erase, null); MessageBox.Show("擦除成功"); } catch { MessageBox.Show("擦除失败!"); } }
/// <summary> /// 3.执行擦除 /// </summary> private void button1_Click(object sender, EventArgs e) { string erasePath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(bufferSavefile), pDLTBFeatureLayer.Name + "_Erase.shp"); IFeatureWorkspace pFWks = null; if (System.IO.File.Exists(erasePath)) { pFWks = GISUtil.GISUtil.CreateFeatureWorkspace(erasePath); IDataset pDs = (IDataset)pFWks.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(erasePath)); pDs.Delete(); } ESRI.ArcGIS.AnalysisTools.Erase erase = new ESRI.ArcGIS.AnalysisTools.Erase(shapefileDLTB, bufferSavefile, erasePath); try { SimplifyDLTB(); ESRI.ArcGIS.Geoprocessor.Geoprocessor gp = new ESRI.ArcGIS.Geoprocessor.Geoprocessor(); IGeoProcessorResult result = (IGeoProcessorResult)gp.Execute(erase, null); } catch (Exception ex) { LogHelper.LogHelper.WriteLog(typeof(BufferForm), ex.Message + ex.StackTrace); throw new Exception("执行擦除有误! 具体原因是:" + ex.Message + ex.StackTrace); } finally { } if (pFWks == null) { pFWks = GISUtil.GISUtil.CreateFeatureWorkspace(erasePath); } IFeatureClass pEraseFc = pFWks.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(erasePath)); IFeatureLayer pEraseLayer = new FeatureLayerClass(); pEraseLayer.Name = pEraseFc.AliasName; pEraseLayer.FeatureClass = pEraseFc; m_MapControl.Map.AddLayer(pEraseLayer); m_MapControl.ActiveView.Extent = m_MapControl.ActiveView.FullExtent; m_MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); }
void IErase.EraseByLayerFileInsideSde(object in_feature, string in_layer_file_path, object erase_feature, string erase_layer_file_path, string out_feature) { //using (ComReleaser releaser = new ComReleaser()) //{ try { Geoprocessor gp = new Geoprocessor(); IDataManager _dataManager = new DataManager(this._environment); ESRI.ArcGIS.AnalysisTools.Erase clipTool = new ESRI.ArcGIS.AnalysisTools.Erase(); //releaser.ManageLifetime(gp); //releaser.ManageLifetime(clipTool); //IVariantArray param = new VarArrayClass(); string inlayer = string.Format("{0}.lyr", in_layer_file_path); string cliplayer = string.Format("{0}.lyr", erase_layer_file_path); //MessageBox.Show(string.Format("line 105 GExtractTool in={0}, erase={1}", inlayer, cliplayer)); _dataManager.SaveToLayerFile((ILayer)in_feature, inlayer); _dataManager.SaveToLayerFile((ILayer)erase_feature, cliplayer); //MessageBox.Show("line 112 GExtractTool, "+((IFeatureLayer)in_feature).FeatureClass.AliasName+", "+this._environment,this._workspace.PathName); gp.SetEnvironmentValue("workspace", this._environment); clipTool.in_features = inlayer; clipTool.erase_features = cliplayer; //@"D:\duong.shp";// cliplayer; clipTool.out_feature_class = out_feature;// string.Format("{0}{1}", "C:\\tn\\temp\\tempmdb.mdb\\", out_feature);//"C:\\tayninh\\temp\\tempmdb.mdb\\" + out_feature; runTool(gp, clipTool, null); } catch (Exception err) { MessageBox.Show("loi erase: " + err.ToString()); } //} }