Beispiel #1
0
        /// <summary>
        /// 复制要素集(ConvertFeatureDataset)
        /// </summary>
        /// <param name="sourceWorkspace"></param>
        /// <param name="targetWorkspace"></param>
        /// <param name="nameOfSourceFeatureDataset"></param>
        /// <param name="nameOfTargetFeatureDataset"></param>
        public void IFeatureDataConverter_ConvertFeatureDataset(IWorkspace sourceWorkspace, IWorkspace targetWorkspace, string nameOfSourceFeatureDataset, string nameOfTargetFeatureDataset)
        {
            //create source workspace name
            IDataset       sourceWorkspaceDataset = (IDataset)sourceWorkspace;
            IWorkspaceName sourceWorkspaceName    = (IWorkspaceName)sourceWorkspaceDataset.FullName;

            //create source dataset name
            IFeatureDatasetName sourceFeatureDatasetName = new FeatureDatasetNameClass();
            IDatasetName        sourceDatasetName        = (IDatasetName)sourceFeatureDatasetName;

            sourceDatasetName.WorkspaceName = sourceWorkspaceName;
            sourceDatasetName.Name          = nameOfSourceFeatureDataset;

            //create target workspace name
            IDataset       targetWorkspaceDataset = (IDataset)targetWorkspace;
            IWorkspaceName targetWorkspaceName    = (IWorkspaceName)targetWorkspaceDataset.FullName;

            //create target dataset name
            IFeatureDatasetName targetFeatureDatasetName = new FeatureDatasetNameClass();
            IDatasetName        targetDatasetName        = (IDatasetName)targetFeatureDatasetName;

            targetDatasetName.WorkspaceName = targetWorkspaceName;
            targetDatasetName.Name          = nameOfTargetFeatureDataset;

            //Convert feature dataset
            IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass();

            featureDataConverter.ConvertFeatureDataset(sourceFeatureDatasetName, targetFeatureDatasetName, null, "", 1000, 0);
            //Console.WriteLine("Conversion Complete");
        }
