创建要素FeatureClass

创建要素数据
 /// <summary>
        /// 在数据集下创建图层
        /// </summary>
        /// <param name="featureClassName">图层名称</param>
        /// <param name="dicFields">属性结构</param>
        /// <param name="pfeaturedataset">数据集名称</param>
        /// <param name="classExtensionUID">类型UID</param>
        /// <param name="featureWorkspace">工作空间</param>
        /// <param name="spatialRef">空间参考</param>
        /// <param name="esrigeomtryType">几何类型</param>
        /// <returns></returns>
        public static IFeatureClass CreateFeatureClass(string featureClassName, Dictionary<string, string> dicFields, IFeatureDataset pfeaturedataset, UID classExtensionUID, IFeatureWorkspace featureWorkspace, esriGeometryType esrigeomtryType, ISpatialReference spatialRef)
        {
            IFeatureClass featureClass = null;

            featureClass = ExitFeatureClass((IWorkspace)featureWorkspace, featureClassName, esriDatasetType.esriDTFeatureClass);
            if (featureClass != null)
            {
                return featureClass;
            }

            try
            {
                //创建要素类的字段集合
                IFields fields = new FieldsClass();
                IFieldsEdit fieldsEdit = (IFieldsEdit)fields;
                if (dicFields != null && dicFields.Count == 0)
                {
                    return null;
                }
                foreach (var item in dicFields)
                {
                    fieldsEdit.AddField(BuildField(item.Key, item.Value));
                }

                #region 添加Shape字段
                //添加Shape字段
                IGeometryDef geometryDef = new GeometryDefClass();
                IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef;
                geometryDefEdit.GeometryType_2 = esrigeomtryType;
                geometryDefEdit.SpatialReference_2 = spatialRef;

                IField geometryField = new FieldClass();
                IFieldEdit geometryFieldEdit = (IFieldEdit)geometryField;
                geometryFieldEdit.Name_2 = "Shape";
                geometryFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
                geometryFieldEdit.GeometryDef_2 = geometryDef;
                fieldsEdit.AddField(geometryField);
                #endregion

                //创建一个Validated Fields集合
                IFieldChecker fieldChecker = new FieldCheckerClass();
                IEnumFieldError enumFieldError = null;
                IFields validatedFields = null;
                fieldChecker.ValidateWorkspace = (IWorkspace)featureWorkspace;
                fieldChecker.Validate(fields, out enumFieldError, out validatedFields);

                featureClass = pfeaturedataset.CreateFeatureClass(featureClassName, validatedFields, null, classExtensionUID,
               esriFeatureType.esriFTSimple, "Shape", "");
                return featureClass;
            }
            catch (Exception ex)
            {
            }
            return null;
        }
 /// <summary>
       /// 创建属性结构
       /// </summary>
       /// <param name="fldname">属性结构名称</param>
       /// <param name="fldtype">属性结构字段类型</param>
       /// <returns></returns>
        private static IField BuildField(string fldname, string fldtype)
        {
            IFields fields = new FieldsClass();

            IField oidField = new FieldClass();
            IFieldEdit oidFieldEdit = (IFieldEdit)oidField;
            oidFieldEdit.Name_2 = fldname;

            switch (fldtype.ToString().ToLower())
            {
                case "objectid":
                    oidFieldEdit.Type_2 = esriFieldType.esriFieldTypeOID;
                    break;

                case "longinteger":
                    oidFieldEdit.Type_2 = esriFieldType.esriFieldTypeInteger;
                    break;

                case "shortinteger":
                    oidFieldEdit.Type_2 = esriFieldType.esriFieldTypeSmallInteger;
                    break;
                case "text":
                    oidFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                    oidFieldEdit.Length_2 = 50;
                    break;

                case "double":
                    oidFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
                    break;

                case "geometry":
                    oidFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
                    break;

            }



            return oidField;

        }

欢迎扫描微信订阅号:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值