private void change(IFeatureClass pFeatureClass, string destiShpPath) { Geoprocessor gp = new Geoprocessor(); gp.OverwriteOutput = true; ESRI.ArcGIS.ConversionTools.FeatureClassToShapefile covertToshp = new ESRI.ArcGIS.ConversionTools.FeatureClassToShapefile(); covertToshp.Input_Features = pFeatureClass; covertToshp.Output_Folder = destiShpPath; try { gp.Execute(covertToshp, null); } catch (Exception ex) { string str = ""; for (int i = 0; i < gp.MessageCount; i++) { str += gp.GetMessage(i); str += "\n"; } MessageBox.Show(str); } MessageBox.Show("转换成功!"); }
//利用quickexport进行数据转换 dwg-->mdb private void QuickImportTopdb(string strSrcDwg, string strdesPdb) { ITrackCancel pTrackCancel = null; //找到tool ESRI.ArcGIS.Geoprocessor.Geoprocessor _geoPro = new ESRI.ArcGIS.Geoprocessor.Geoprocessor(); //ESRI.ArcGIS.Geoprocessing.IGeoProcessor _geoPro = new ESRI.ArcGIS.Geoprocessing.GeoProcessorClass(); pTrackCancel = new TrackCancelClass(); IVariantArray pVArray = new VarArrayClass(); IVariantArray parameters = new VarArrayClass(); parameters.Add("ACAD," + strSrcDwg); string strtoolName = ""; //parameters.Add("RUNTIME_MACROS,"); //parameters.Add("METAFILE,acad,_EXPAND_BLOCKS,yes,ACAD_IN_USE_BLOCK_HEADER_LAYER,yes," //+ "ACAD_IN_RESOLVE_ENTITY_COLOR,yes,_EXPAND_VISIBLE,yes,_READ_AS_2_5D,no," //+ "_BULGES_AS_ARCS,no,_STORE_BULGE_INFO,no,_READ_PAPER_SPACE,no," //+ "ACAD_IN_READ_GROUPS,no,_IGNORE_UCS,no,_ACADPreserveComplexHatches,no," //+ "_MERGE_SCHEMAS,YES,"); //parameters.Add("META_MACROS,"); //parameters.Add("Source_EXPAND_BLOCKS,yes," //+ "SourceACAD_IN_USE_BLOCK_HEADER_LAYER,yes,SourceACAD_IN_RESOLVE_ENTITY_COLOR,yes" //+ ",Source_EXPAND_VISIBLE,yes,Source_READ_AS_2_5D,no,Source_BULGES_AS_ARCS,no," //+ "Source_STORE_BULGE_INFO,no,Source_READ_PAPER_SPACE,no,SourceACAD_IN_READ_GROUPS,no" //+ ",Source_IGNORE_UCS,no,Source_ACADPreserveComplexHatches,no,METAFILE,acad,COORDSYS,,IDLIST,,"); //parameters.Add("__FME_DATASET_IS_SOURCE__,true"); //string param = "__FME_DATASET_IS_SOURCE__,true"; //parameters.Add(param); parameters.Add(strdesPdb + "\\..\\tmp.mdb"); strtoolName = "QuickImport_interop"; IGPEnvironmentManager pgpEnv = new GPEnvironmentManager(); IGPMessages pGpMessages; //= _geoPro.Validate(parameters, false, pgpEnv); IGPComHelper pGPCOMHelper = new GpDispatch(); //这里是关键,如果不赋值的话,那么就会报错 IGPEnvironmentManager pEnvMgr = pGPCOMHelper.EnvironmentManager; pgpEnv.PersistAll = true; pGpMessages = new GPMessagesClass(); _geoPro.OverwriteOutput = true; //Execute the model tool by name. _geoPro.Execute(strtoolName, parameters, pTrackCancel); //QuickImport qi = new QuickImport(); //qi.Input = txtSource.Text; //qi.Output = txtTarget.Text; //_geoPro.Execute(qi, pTrackCancel); ESRI.ArcGIS.ConversionTools.FeatureClassToShapefile FCTS = new ESRI.ArcGIS.ConversionTools.FeatureClassToShapefile(); FCTS.Output_Folder = strdesPdb; IWorkspaceFactory pWF = new AccessWorkspaceFactoryClass(); IWorkspace pWorkSpace = pWF.OpenFromFile(strdesPdb + "\\..\\tmp.mdb", 0); IEnumDatasetName pED = pWorkSpace.get_DatasetNames(esriDatasetType.esriDTFeatureClass); IDatasetName pDataSet = pED.Next(); while (pDataSet != null) { if ((pWorkSpace as IFeatureWorkspace).OpenFeatureClass(pDataSet.Name).FeatureType != esriFeatureType.esriFTSimple)//排除注记等 { pDataSet = pED.Next(); continue; } //_geoPro = new ESRI.ArcGIS.Geoprocessor.Geoprocessor(); //_geoPro.OverwriteOutput = true; FCTS.Input_Features = pWorkSpace.PathName + "\\" + pDataSet.Name; _geoPro.Execute(FCTS, pTrackCancel); pDataSet = pED.Next(); } Stream s = new System.IO.FileStream("d:\\qimport.txt", FileMode.Create); StreamWriter sw = new StreamWriter(s); for (int i = 0; i < _geoPro.MessageCount; i++) { sw.WriteLine(_geoPro.GetMessage(i)); } sw.Close(); s.Close(); }