Beispiel #2
0
 public static bool ConvertFeatureDataset(IWorkspace sourceWorkspace, IWorkspace targetWorkspace,
                                          string nameOfSourceFeatureDataset, string nameOfTargetFeatureDataset)
 {
     try
     {
         //create source workspace name
         IDataset       sourceWorkspaceDataset = (IDataset)sourceWorkspace;
         IWorkspaceName sourceWorkspaceName    = (IWorkspaceName)sourceWorkspaceDataset.FullName;
         //create source dataset name
         IFeatureDatasetName sourceFeatureDatasetName = new FeatureDatasetNameClass();
         IDatasetName        sourceDatasetName        = (IDatasetName)sourceFeatureDatasetName;
         sourceDatasetName.WorkspaceName = sourceWorkspaceName;
         sourceDatasetName.Name          = nameOfSourceFeatureDataset;
         //create target workspace name
         IDataset       targetWorkspaceDataset = (IDataset)targetWorkspace;
         IWorkspaceName targetWorkspaceName    = (IWorkspaceName)targetWorkspaceDataset.FullName;
         //create target dataset name
         IFeatureDatasetName targetFeatureDatasetName = new FeatureDatasetNameClass();
         IDatasetName        targetDatasetName        = (IDatasetName)targetFeatureDatasetName;
         targetDatasetName.WorkspaceName = targetWorkspaceName;
         targetDatasetName.Name          = nameOfTargetFeatureDataset;
         //Convert feature dataset
         IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass();
         featureDataConverter.ConvertFeatureDataset(sourceFeatureDatasetName, targetFeatureDatasetName, null, "", 1000, 0);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
Beispiel #3
0
        /// <summary>
        /// Deletes the dataset.
        /// </summary>
        /// <param name="targetWorkspace">The target workspace.</param>
        /// <param name="sTargetName">Name of the s target.</param>
        /// <param name="type">The type.</param>
        public static void DeleteDataset(IWorkspace targetWorkspace, string sTargetName, esriDatasetType type = esriDatasetType.esriDTFeatureClass)
        {
            IDatasetName datasetName = null;

            switch (type)
            {
            case esriDatasetType.esriDTFeatureDataset:
                datasetName = new FeatureDatasetNameClass();
                break;

            case esriDatasetType.esriDTFeatureClass:
                datasetName = new FeatureClassNameClass();
                break;

            default:
                if (type == esriDatasetType.esriDTTable)
                {
                    datasetName = new TableNameClass();
                }
                break;
            }
            if (datasetName != null)
            {
                datasetName.Name          = sTargetName;
                datasetName.WorkspaceName = ((targetWorkspace as IDataset).FullName as IWorkspaceName);
                EngineAPI.DeleteDataset(targetWorkspace, datasetName);
            }
        }
Beispiel #4
0
        public void ConvertMDBFeatureDatasetToSDE(IWorkspace sourceWorkspace, IWorkspace targetWorkspace, string nameOfSourceFeatureDataset, string nameOfTargetFeatureDataset)
        {
            if (sourceWorkspace == null || targetWorkspace == null)
            {
                return;
            }
            //创建源工作空间名
            IDataset       sourceWorkspaceDataset = (IDataset)sourceWorkspace;
            IWorkspaceName sourceWorkspaceName    = (IWorkspaceName)sourceWorkspaceDataset.FullName;
            //创建源数据集名
            IFeatureDatasetName sourceFeatureDatasetName = new FeatureDatasetNameClass();
            IDatasetName        sourceDatasetName        = (IDatasetName)sourceFeatureDatasetName;

            sourceDatasetName.WorkspaceName = sourceWorkspaceName;
            sourceDatasetName.Name          = nameOfSourceFeatureDataset;
            //创建目标工作空间名
            IDataset       targetWorkspaceDataset = (IDataset)targetWorkspace;
            IWorkspaceName targetWorkspaceName    = (IWorkspaceName)targetWorkspaceDataset.FullName;
            //创建目标数据集名
            IFeatureDatasetName targetFeatureDatasetName = new FeatureDatasetNameClass();
            IDatasetName        targetDatasetName        = (IDatasetName)targetFeatureDatasetName;

            targetDatasetName.WorkspaceName = targetWorkspaceName;
            targetDatasetName.Name          = nameOfTargetFeatureDataset;
            //转换(复制)源数据集到目标数据集
            IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass();

            featureDataConverter.ConvertFeatureDataset(sourceFeatureDatasetName, targetFeatureDatasetName, null, "", 1000, 0);
        }
Beispiel #5
0
 /// <summary>
 /// SDE要素类导出mdb(要素集下要素类)
 /// </summary>
 /// <param name="IN_SourceWorkspace">源工作空间</param>
 /// <param name="IN_TargetWorkspace">目标要素数据集</param>
 /// <param name="IN_SourceFeatureClassName">源要素类名</param>
 /// <param name="IN_TargetFeatureClassName">目标要素类名</param>
 private void ConvertFeatureClass(IWorkspace IN_SourceWorkspace, IFeatureDataset IN_TargetWorkspace, string IN_SourceFeatureClassName, string IN_TargetFeatureClassName)
 {
     #region 环境配置
     //创建源工作空间名
     IDataset       Temp_SourceWorkspaceDataset = (IDataset)IN_SourceWorkspace;
     IWorkspaceName Temp_SourceWorkspaceName    = (IWorkspaceName)Temp_SourceWorkspaceDataset.FullName;
     //创建源要素数据集名
     IFeatureClassName Temp_SourceFeatureClassName = new FeatureClassNameClass();
     IDatasetName      Temp_SourceDatasetName      = (IDatasetName)Temp_SourceFeatureClassName;
     Temp_SourceDatasetName.WorkspaceName = Temp_SourceWorkspaceName;
     Temp_SourceDatasetName.Name          = IN_SourceFeatureClassName;
     //创建目标工作空间名
     IDataset       Temp_TargetWorkspaceDataset = (IDataset)IN_TargetWorkspace.Workspace;
     IWorkspaceName Temp_TargetWorkspaceName    = (IWorkspaceName)(Temp_TargetWorkspaceDataset.FullName);
     //创建目标要素类名
     IFeatureClassName Temp_TargetFeatureClassName = new FeatureClassNameClass();
     IDatasetName      Temp_TargetDatasetName      = (IDatasetName)Temp_TargetFeatureClassName;
     Temp_TargetDatasetName.WorkspaceName = Temp_TargetWorkspaceName;
     Temp_TargetDatasetName.Name          = IN_TargetFeatureClassName;
     //创建目标要素数据集名
     IFeatureDatasetName Temp_TargetFeatureDatasetName = new FeatureDatasetNameClass();
     IDatasetName        Temp_TargetDatasetName2       = (IDatasetName)Temp_TargetFeatureDatasetName;
     Temp_TargetDatasetName2.WorkspaceName = Temp_TargetWorkspaceName;
     Temp_TargetDatasetName2.Name          = IN_TargetWorkspace.Name;
     #endregion
     //打开源要素类获取字段定义
     ESRI.ArcGIS.esriSystem.IName Temp_SourceName = (ESRI.ArcGIS.esriSystem.IName)Temp_SourceFeatureClassName;
     IFeatureClass Temp_SourceFeatureClass        = (IFeatureClass)Temp_SourceName.Open();
     //验证字段
     IFieldChecker   Temp_FieldChecker = new FieldCheckerClass();
     IFields         Temp_TargetFeatureClassFields;
     IFields         Temp_SourceFeatureClassFields = Temp_SourceFeatureClass.Fields;
     IEnumFieldError enumFieldError;
     Temp_FieldChecker.InputWorkspace    = IN_SourceWorkspace;
     Temp_FieldChecker.ValidateWorkspace = IN_TargetWorkspace.Workspace;
     Temp_FieldChecker.Validate(Temp_SourceFeatureClassFields, out enumFieldError, out Temp_TargetFeatureClassFields);
     //批量导入
     IField Temp_GeometryField;
     for (int i = 0; i < Temp_TargetFeatureClassFields.FieldCount; i++)
     {
         if (Temp_TargetFeatureClassFields.get_Field(i).Type == esriFieldType.esriFieldTypeGeometry)
         {
             Temp_GeometryField = Temp_TargetFeatureClassFields.get_Field(i);
             //获取空间定义
             IGeometryDef     Temp_GeometryDef        = Temp_GeometryField.GeometryDef;
             IGeometryDefEdit Temp_TargetFCGeoDefEdit = (IGeometryDefEdit)Temp_GeometryDef;
             Temp_TargetFCGeoDefEdit.GridCount_2 = 1;
             Temp_TargetFCGeoDefEdit.set_GridSize(0, 0);
             Temp_TargetFCGeoDefEdit.SpatialReference_2 = Temp_GeometryField.GeometryDef.SpatialReference;
             //定义筛选条件
             IQueryFilter Temp_QueryFilter = new QueryFilterClass();
             Temp_QueryFilter.WhereClause = "";
             //导入要素类至要素数据集
             IFeatureDataConverter Temp_FeatureDataConverter = new FeatureDataConverterClass();
             IEnumInvalidObject    enumErrors = Temp_FeatureDataConverter.ConvertFeatureClass(Temp_SourceFeatureClassName, Temp_QueryFilter, Temp_TargetFeatureDatasetName, Temp_TargetFeatureClassName, Temp_GeometryDef, Temp_TargetFeatureClassFields, "", 1000, 0);
             break;
         }
     }
 }
Beispiel #6
0
 public static IFeatureDataset GetFeatureDataset(IWorkspaceName workspaceName, string featureDatasetName)
 {
     try
     {
         IDatasetName pFeatureDatasetName = new FeatureDatasetNameClass
         {
             Name          = featureDatasetName,
             WorkspaceName = workspaceName
         };
         //Open the FeatureDataset
         IName name = (IName)pFeatureDatasetName;
         return((IFeatureDataset)name.Open());
     }
     catch (Exception ex)
     {
         LOG.Error(ex, $"打开数据集[{featureDatasetName}]失败");
     }
     return(null);
 }
 private IDatasetName method_2(IDatasetName idatasetName_0, string string_0)
 {
     try
     {
         new GxCadDataset();
         IDatasetName   name  = new FeatureDatasetNameClass();
         IWorkspaceName name2 = new WorkspaceNameClass
         {
             WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory",
             PathName = idatasetName_0.WorkspaceName.PathName
         };
         name.Name          = idatasetName_0.Name + ":" + string_0;
         name.WorkspaceName = name2;
         return(name);
     }
     catch (Exception exception)
     {
         Logger.Current.Error("", exception, "");
     }
     return(null);
 }
Beispiel #8
0
        public static void Project(IFeatureDataset ifeatureDataset_0, ISpatialReference ispatialReference_0,
                                   IWorkspace iworkspace_0, string string_0)
        {
            IGeometryDef      outputGeometryDef = new GeometryDefClass();
            ISpatialReference spatialReference  = ((IGeoDataset)ifeatureDataset_0).SpatialReference;

            ((IGeometryDefEdit)outputGeometryDef).SpatialReference_2 = ispatialReference_0;
            IWorkspace            workspace = ifeatureDataset_0.Workspace;
            IFeatureDataConverter converter = new FeatureDataConverterClass();
            IWorkspaceName        name      = new WorkspaceNameClass
            {
                ConnectionProperties   = workspace.ConnectionProperties,
                WorkspaceFactoryProgID = workspace.WorkspaceFactory.GetClassID().Value.ToString()
            };
            IWorkspaceName name2 = new WorkspaceNameClass();

            new PropertySetClass();
            name2.ConnectionProperties   = iworkspace_0.ConnectionProperties;
            name2.WorkspaceFactoryProgID = iworkspace_0.WorkspaceFactory.GetClassID().Value.ToString();
            IDatasetName name3 = new FeatureDatasetNameClass();
            string       str   = ifeatureDataset_0.Name;
            int          num   = str.LastIndexOf(".");

            if (num != -1)
            {
                str = str.Substring(num + 1);
            }
            name3.Name          = str;
            name3.WorkspaceName = name;
            IDatasetName name4 = new FeatureDatasetNameClass
            {
                WorkspaceName = name2,
                Name          = string_0
            };

            converter.ConvertFeatureDataset((IFeatureDatasetName)name3, (IFeatureDatasetName)name4, outputGeometryDef,
                                            "", 1000, 0);
        }
        internal static IName RicavaDatasetName(IDataset datasetInput, IWorkspaceName workspaceName)
        {
            IDatasetName datasetName = null;

            switch (datasetInput.Type)
            {
            case esriDatasetType.esriDTFeatureDataset:
                IFeatureDatasetName InFeatureDatasetName = new FeatureDatasetNameClass();
                datasetName = (IDatasetName)InFeatureDatasetName;
                break;

            case esriDatasetType.esriDTFeatureClass:
                IFeatureClassName InFeatureClassName = new FeatureClassNameClass();
                datasetName = (IDatasetName)InFeatureClassName;
                break;

            case esriDatasetType.esriDTTable:
                ITableName InTableName = new TableNameClass();
                datasetName = (IDatasetName)InTableName;
                break;

            case esriDatasetType.esriDTGeometricNetwork:
                IGeometricNetworkName InGeometricNetworkName = new GeometricNetworkNameClass();
                datasetName = (IDatasetName)InGeometricNetworkName;
                break;

            default:
                return(null);
            }

            // Set the name and workspace name of the new name object.
            datasetName.Name          = datasetInput.Name;
            datasetName.WorkspaceName = workspaceName;
            // Cast the object to the IName interface and return it.
            IName name = (IName)datasetName;

            return(name);
        }
Beispiel #10
0
        public static void CopyPasteGeodatabaseData(IWorkspace sourceWorkspace, IWorkspace targetWorkspace, string objectName, esriDatasetType esriDataType)
        {
            // Validate input

            if ((sourceWorkspace.Type == esriWorkspaceType.esriFileSystemWorkspace) || (targetWorkspace.Type == esriWorkspaceType.esriFileSystemWorkspace))
            {
                return; // Should be a throw
            }
            //create source workspace name

            IDataset sourceWorkspaceDataset = (IDataset)sourceWorkspace;

            IWorkspaceName sourceWorkspaceName = (IWorkspaceName)sourceWorkspaceDataset.FullName;

            //create target workspace name

            IDataset targetWorkspaceDataset = (IDataset)targetWorkspace;

            IWorkspaceName targetWorkspaceName = (IWorkspaceName)targetWorkspaceDataset.FullName;

            //Create Name Object Based on data type

            IDatasetName datasetName;

            switch (esriDataType)
            {
            case esriDatasetType.esriDTFeatureDataset:

                IFeatureDatasetName inFeatureDatasetName = new FeatureDatasetNameClass();

                datasetName          = (IDatasetName)inFeatureDatasetName;
                inFeatureDatasetName = null;
                break;

            case esriDatasetType.esriDTFeatureClass:

                IFeatureClassName inFeatureClassName = new FeatureClassNameClass();

                datasetName        = (IDatasetName)inFeatureClassName;
                inFeatureClassName = null;

                break;

            case esriDatasetType.esriDTTable:

                ITableName inTableName = new TableNameClass();

                datasetName = (IDatasetName)inTableName;
                inTableName = null;

                break;

            case esriDatasetType.esriDTGeometricNetwork:

                IGeometricNetworkName inGeometricNetworkName = new GeometricNetworkNameClass();

                datasetName            = (IDatasetName)inGeometricNetworkName;
                inGeometricNetworkName = null;

                break;

            case esriDatasetType.esriDTRelationshipClass:

                IRelationshipClassName inRelationshipClassName = new RelationshipClassNameClass();

                datasetName             = (IDatasetName)inRelationshipClassName;
                inRelationshipClassName = null;
                break;

            case esriDatasetType.esriDTNetworkDataset:

                INetworkDatasetName inNetworkDatasetName = new NetworkDatasetNameClass();

                datasetName          = (IDatasetName)inNetworkDatasetName;
                inNetworkDatasetName = null;

                break;

            case esriDatasetType.esriDTTopology:

                ITopologyName inTopologyName = new TopologyNameClass();

                datasetName    = (IDatasetName)inTopologyName;
                inTopologyName = null;

                break;

            default:

                return;     // Should be a throw
            }

            // Set the name of the object to be copied

            datasetName.WorkspaceName = (IWorkspaceName)sourceWorkspaceName;

            datasetName.Name = objectName;

            //Setup mapping for copy/paste

            IEnumNameMapping fromNameMapping;

            ESRI.ArcGIS.esriSystem.IEnumNameEdit editFromName;

            ESRI.ArcGIS.esriSystem.IEnumName fromName = new NamesEnumerator();

            editFromName = (ESRI.ArcGIS.esriSystem.IEnumNameEdit)fromName;

            editFromName.Add((ESRI.ArcGIS.esriSystem.IName)datasetName);

            ESRI.ArcGIS.esriSystem.IName toName = (ESRI.ArcGIS.esriSystem.IName)targetWorkspaceName;

            // Generate name mapping


            ESRI.ArcGIS.Geodatabase.IGeoDBDataTransfer geoDBDataTransfer = new GeoDBDataTransferClass();

            bool targetWorkspaceExists;

            targetWorkspaceExists = geoDBDataTransfer.GenerateNameMapping(fromName, toName, out fromNameMapping);

            // Copy/Pate the data

            geoDBDataTransfer.Transfer(fromNameMapping, toName);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(geoDBDataTransfer);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(datasetName);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(fromName);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(editFromName);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(fromNameMapping);
            geoDBDataTransfer = null;
            datasetName       = null;
            editFromName      = null;
            fromName          = null;

            sourceWorkspaceDataset = null;
            sourceWorkspaceName    = null;
            targetWorkspaceDataset = null;
            targetWorkspaceName    = null;
            toName          = null;
            fromNameMapping = null;
        }
Beispiel #11
0
        private void axMapControl1_OnOleDrop(object sender, IMapControlEvents2_OnOleDropEvent e)
        {
            IDataObjectHelper      dataObjectHelper = (IDataObjectHelper)e.dataObjectHelper;
            esriControlsDropAction dropAction       = e.dropAction;

            e.effect = 0;
            switch (dropAction)
            {
            case esriControlsDropAction.esriDropEnter:
                if (dataObjectHelper.CanGetFiles() | dataObjectHelper.CanGetNames())
                {
                    this.m_Effect = esriControlsDragDropEffect.esriDragDropCopy;
                }
                else if (dataObjectHelper.InternalObject is IDataObject)
                {
                    this.m_Effect = esriControlsDragDropEffect.esriDragDropCopy;
                }
                break;

            case esriControlsDropAction.esriDropOver:
                e.effect = (int)this.m_Effect;
                break;
            }
            if (dropAction == esriControlsDropAction.esriDropped)
            {
                int num;
                if (dataObjectHelper.CanGetFiles())
                {
                    System.Array files = System.Array.CreateInstance(typeof(string), 0, 0);
                    files = (System.Array)dataObjectHelper.GetFiles();
                    for (num = 0; num <= (files.Length - 1); num++)
                    {
                        if (this.axMapControl1.CheckMxFile(files.GetValue(num).ToString()))
                        {
                            try
                            {
                                this.axMapControl1.LoadMxFile(files.GetValue(num).ToString(), System.Type.Missing, "");
                            }
                            catch (Exception exception)
                            {
                                MessageBox.Show("Error:" + exception.Message);
                                return;
                            }
                        }
                        else
                        {
                            IFileName name = new FileNameClass
                            {
                                Path = files.GetValue(num).ToString()
                            };
                            this.CreateLayer((IName)name);
                        }
                    }
                }
                else if (dataObjectHelper.CanGetNames())
                {
                    IEnumName names = dataObjectHelper.GetNames();
                    names.Reset();
                    for (IName name3 = names.Next(); name3 != null; name3 = names.Next())
                    {
                        this.CreateLayer(name3);
                    }
                }
                if (dataObjectHelper.InternalObject is IDataObject)
                {
                    IList data =
                        (dataObjectHelper.InternalObject as IDataObject).GetData("System.Collections.ArrayList") as
                        IList;
                    for (num = 0; num < data.Count; num++)
                    {
                        IWorkspaceName workspaceName;
                        IWorkspaceName name6;
                        object         obj3 = data[num];
                        if (obj3 is IFeatureDatasetName)
                        {
                            IFeatureDatasetName name4 = new FeatureDatasetNameClass();
                            workspaceName = (obj3 as IDatasetName).WorkspaceName;
                            name6         = new WorkspaceNameClass
                            {
                                WorkspaceFactoryProgID = workspaceName.WorkspaceFactoryProgID
                            };
                            if (workspaceName.ConnectionProperties != null)
                            {
                                name6.ConnectionProperties = workspaceName.ConnectionProperties;
                            }
                            else
                            {
                                name6.PathName = workspaceName.PathName;
                            }
                            (name4 as IDatasetName).WorkspaceName = name6;
                            (name4 as IDatasetName).Name          = (obj3 as IDatasetName).Name;
                            this.CreateLayer(name4 as IName);
                        }
                        else if (obj3 is IRasterDatasetName)
                        {
                            IRasterDatasetName name7 = new RasterDatasetNameClass();
                            workspaceName = (obj3 as IDatasetName).WorkspaceName;
                            name6         = new WorkspaceNameClass
                            {
                                WorkspaceFactoryProgID = workspaceName.WorkspaceFactoryProgID
                            };
                            if (workspaceName.ConnectionProperties != null)
                            {
                                name6.ConnectionProperties = workspaceName.ConnectionProperties;
                            }
                            else
                            {
                                name6.PathName = workspaceName.PathName;
                            }
                            (name7 as IDatasetName).WorkspaceName = name6;
                            (name7 as IDatasetName).Name          = (obj3 as IDatasetName).Name;
                            this.CreateLayer(name7 as IName);
                        }
                        else if (obj3 is IDatasetName)
                        {
                            IDatasetName name8 = null;
                            if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTTin)
                            {
                                name8 = new TinNameClass();
                            }
                            if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTFeatureClass)
                            {
                                name8 = new FeatureClassNameClass();
                                (name8 as IFeatureClassName).FeatureDatasetName =
                                    (obj3 as IFeatureClassName).FeatureDatasetName;
                            }
                            else if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTTopology)
                            {
                                name8 = new TopologyNameClass();
                                (name8 as ITopologyName).FeatureDatasetName = (obj3 as ITopologyName).FeatureDatasetName;
                            }
                            else if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTRasterBand)
                            {
                                name8 = new RasterBandNameClass();
                                (name8 as IRasterBandName).RasterDatasetName =
                                    (obj3 as IRasterBandName).RasterDatasetName;
                            }
                            else if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTGeometricNetwork)
                            {
                                name8 = new GeometricNetworkNameClass();
                                (name8 as IGeometricNetworkName).FeatureDatasetName =
                                    (obj3 as IGeometricNetworkName).FeatureDatasetName;
                            }
                            else if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTRasterCatalog)
                            {
                                name8 = new RasterCatalogNameClass();
                                (name8 as IFeatureClassName).FeatureDatasetName =
                                    (obj3 as IFeatureClassName).FeatureDatasetName;
                            }
                            else if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTNetworkDataset)
                            {
                                name8 = new NetworkDatasetNameClass();
                                (name8 as INetworkDatasetName).FeatureDatasetName =
                                    (obj3 as INetworkDatasetName).FeatureDatasetName;
                            }
                            if (name8 != null)
                            {
                                if (name8.WorkspaceName == null)
                                {
                                    workspaceName = (obj3 as IDatasetName).WorkspaceName;
                                    name6         = new WorkspaceNameClass
                                    {
                                        WorkspaceFactoryProgID = workspaceName.WorkspaceFactoryProgID
                                    };
                                    if (workspaceName.ConnectionProperties != null)
                                    {
                                        name6.ConnectionProperties = workspaceName.ConnectionProperties;
                                    }
                                    else
                                    {
                                        name6.PathName = workspaceName.PathName;
                                    }
                                    name8.WorkspaceName = name6;
                                }
                                name8.Name = (obj3 as IDatasetName).Name;
                                this.CreateLayer(name8 as IName);
                            }
                        }
                        else if (obj3 is IWorkspaceName)
                        {
                            workspaceName = obj3 as IWorkspaceName;
                            name6         = new WorkspaceNameClass
                            {
                                WorkspaceFactoryProgID = workspaceName.WorkspaceFactoryProgID
                            };
                            if (workspaceName.ConnectionProperties != null)
                            {
                                name6.ConnectionProperties = workspaceName.ConnectionProperties;
                            }
                            else
                            {
                                name6.PathName = workspaceName.PathName;
                            }
                            this.CreateLayer(name6 as IName);
                        }
                        else if (obj3 is IPropertySet)
                        {
                            IPropertySet set      = obj3 as IPropertySet;
                            ILayer       property = set.GetProperty("Layer") as ILayer;
                            this.axMapControl1.AddLayer(property, 0);
                        }
                    }
                }
            }
        }
