ArcEngine将Shp文件导入到GeoDatabase中

 

第一种:使用IFeatureDataConverter.ConvertFeatureClass方法

        /// <summary>
        ///使用IFeatureDataConverter.ConvertFeatureClass方法
        /// </summary>
        /// <param name="pFeatureClass"></param>
        /// <param name="pQueryFilter"></param>
        /// <param name="outWorkspace"></param>
        /// <returns></returns>
        public int ImportFeatureClassToNewWorkSpace(IFeatureClass pFeatureClass, IQueryFilter pQueryFilter, IWorkspace outWorkspace, string outName)
        {
            try
            {
                //输入的要素类空间
                IDataset inDataSet = pFeatureClass as IDataset;
                IFeatureClassName inFCName = inDataSet.FullName as IFeatureClassName;
                IWorkspace inWorkspace = inDataSet.Workspace;

                //输出的shapfile文件的工作空间
                IDataset outDataSet = outWorkspace as IDataset;
                IWorkspaceName outWorkspaceName = outDataSet.FullName as IWorkspaceName;
                IFeatureClassName outFCName = new FeatureClassNameClass();
                IDatasetName dataSetName = outFCName as IDatasetName;

                dataSetName.WorkspaceName = outWorkspaceName;
                //dataSetName.Name = pFeatureClass.AliasName.ToString();
                dataSetName.Name = outName;

                //检查字段的有效性
                IFieldChecker fieldChecker = new FieldCheckerClass();
                fieldChecker.InputWorkspace = inWorkspace;
                fieldChecker.ValidateWorkspace = outWorkspace;

                IFields fields = pFeatureClass.Fields;
                IFields outFields = null;
                IEnumFieldError enumFieldError = null;
                fieldChecker.Validate(fields, out enumFieldError, out outFields);

                //调用IFeatureDataConverter接口进行数据转换
                IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass();
                featureDataConverter.ConvertFeatureClass(inFCName, pQueryFilter, null, outFCName, null, outFields, "", 1000, 0);
            }
            catch
            {
                return 0;
            }
            return 1;

        }

调用:

                //将shp数据转换成GDB
                string fileName = GetVectorFileName(subDir[0]);
                string folder = subDir[0];
                IFeatureClass shpFeatureClass = m_GisHelp.GetFeatureClass(folder, fileName);
                IWorkspace outWorkspace=m_GisHelp.Get_Workspace(gdbPath);
                int success = m_GisHelp.ImportFeatureClassToNewWorkSpace(shpFeatureClass, null, outWorkspace, "parcel");

 

第二种:通过GP工具,FeatureClassToGeodatabase

      public void FeatureClassToGDB(string shpRoot, string outGDBPath)
        {
            string shapes = GetShapes(shpRoot);
            ESRI.ArcGIS.ConversionTools.FeatureClassToGeodatabase featureClassToGeodatabase = new ESRI.ArcGIS.ConversionTools.FeatureClassToGeodatabase();
            featureClassToGeodatabase.Input_Features = shapes;
            featureClassToGeodatabase.Output_Geodatabase = outGDBPath;
            featureClassToGeodatabase.Derived_Geodatabase = "";
            Geoprocessor geoprocessor = new Geoprocessor();
            geoprocessor.OverwriteOutput = true;
            try
            {
                geoprocessor.Execute(featureClassToGeodatabase, null);
            }
            catch (Exception ex)
            {
                //string mess = null;
                //for (int k = 0; k < geoprocessor.MessageCount; k++)
                //{
                //    mess += geoprocessor.GetMessage(k) + "\n";
                //}
                throw ex;
            }
        }

 

转载于:https://www.cnblogs.com/ParanoiaApe/p/10876634.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值