ArcGIS Engine代码共享-字段(Field)操作

 public class FieldHelper
    {
        // Methods
        public static IField CreateDoubleField(string pFieldName, int pFieldLen, int pFieldScale)
        {
            FieldClass class2 = new FieldClass();
            IFieldEdit edit = class2;
            edit.Name_2 = pFieldName;
            edit.Type_2 = esriFieldType.esriFieldTypeDouble;
            edit.Precision_2 = pFieldLen;
            edit.Scale_2 = pFieldScale;
            return class2;
        }

        public static IField CreateGeometryField(esriGeometryType pGT, ISpatialReference pSR)
        {
            return CreateGeometryField(pGT, pSR, false);
        }

        public static IField CreateGeometryField(esriGeometryType pGT, ISpatialReference pSR, bool pHasZ)
        {
            FieldClass class2 = new FieldClass();
            IFieldEdit edit = class2;
            edit.Name_2 = "SHAPE";
            edit.AliasName_2 = "图形对象";
            edit.Type_2 = esriFieldType.esriFieldTypeGeometry;
            IGeometryDef pGeoDef = new GeometryDefClass();
            IGeometryDefEdit class3 = (IGeometryDefEdit)pGeoDef;

            class3.GeometryType_2 = pGT;
            class3.HasM_2 = false;
            class3.HasZ_2 = pHasZ;
            class3.GridCount_2 = 1;
            class3.set_GridSize(0, 1000.0);
            class3.SpatialReference_2 = pSR;
            edit.GeometryDef_2 = class3;
            return class2;
        }

        public static IField CreateIntField(string pFieldName, int pFieldLen)
        {
            FieldClass class2 = new FieldClass();
            IFieldEdit edit = class2;
            edit.Name_2 = pFieldName;
            edit.Precision_2 = pFieldLen;
            edit.Type_2 = esriFieldType.esriFieldTypeInteger;
            return class2;
        }

        public static IField CreateOIDField()
        {
            FieldClass class2 = new FieldClass();
            IFieldEdit edit = class2;
            edit.Name_2 = "OBJECTID";
            edit.AliasName_2 = "表内唯一编号";
            edit.Type_2 = esriFieldType.esriFieldTypeOID;
            return class2;
        }

        public static IField CreateRasterField(string pName, string pAliasName, ISpatialReference pSR)
        {
            FieldClass class2 = new FieldClass();
            IFieldEdit edit = class2;
            edit.Name_2 = pName;
            edit.AliasName_2 = pAliasName;
            edit.Type_2 = esriFieldType.esriFieldTypeRaster;
            IRasterDef def = new RasterDefClass();
            def.IsRasterDataset = false;
            def.SpatialReference = pSR;
            (edit as IFieldEdit2).RasterDef = def;
            return class2;
        }

        public static IField CreateTextField(string pName, string pAliasName, int aWidth)
        {
            FieldClass class2 = new FieldClass();
            IFieldEdit edit = class2;
            edit.Name_2 = pName.ToUpper();
            edit.AliasName_2 = pAliasName;
            edit.Type_2 = esriFieldType.esriFieldTypeString;
            edit.Length_2 = aWidth;
            return class2;
        }

        public static int QueryFieldLength(IField paramFld)
        {
            if ((paramFld.Type == esriFieldType.esriFieldTypeSingle) || (paramFld.Type == esriFieldType.esriFieldTypeDouble))
            {
                return paramFld.Precision;
            }
            if (paramFld.Type == esriFieldType.esriFieldTypeInteger)
            {
                return paramFld.Length;
            }
            return paramFld.Length;
        }

        public static int QueryFieldPrecision(IField paramFld)
        {
            if ((paramFld.Type == esriFieldType.esriFieldTypeSingle) || (paramFld.Type == esriFieldType.esriFieldTypeDouble))
            {
                return paramFld.Scale;
            }
            return 0;
        }

        public static string QueryFieldTypeName(esriFieldType paramFT)
        {
            string str = "";
            if (esriFieldType.esriFieldTypeBlob == paramFT)
            {
                return "二进制";
            }
            if (esriFieldType.esriFieldTypeDate == paramFT)
            {
                return "日期";
            }
            if (esriFieldType.esriFieldTypeDouble == paramFT)
            {
                return "浮点数";
            }
            if (esriFieldType.esriFieldTypeGeometry == paramFT)
            {
                return "图形对象";
            }
            if (esriFieldType.esriFieldTypeGlobalID == paramFT)
            {
                return "全局编号";
            }
            if (esriFieldType.esriFieldTypeGUID == paramFT)
            {
                return "永久唯一编号";
            }
            if (esriFieldType.esriFieldTypeInteger == paramFT)
            {
                return "整型";
            }
            if (esriFieldType.esriFieldTypeOID == paramFT)
            {
                return "表内编号";
            }
            if (esriFieldType.esriFieldTypeRaster == paramFT)
            {
                return "影像图";
            }
            if (esriFieldType.esriFieldTypeSingle == paramFT)
            {
                return "浮点数";
            }
            if (esriFieldType.esriFieldTypeSmallInteger == paramFT)
            {
                return "短整型";
            }
            if (esriFieldType.esriFieldTypeString == paramFT)
            {
                str = "字符串";
            }
            return str;
        }

        public static IField QueryField(IFields pFields, string sName)
        {
            IField pField = null;
            int n = pFields.FindField(sName);
            if (n > -1)
            {
                pField = pFields.get_Field(n);
                return pField;
            }
            return pField;
        }

        public static IField AlterGeometryFieldSR(IField pField, ISpatialReference sr)
        {
            IFieldEdit pEdit = pField as IFieldEdit;
            IGeometryDef pGeoDef = pField.GeometryDef;
            IGeometryDefEdit pDEdit = pGeoDef as IGeometryDefEdit;
            pDEdit.SpatialReference_2 = sr;
            pEdit.GeometryDef_2 = pGeoDef;
            return pField;
        }
        public static IField AlterRasterFieldSR(IField pField, ISpatialReference sr)
        {
            IFieldEdit2 pEdit = pField as IFieldEdit2;
            IRasterDef pRDef = pEdit.RasterDef;
            pRDef.SpatialReference = sr;
            return pField;
        }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值