Beispiel #12
0
        string m_strErr;                //错误信息提醒

        //SHP数据入库到GDB数据库的方法
        private void ImportFeatureClassToNewWorkSpace(string filename, string outfilename)
        {
            //try
            //{
            m_success = false;    //初始化
            string ImportShapeFileName = filename;
            string ExportFileShortName = outfilename;

            if (ImportShapeFileName == "")
            {
                return;
            }
            string ImportFileShortName = System.IO.Path.GetFileNameWithoutExtension(ImportShapeFileName);
            string ImportFilePath      = System.IO.Path.GetDirectoryName(ImportShapeFileName);

            //打开存在的工作空间,作为导入的空间
            IWorkspaceFactory Pwf = new FileGDBWorkspaceFactoryClass();
            //IWorkspace pWorkspace = Pwf.OpenFromFile(GetSourcePath(comboBoxSource.Text), 0);
            // IWorkspace2 pWorkspace2 =(IWorkspace2)(Pwf.OpenFromFile(GetSourcePath(comboBoxSource.Text), 0));
            IWorkspace pWorkspace = GetWorkspace(comboBoxSource.Text);

            if (pWorkspace == null)
            {
                m_strErr  = "数据源未找到";
                m_success = false;
                return;
            }
            string username = GetSourceUser(comboBoxSource.Text);

            if (username.Trim() != "")
            {
                ExportFileShortName = username + "." + ExportFileShortName;
            }
            IWorkspace2 pWorkspace2 = pWorkspace as IWorkspace2;

            //判断要素是否存在,若存在将删除源文件
            if (pWorkspace2.get_NameExists(esriDatasetType.esriDTFeatureClass, ExportFileShortName))
            {
                if (m_newfile == true)
                {
                    IFeatureClass     tmpfeatureclass;
                    IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
                    tmpfeatureclass = pFeatureWorkspace.OpenFeatureClass(ExportFileShortName);
                    IDataset set = tmpfeatureclass as IDataset;
                    fdr.DeleteSql(ExportFileShortName);
                    set.CanDelete();
                    set.Delete();
                }
                else
                {
                    //MessageBox.Show("存在相同文件名", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    m_strErr  = "存在相同文件名";
                    m_success = false;
                    return;
                }
            }
            IWorkspaceName      pInWorkspaceName;
            IFeatureDatasetName pOutFeatureDSName;
            IFeatureClassName   pInFeatureClassName;
            IDatasetName        pInDatasetName;
            IFeatureClassName   pOutFeatureClassName;
            IDatasetName        pOutDatasetName;
            long                  iCounter;
            IFields               pOutFields, pInFields;
            IFieldChecker         pFieldChecker;
            IField                pGeoField;
            IGeometryDef          pOutGeometryDef;
            IGeometryDefEdit      pOutGeometryDefEdit;
            IName                 pName;
            IFeatureClass         pInFeatureClass;
            IFeatureDataConverter pShpToClsConverter;
            IEnumFieldError       pEnumFieldError = null;

            //得到一个输入SHP文件的工作空间,
            pInWorkspaceName          = new WorkspaceNameClass();
            pInWorkspaceName.PathName = ImportFilePath;
            pInWorkspaceName.WorkspaceFactoryProgID = "esriCore.ShapefileWorkspaceFactory.1";

            //创建一个新的要素类名称,目的是为了以来PNAME接口的OPEN方法打开SHP文件
            pInFeatureClassName          = new FeatureClassNameClass();
            pInDatasetName               = (IDatasetName)pInFeatureClassName;
            pInDatasetName.Name          = ImportFileShortName;
            pInDatasetName.WorkspaceName = pInWorkspaceName;

            //打开一个SHP文件,将要读取它的字段集合
            pName           = (IName)pInFeatureClassName;
            pInFeatureClass = (IFeatureClass)pName.Open();

            //通过FIELDCHECKER检查字段的合法性,为输入要素类获得字段集合
            pInFields     = pInFeatureClass.Fields;
            pFieldChecker = new FieldChecker();
            pFieldChecker.Validate(pInFields, out pEnumFieldError, out pOutFields);

            //通过循环查找几何字段
            pGeoField = null;
            for (iCounter = 0; iCounter < pOutFields.FieldCount; iCounter++)
            {
                if (pOutFields.get_Field((int)iCounter).Type == esriFieldType.esriFieldTypeGeometry)
                {
                    pGeoField = pOutFields.get_Field((int)iCounter);
                    break;
                }
            }

            //得到几何字段的几何定义
            pOutGeometryDef = pGeoField.GeometryDef;

            //设置几何字段的空间参考和网格
            pOutGeometryDefEdit             = (IGeometryDefEdit)pOutGeometryDef;
            pOutGeometryDefEdit.GridCount_2 = 1;
            pOutGeometryDefEdit.set_GridSize(0, 1500000);

            //创建一个新的要素类名称作为可用的参数
            pOutFeatureClassName = new FeatureClassNameClass();
            pOutDatasetName      = (IDatasetName)pOutFeatureClassName;
            pOutDatasetName.Name = ExportFileShortName;

            //创建一个新的数据集名称作为可用的参数
            pOutFeatureDSName = (IFeatureDatasetName) new FeatureDatasetName();

            //如果参数的值是NULL,说明要创建独立要素类
            //创建一个不存在的要素集合pFDN,通过它将IFeatureClassName和工作空间连接起来,而ConvertFeatureClass函数并不使用该变量作为参数,
            IFeatureDatasetName pFDN = new FeatureDatasetNameClass();
            IDatasetName        pDN  = (IDatasetName)pFDN;
            IDataset            pDS  = (IDataset)pWorkspace;

            pDN.WorkspaceName = (IWorkspaceName)pDS.FullName;
            pOutFeatureClassName.FeatureDatasetName = (IDatasetName)pFDN;

            //将pOutFeatureDSName设置为Null,将它做为参数给ConvertFeatureClass函数,因为IFeatureClassName本身已经和工作空间关联了,生成的
            //要素类在工作空间的根目录下,即独立要素类
            pOutFeatureDSName = null;

            //开始导入
            if (InsertIntoDatabase(ExportFileShortName))
            {
                pShpToClsConverter = new FeatureDataConverterClass();
                pShpToClsConverter.ConvertFeatureClass(pInFeatureClassName, null, pOutFeatureDSName, pOutFeatureClassName, pOutGeometryDef, pOutFields, "", 1000, 0);
                //MessageBox.Show("导入成功", "提示");
                m_success = true;
            }

            //}
            //catch
            //{
            //    m_success = false;
            //}
        }
