ArcEngine创建要素类01

单独生成要素类:

        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);

 

posted @ 2016-06-12 17:40  恋上微笑的天使  阅读(2115)  评论(0编辑  收藏  举报