Beispiel #1
0
        private ExtendTask GetTaskFromDataRow(DataRow rowTask)
        {
            if (rowTask == null)
            {
                return(null);
            }

            // Task本身
            ExtendTask task = new ExtendTask();

            task.DatasourceType    = (enumDataType)rowTask["DataType"];
            task.MapScale          = (int)rowTask["MapScale"];
            task.Name              = rowTask["TaskName"] as string;
            task.Path              = rowTask["TaskPath"] as string;
            task.SourcePath        = rowTask["Datasource"] as string;
            task.StandardName      = cmbStandard.SelectedItem as string;
            task.SchemaID          = ((KeyValuePair <string, string>)cmbSchema.SelectedItem).Key;
            task.TopoTolerance     = Convert.ToDouble(rowTask["TopoTolerance"]);
            task.UseSourceDirectly = (bool)rowTask["UseSourceDirectly"];
            task.Messager          = this.MessageHandler;

            // DataImport
            IDataImport dataImporter = null;

            if (task.DatasourceType == enumDataType.VCT)
            {
                dataImporter = new VCTDataImport();
            }
            else
            {
                NoReferenceDataImport noRefDataImport = new NoReferenceDataImport();
                noRefDataImport.ReferenceLayer = ((KeyValuePair <string, string>)cmbSpatialRefLayer.SelectedItem).Key;
                dataImporter = noRefDataImport;
            }
            dataImporter.ImportingObjectChanged += new ImportingObjectChangedHandler(dataImporter_ImportingObjectChanged);
            task.DataImporter = dataImporter;

            string        strCheckMode = rowTask["CheckMode"] as string;
            enumCheckMode checkMode    = enumCheckMode.CreateOnly;

            if (strCheckMode == Text_CheckMode_CheckPartly)
            {
                checkMode = enumCheckMode.CheckPartly;
            }
            if (strCheckMode == Text_CheckMode_CheckAll)
            {
                checkMode = enumCheckMode.CheckAll;
                task.ReadyForCheck(true);
            }
            task.CheckMode = checkMode;
            task.RuleInfos = rowTask["Hy.Check.Rules"] as List <SchemaRuleEx>;

            return(task);
        }
Beispiel #2
0
        private bool PrepareForWorkspace(IWorkspace wsTarget, out string strBaseName, out string strQueryName, out enumDataType baseDataType)
        {
            strBaseName  = null;
            strQueryName = null;
            baseDataType = enumDataType.FileGDB;

            try
            {
                string      strPath    = wsTarget.PathName;
                IDataImport dataImport = new NoReferenceDataImport();
                dataImport.ImportingObjectChanged += new ImportingObjectChangedHandler(DataImport_ImportingObjectChanged);
                dataImport.Datasource              = strPath;
                dataImport.TargetPath              = TempPath;
                dataImport.JustCopy = true;

                // 获取空间参考
                ISpatialReference spatialRef = null;
                IEnumDataset      enDataset  = wsTarget.get_Datasets(esriDatasetType.esriDTAny);
                IDataset          dsCurrent  = enDataset.Next();
                while (dsCurrent != null)
                {
                    if (dsCurrent is IGeoDataset)
                    {
                        spatialRef = (dsCurrent as IGeoDataset).SpatialReference;
                        break;
                    }

                    dsCurrent = enDataset.Next();
                }
                dataImport.SpatialReference = spatialRef;
                enumDataType dataType = enumDataType.PGDB;

                // 设置数据类型
                string strName = System.IO.Path.GetExtension(strPath);
                if (string.IsNullOrEmpty(strName))  // Shp File
                {
                    dataType = enumDataType.SHP;
                }
                else if (strName.ToLower() == ".gdb")
                {
                    dataType = enumDataType.FileGDB;
                }
                else // MDB
                {
                    dataType = enumDataType.PGDB;
                }
                dataImport.DataType = dataType;
                if (dataType != enumDataType.PGDB)
                {
                    AEAccessFactory.CreatePGDB(TempPath, "Query.mdb");
                }

                dataImport.Import();

                // 获取Base/Query库Workspace和ADO连接
                strBaseName  = (dataType == enumDataType.PGDB ? "Base.mdb" : (dataType == enumDataType.FileGDB ? "Base.gdb" : "Base"));
                strQueryName = (dataType == enumDataType.PGDB ? strBaseName : "Query.mdb");
                baseDataType = dataType;

                return(true);
            }
            catch
            {
                return(false);
            }
        }