Beispiel #13
0
 public void ConvertMDBFeatureDatasetToSDE(IWorkspace sourceWorkspace, IWorkspace targetWorkspace, string nameOfSourceFeatureDataset, string nameOfTargetFeatureDataset)
 {
     if (sourceWorkspace == null || targetWorkspace == null)
     {
         return;
     }
     //创建源工作空间名
     IDataset sourceWorkspaceDataset = (IDataset)sourceWorkspace;
     IWorkspaceName sourceWorkspaceName = (IWorkspaceName)sourceWorkspaceDataset.FullName;
     //创建源数据集名
     IFeatureDatasetName sourceFeatureDatasetName =new FeatureDatasetNameClass();
     IDatasetName sourceDatasetName = (IDatasetName)sourceFeatureDatasetName;
     sourceDatasetName.WorkspaceName = sourceWorkspaceName;
     sourceDatasetName.Name = nameOfSourceFeatureDataset;
     //创建目标工作空间名
     IDataset targetWorkspaceDataset = (IDataset)targetWorkspace;
     IWorkspaceName targetWorkspaceName = (IWorkspaceName)targetWorkspaceDataset.FullName;
     //创建目标数据集名
     IFeatureDatasetName targetFeatureDatasetName = new FeatureDatasetNameClass();
     IDatasetName targetDatasetName = (IDatasetName)targetFeatureDatasetName;
     targetDatasetName.WorkspaceName = targetWorkspaceName;
     targetDatasetName.Name = nameOfTargetFeatureDataset;
     //转换(复制)源数据集到目标数据集
     IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass();
     featureDataConverter.ConvertFeatureDataset(sourceFeatureDatasetName, targetFeatureDatasetName, null, "", 1000, 0);
 }
