ArcGIS+C#——拷贝IFeatureClass到指定工作空间

/// <summary>

        /// IFeatureClass拷贝到ipFeaWs

        /// </summary>

        /// <param name="pDs">要创建的源图层</param>

        /// <param name="ipFeaWs">待拷贝库的工作空间</param>

        /// <returns>如果不能创建,则返回false</returns>

        public static bool CreateFtCls(IDataset pDs, IFeatureWorkspace ipFeaWs)

        {

           IFeatureClass pFtCls = (IFeatureClass)pDs;

            IFeatureClass _featureClass = null;

           

           IWorkspace2 pWs = (IWorkspace2) ipFeaWs;

           if (!pWs.get_NameExists(esriDatasetType.esriDTFeatureClass, pDs.Name))

           {              

                   _featureClass = ipFeaWs.CreateFeatureClass(pDs.Name, pFtCls.Fields, pFtCls.CLSID,

                                                    pFtCls.EXTCLSID, pFtCls.FeatureType,

                                                    pFtCls.ShapeFieldName, "");

                   //更新图层别名

                   IClassSchemaEdit ipEdit = (IClassSchemaEdit)_featureClass;

                   ipEdit.AlterAliasName(pFtCls.AliasName);

             

               IFeatureCursor _featureCursor = pFtCls.Search(null, false);

               IFeature _feature = _featureCursor.NextFeature();

               while (_feature != null)

               {

                   IFeature _featureNew = _featureClass.CreateFeature();

 

                   for (int k = 0; k < _featureClass.Fields.FieldCount; k++)

                   {

                       ESRI.ArcGIS.Geodatabase.IField _field = _featureNew.Fields.get_Field(k);

                       if (_field.Editable == true)

                       {

                           _featureNew.set_Value(k, _feature.get_Value(k));

                       }

                       Marshal.ReleaseComObject(_field);

                   }

                   _featureNew.Store();

                   _feature = _featureCursor.NextFeature();

               }

           }

           else

           {

               XtraMessageBox.Show("同名的" + pDs.Name + "已存在,无法导入!", "提示");

               return false;

           }

 

            return true;

  http://www.gisfoot.com/post/197.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值