使用IFeatureDataConverter接口快速导出Table的C#代码

代码如下:

        /// <summary>
        /// 表转换
        /// </summary>
        /// <param name="sourceWorkspace">源数据库</param>
        /// <param name="targetWorkspace">目标数据库</param>
        /// <param name="nameOfSourceTable">源表名</param>
        /// <param name="nameOfTargetTable">目标表名</param>
        /// <param name="pQueryFilter">(属性)过滤条件</param>
        public static bool ConvertTable(IWorkspace sourceWorkspace, IWorkspace targetWorkspace, string nameOfSourceTable, string nameOfTargetTable, IQueryFilter pQueryFilter = null)
        {
            bool bResult = true;
            try
            {
                //create source workspace name
                IDataset sourceWorkspaceDataset = (IDataset)sourceWorkspace;
                IWorkspaceName sourceWorkspaceName = (IWorkspaceName)sourceWorkspaceDataset.FullName;

                //create source dataset name
                ITableName sourceTableName = new TableNameClass();
                IDatasetName sourceDatasetName = (IDatasetName)sourceTableName;
                sourceDatasetName.WorkspaceName = sourceWorkspaceName;
                sourceDatasetName.Name = nameOfSourceTable;

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

                //create target dataset name
                ITableName targetTableName = new TableNameClass();
                IDatasetName targetDatasetName = (IDatasetName)targetTableName;
                targetDatasetName.WorkspaceName = targetWorkspaceName;
                targetDatasetName.Name = nameOfTargetTable;

                //Open input Table to get field definitions.
                ESRI.ArcGIS.esriSystem.IName sourceName = (ESRI.ArcGIS.esriSystem.IName)sourceTableName;
                ITable sourceTable = (ITable)sourceName.Open();

                //Validate the field names because you are converting between different workspace types.
                IFieldChecker fieldChecker = new FieldCheckerClass();
                IFields targetTableFields;
                IFields sourceTableFields = sourceTable.Fields;
                IEnumFieldError enumFieldError;

                // Most importantly set the input and validate workspaces!
                fieldChecker.InputWorkspace = sourceWorkspace;
                fieldChecker.ValidateWorkspace = targetWorkspace;
                fieldChecker.Validate(sourceTableFields, out enumFieldError, out targetTableFields);

                // Load the table
                IFeatureDataConverter pConverter = new FeatureDataConverterClass();
                IEnumInvalidObject enumErrors = pConverter.ConvertTable(sourceDatasetName, pQueryFilter, targetDatasetName, targetTableFields, "", 500, 0);
            }
            catch (Exception ex)
            {
                bResult = false;
                Log.Loging.ErrorFormat("ConvertTable Failed. {0}", ex.Message);
            }
            return bResult;
        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值