Beispiel #1
0
        //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);
        }
Beispiel #2
0
        //利用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();
        }
Beispiel #3
0
        //利用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);
        }