//gp的执行 private void ExecuteGP(IVariantArray parameters, string strToolName) { ITrackCancel pTrackCancel = null; //找到tool ESRI.ArcGIS.Geoprocessing.GeoProcessor _geoPro = new GeoProcessor(); pTrackCancel = new TrackCancelClass(); IVariantArray pVArray = new VarArrayClass(); 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(); // Execute the model tool by name. _geoPro.Execute(strToolName, parameters, pTrackCancel); }
//利用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(); }
//利用quickexport进行数据转换 gdb-->dwg 有扩展属性的转换 private void QuickExportToDWG(string strSource, string strdwgFile, DCtype type, string strTemplate) { ITrackCancel pTrackCancel = null; //找到tool ESRI.ArcGIS.Geoprocessing.GeoProcessor _geoPro = new GeoProcessor(); pTrackCancel = new TrackCancelClass(); IVariantArray pVArray = new VarArrayClass(); IVariantArray parameters = new VarArrayClass(); //模板文件 string strT = ""; if (strTemplate != "") { strT = ",_TMPL," + strTemplate;// D:\南京\data\dddd.dwg } string strtoolName = ""; if (type == DCtype.HasXdata) { parameters.Add(strSource); parameters.Add("ACAD," + strdwgFile); parameters.Add("RUNTIME_MACROS,"); parameters.Add("_ATTRKIND,extended_entity_data,_REL,Release2000" + strT); parameters.Add(",META_MACROS,"); parameters.Add("Dest_ATTRKIND,extended_entity_data,Dest_REL,Release2000" + strT); parameters.Add(",METAFILE,ACAD,COORDSYS,,__FME_DATASET_IS_SOURCE__,false"); strtoolName = "QuickExport_interop"; } else if (type == DCtype.NoXdata) { parameters.Add(strSource); parameters.Add("ACAD," + strdwgFile); parameters.Add("RUNTIME_MACROS,"); parameters.Add("_ATTRKIND,ignore,_REL,Release2000" + strT); parameters.Add(",META_MACROS,"); parameters.Add("Dest_ATTRKIND,ignore,Dest_REL,Release2000" + strT); parameters.Add(",METAFILE,ACAD,COORDSYS,,__FME_DATASET_IS_SOURCE__,false"); strtoolName = "QuickExport_interop"; } else if (type == DCtype.FmeXdata) { string strTblPath = Application.StartupPath + "\\dc.tbx"; if (strTemplate == "") { parameters.Add(strSource); parameters.Add(strdwgFile); _geoPro.AddToolbox(strTblPath); strtoolName = "SpatialETLTool"; } else { parameters.Add(strSource); parameters.Add(strdwgFile); parameters.Add(strTemplate); _geoPro.AddToolbox(strTblPath); strtoolName = "SpatialETLTool"; } } else { return; } 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(); // Execute the model tool by name. _geoPro.Execute(strtoolName, parameters, pTrackCancel); }