Beispiel #14
0
        private void ImportFeatureClassToNewWorkSpace(string filename, string outfilename)
        {
            //try
            //{
            string ImportShapeFileName = filename;

            if (ImportShapeFileName == "")
            {
                return;
            }
            string            ImportFileShortName = System.IO.Path.GetFileNameWithoutExtension(ImportShapeFileName);
            string            ExportFileShortName = System.IO.Path.GetFileNameWithoutExtension(outfilename);
            string            ImportFilePath      = System.IO.Path.GetDirectoryName(ImportShapeFileName);
            IWorkspaceFactory Pwf        = new FileGDBWorkspaceFactoryClass();
            IWorkspace        pWorkspace = Pwf.OpenFromFile(@comboBox1.Text, 0);

            //IWorkspaceFactory Pwf = new AccessWorkspaceFactoryClass();
            //IWorkspace pWorkspace = Pwf.OpenFromFile(@"E:\test\x.mdb", 0);

            IWorkspaceName      pInWorkspaceName;
            IFeatureDatasetName pOutFeatureDSName;
            IFeatureClassName   pInFeatureClassName;
            IDatasetName        pInDatasetName;
            IFeatureClassName   pOutFeatureClassName;
            IDatasetName        pOutDatasetName;
            long                  iCounter;
            IFields               pOutFields, pInFields;
            IFieldChecker         pFieldChecker;
            IField                pGeoField;
            IGeometryDef          pOutGeometryDef;
            IGeometryDefEdit      pOutGeometryDefEdit;
            IName                 pName;
            IFeatureClass         pInFeatureClass;
            IFeatureDataConverter pShpToClsConverter;
            IEnumFieldError       pEnumFieldError = null;

            //得到一个输入SHP文件的工作空间,
            pInWorkspaceName          = new WorkspaceNameClass();
            pInWorkspaceName.PathName = ImportFilePath;
            pInWorkspaceName.WorkspaceFactoryProgID = "esriCore.ShapefileWorkspaceFactory.1";
            //创建一个新的要素类名称,目的是为了以来PNAME接口的OPEN方法打开SHP文件
            pInFeatureClassName          = new FeatureClassNameClass();
            pInDatasetName               = (IDatasetName)pInFeatureClassName;
            pInDatasetName.Name          = ImportFileShortName;
            pInDatasetName.WorkspaceName = pInWorkspaceName;
            //打开一个SHP文件,将要读取它的字段集合
            pName           = (IName)pInFeatureClassName;
            pInFeatureClass = (IFeatureClass)pName.Open();
            //通过FIELDCHECKER检查字段的合法性,为输入要素类获得字段集合
            pInFields     = pInFeatureClass.Fields;
            pFieldChecker = new FieldChecker();
            pFieldChecker.Validate(pInFields, out pEnumFieldError, out pOutFields);
            //通过循环查找几何字段
            pGeoField = null;
            for (iCounter = 0; iCounter < pOutFields.FieldCount; iCounter++)
            {
                if (pOutFields.get_Field((int)iCounter).Type == esriFieldType.esriFieldTypeGeometry)
                {
                    pGeoField = pOutFields.get_Field((int)iCounter);
                    break;
                }
            }
            //得到几何字段的几何定义
            pOutGeometryDef = pGeoField.GeometryDef;
            //设置几何字段的空间参考和网格
            pOutGeometryDefEdit             = (IGeometryDefEdit)pOutGeometryDef;
            pOutGeometryDefEdit.GridCount_2 = 1;
            pOutGeometryDefEdit.set_GridSize(0, 1500000);

            //创建一个新的要素类名称作为可用的参数
            pOutFeatureClassName = new FeatureClassNameClass();
            pOutDatasetName      = (IDatasetName)pOutFeatureClassName;
            pOutDatasetName.Name = ExportFileShortName;
            //创建一个新的数据集名称作为可用的参数
            pOutFeatureDSName = (IFeatureDatasetName) new FeatureDatasetName();
            //如果参数的值是NULL,说明要创建独立要素类
            //创建一个不存在的要素集合pFDN,通过它将IFeatureClassName和工作空间连接起来,而ConvertFeatureClass函数并不使用该变量作为参数,
            IFeatureDatasetName pFDN = new FeatureDatasetNameClass();
            IDatasetName        pDN  = (IDatasetName)pFDN;
            IDataset            pDS  = (IDataset)pWorkspace;

            pDN.WorkspaceName = (IWorkspaceName)pDS.FullName;
            pOutFeatureClassName.FeatureDatasetName = (IDatasetName)pFDN;
            //将pOutFeatureDSName设置为Null,将它做为参数给ConvertFeatureClass函数,因为IFeatureClassName本身已经和工作空间关联了,生成的
            //要素类在工作空间的根目录下,即独立要素类
            pOutFeatureDSName = null;


            //开始导入
            pShpToClsConverter = new FeatureDataConverterClass();
            pShpToClsConverter.ConvertFeatureClass(pInFeatureClassName, null, pOutFeatureDSName, pOutFeatureClassName, null, pOutFields, "", 1000, 0);
            MessageBox.Show("导入成功", "系统提示");
            //}
            //catch
            //{
            //    MessageBox.Show("导入失败", "系统提示");
            //}
        }
 /// <summary>
 /// performs a simple copy of database object
 /// </summary>
 /// <param name="parentObjClass">the parent object</param>
 /// <param name="outWks">out Workspace</param>
 /// <returns>the new feature object</returns>
 public IObjectClass simpleCopyObj(object parentObjClass, IWorkspace outWks)
 {
     IObjectClass outCls = null;
     IQueryFilter qyf = new QueryFilterClass();
     IFeatureDataConverter2 fdConv2 = new FeatureDataConverterClass();
     IDataset dSet = (IDataset)parentObjClass;
     esriDatasetType pDsetType = dSet.Type;
     string bn = dSet.BrowseName;
     string sbn = bn.Substring(bn.LastIndexOf(".")+1);
     IDatasetName dSetN = (IDatasetName)dSet.FullName;
     IDatasetName dSetN2;
     IWorkspaceName wksN = (IWorkspaceName)((IDataset)outWks).FullName;
     IFields pfs;
     if (pDsetType == esriDatasetType.esriDTTable)
     {
         ITableName tbn = new TableNameClass();
         dSetN2 = (IDatasetName)tbn;
         dSetN2.Name = sbn;
         dSetN2.WorkspaceName = wksN;
         pfs = (IFields)((IClone)((IObjectClass)parentObjClass).Fields).Clone();
         updateDomains(ref pfs, outWks);
         fdConv2.ConvertTable(dSetN,qyf, null, dSetN2, pfs, "",1000, 0);
         outCls = (IObjectClass)((IName)dSetN2).Open();
     }
     else if (pDsetType == esriDatasetType.esriDTFeatureClass)
     {
         IFeatureClass pFtCls = (IFeatureClass)dSet;
         IFeatureClassName fcn = new FeatureClassNameClass();
         IFeatureDatasetName fdn = new FeatureDatasetNameClass();
         IDatasetName dSetN3 = (IDatasetName)fdn;
         dSetN3.WorkspaceName = wksN;
         IFeatureDataset pFtDs = pFtCls.FeatureDataset;
         if (pFtDs == null)
         {
             dSetN3 = null;
             fdn = null;
         }
         else
         {
             string ftDN = pFtCls.FeatureDataset.Name;
             string ftDNs = ftDN.Substring(ftDN.LastIndexOf(".") + 1);
             dSetN3.Name = ftDNs;
         }
         dSetN2 = (IDatasetName)fcn;
         dSetN2.Name = sbn;
         dSetN2.WorkspaceName = wksN;
         IField pSf = pFtCls.Fields.get_Field(pFtCls.FindField(pFtCls.ShapeFieldName));
         pfs = (IFields)((IClone)pFtCls.Fields).Clone();
         updateDomains(ref pfs, outWks);
         fdConv2.ConvertFeatureClass(dSetN, qyf, null, fdn, fcn, (IGeometryDef)((IClone)pSf.GeometryDef).Clone(), pfs, "", 1000, 0);
         outCls = (IObjectClass)((IName)dSetN2).Open();
     }
     else
     {
     }
     return outCls;
 }