ArcEngine创建要素类01

本文介绍了在ArcGIS中创建要素类的两种方法:单独生成要素类和在要素集中添加要素类。通过使用IFeatureClassCreateStandaloneFeatureClass和IFeatureDatasetFeatureClass接口,结合IFieldChecker进行字段验证,确保要素类的正确创建。此外还展示了如何设定要素类的几何类型和空间参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单独生成要素类:

        public IFeatureClass CreateStandaloneFeatureClass(IWorkspace workspace, String
    featureClassName, IFields fieldsCollection, String shapeFieldName)
        {
            IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
            IFeatureClassDescription fcDesc = new FeatureClassDescriptionClass();
            IObjectClassDescription ocDesc = (IObjectClassDescription)fcDesc;
            // Use IFieldChecker to create a validated fields collection.
            IFieldChecker fieldChecker = new FieldCheckerClass();
            IEnumFieldError enumFieldError = null; IFields validatedFields = null;
            fieldChecker.ValidateWorkspace = workspace;
            fieldChecker.Validate(fieldsCollection, out enumFieldError, out validatedFields);
            // The enumFieldError enumerator can be inspected at this point to determine 
            // which fields were modified during validation.
            IFeatureClass featureClass = featureWorkspace.CreateFeatureClass
                (featureClassName, validatedFields, ocDesc.InstanceCLSID,
                ocDesc.ClassExtensionCLSID, esriFeatureType.esriFTSimple, shapeFieldName, ""); 
            return featureClass;
        }

在要素集中添加要素类:

        public IFeatureClass CreateFeatureDatasetFeatureClass(IFeatureDataset featureDataset,
            String featureClassName, IFields fieldsCollection, String shapeFieldName)
        {
            IFeatureClassDescription fcDesc = new FeatureClassDescriptionClass();
            IObjectClassDescription ocDesc = (IObjectClassDescription)fcDesc;

            // Use IFieldChecker to create a validated fields collection.
            IFieldChecker fieldChecker = new FieldCheckerClass();
            IEnumFieldError enumFieldError = null;
            IFields validatedFields = null;
            fieldChecker.ValidateWorkspace = featureDataset.Workspace;
            fieldChecker.Validate(fieldsCollection, out enumFieldError, out validatedFields);

            // The enumFieldError enumerator can be inspected at this point to determine 
            // which fields were modified during validation.
            IFeatureClass featureClass = featureDataset.CreateFeatureClass(featureClassName,
                validatedFields, ocDesc.InstanceCLSID, ocDesc.ClassExtensionCLSID,
                esriFeatureType.esriFTSimple, fcDesc.ShapeFieldName, "");
            return featureClass;
        }

 创建不同类型的要素类:

可以修改,主要是修改validatedFields,IFields字段有一个是关于要素类几何类型的,比如:
IGeometryDef pGeoDef = new GeometryDefClass();
            IGeometryDefEdit pGeoDefEdit = pGeoDef as IGeometryDefEdit;
            pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;  //指定创建的要素类的要素类型
            pGeoDefEdit.SpatialReference_2 = spatialReference;  //设置要素类的空间参考
           // pSpatialReference.SetDomain(0, 99999999, 0, 9999999);
            //定义一个字段集合对象
            IFields pFields = new FieldsClass();
            IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields;

            //定义单个的字段
            IField pField = new FieldClass();
            IFieldEdit pFieldEdit = (IFieldEdit)pField;
            pFieldEdit.Name_2 = "SHAPE";
            pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;          
            pFieldEdit.GeometryDef_2 = pGeoDef;
  pFieldsEdit.AddField(pField);

 

转载于:https://www.cnblogs.com/leebokeyuan/p/5578320.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值