Esempio n. 1
0
        static void AddSyncFields(IFeatureClass fc)
        {
            IFieldEdit fe = new FieldClass();

            fe.Name_2       = "SyncID";
            fe.Type_2       = esriFieldType.esriFieldTypeInteger;
            fe.IsNullable_2 = true;

            fc.AddField(fe as IField);

            fe              = new FieldClass();
            fe.Name_2       = "SyncTimeStamp";
            fe.Type_2       = esriFieldType.esriFieldTypeDate;
            fe.IsNullable_2 = true;

            fc.AddField(fe as IField);

            fe              = new FieldClass();
            fe.Name_2       = "SyncStatus";
            fe.Type_2       = esriFieldType.esriFieldTypeString;
            fe.Length_2     = 4;
            fe.IsNullable_2 = true;

            fc.AddField(fe as IField);

            fe                = new FieldClass();
            fe.Name_2         = "SyncEditable";
            fe.Type_2         = esriFieldType.esriFieldTypeString;
            fe.Length_2       = 1;
            fe.IsNullable_2   = true;
            fe.DefaultValue_2 = "T";

            fc.AddField(fe as IField);
        }
Esempio n. 2
0
        /// <summary>
        /// 将拓扑错误要素存入要素类中
        /// </summary>
        /// <param name="topoErrorFeatures">拓扑错误要素</param>
        /// <param name="resultFeatureClass">保存拓扑错误要素的要素类,注意其坐标系和类型(点/线/面)必须与拓扑错误要素相同</param>
        public static void TopoErrorInsertToFeatureClass(this IEnumerable <ITopologyErrorFeature> topoErrorFeatures, IFeatureClass resultFeatureClass)
        {
            int typeIndex      = resultFeatureClass.AddField("TRuleType", "拓扑规则", esriFieldType.esriFieldTypeInteger);
            int orClassIdIndex = resultFeatureClass.AddField("OriClsID", "源要素类ID", esriFieldType.esriFieldTypeInteger);
            int deClassIdIndex = resultFeatureClass.AddField("DesClsID", "目标要素类ID", esriFieldType.esriFieldTypeInteger);
            int orOidIndex     = resultFeatureClass.AddField("OriOID", "源要素OID", esriFieldType.esriFieldTypeInteger);
            int deOidIndex     = resultFeatureClass.AddField("DesOID", "目标要素OID", esriFieldType.esriFieldTypeInteger);

            IWorkspaceEdit tmpWorkspaceEdit = (IWorkspaceEdit)(resultFeatureClass as IDataset).Workspace;

            tmpWorkspaceEdit.StartEditing(true);
            tmpWorkspaceEdit.StartEditOperation();
            IFeatureBuffer featureBuffer = resultFeatureClass.CreateFeatureBuffer();

            //在目标要素类中插入所有错误要素
            IFeatureCursor featureCursor = resultFeatureClass.Insert(true);

            foreach (var errorFeature in topoErrorFeatures)
            {
                IFeature tmpFeature = errorFeature as IFeature;
                featureBuffer.set_Value(typeIndex, errorFeature.TopologyRuleType);
                featureBuffer.set_Value(orClassIdIndex, errorFeature.OriginClassID);
                featureBuffer.set_Value(deClassIdIndex, errorFeature.DestinationClassID);
                featureBuffer.set_Value(orOidIndex, errorFeature.OriginOID);
                featureBuffer.set_Value(deOidIndex, errorFeature.DestinationOID);

                featureBuffer.Shape = tmpFeature.Shape;
                object featureOID = featureCursor.InsertFeature(featureBuffer);
            }
            featureCursor.Flush();//保存要素
            tmpWorkspaceEdit.StopEditOperation();
            tmpWorkspaceEdit.StopEditing(true);
            Marshal.ReleaseComObject(featureCursor);
        }
Esempio n. 3
0
        /// <summary>
        /// 重写虚态方法
        /// 创建PDJBTLocalShapeFile文件
        /// </summary>
        /// <returns></returns>
        public override bool CreateShapeFile()
        {
            bool rbc = false;

            try
            {
                string dir  = this.getDir(this.LocalShapePathFileName);
                string name = this.getFileName(this.LocalShapePathFileName);

                ShapefileWorkspaceFactoryClass objwsf = new ShapefileWorkspaceFactoryClass();
                IWorkspace objws = objwsf.OpenFromFile(dir, 0);

                IFeatureWorkspace feaureWS = objws as IFeatureWorkspace;

                IFeatureClass fc = this.CreateFeatureClass(feaureWS, name, esriFeatureType.esriFTSimple, esriGeometryType.esriGeometryPolygon);
                if (fc != null)
                {
                    //Add 要素表字段结构(业务字段)
                    IField     mField     = new FieldClass();
                    IFieldEdit mFieldEdit = mField as IFieldEdit;
                    mFieldEdit.Name_2      = "PDJB";
                    mFieldEdit.AliasName_2 = "坡度级别";

                    mFieldEdit.Type_2   = esriFieldType.esriFieldTypeString;
                    mFieldEdit.Length_2 = 9;

                    fc.AddField(mField);

                    //--SLOPECODE
                    IField     fd_slopecode  = new FieldClass();
                    IFieldEdit mfd_slopecode = fd_slopecode as IFieldEdit;
                    mfd_slopecode.Name_2      = "SLOPECODE";
                    mfd_slopecode.AliasName_2 = "坡度代码";

                    mfd_slopecode.Type_2   = esriFieldType.esriFieldTypeInteger;
                    mfd_slopecode.Length_2 = 1;

                    fc.AddField(fd_slopecode);
                    //--

                    fc = null;
                    //
                    rbc = true;
                }
                feaureWS = null;
                objws    = null;
                objwsf   = null;
            }
            catch
            {
                rbc = false;
            }
            return(rbc);
        }
        public static int AddField(IFeatureClass pFeatureClass, esriFieldType pesriFieldType, string pstrFieldName)
        {
            IFieldEdit pFieldEdit = GenerateFieldEdit(pesriFieldType, pstrFieldName);

            pFeatureClass.AddField((IField)pFieldEdit);
            return(pFeatureClass.Fields.FieldCount - 1);
        }
Esempio n. 5
0
 private void btnOK_Click(object sender, EventArgs e)
 {
     try
     {
         string name = this.txtName.Text.Trim();
         if (string.IsNullOrEmpty(name))
         {
             XtraMessageBox.Show("字段名不能为空!", "提示信息");
         }
         IFieldEdit pFieldEdit = _NewField as IFieldEdit;
         pFieldEdit.Name_2 = name;
         int index = _FeatureClass.FindField(name);
         if (index == -1)
         {
             _FeatureClass.AddField(_NewField);
             XtraMessageBox.Show("字段添加成功!");
             this.DialogResult = DialogResult.OK;
             this.Close();
         }
         else
         {
             XtraMessageBox.Show("字段已经存在!");
         }
     }
     catch (Exception ex)
     {
         XtraMessageBox.Show("添加字段失败:" + ex.Message, "提示信息");
     }
 }
        private void AddHField(IFeatureClass fc)
        {
            FacilityClass fac = FacilityClassManager.Instance.GetFacilityClassByName("GCD");

            DFDataConfig.Class.FieldInfo fi = fac.GetFieldInfoBySystemName("Height");
            if (fi == null)
            {
                return;
            }

            int index = fc.FindField(fi.Name);

            if (index == -1)
            {
                IField     Field      = new FieldClass();
                IFieldEdit pFieldEdit = Field as IFieldEdit;
                pFieldEdit.Name_2 = "HEIGHT";
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
                fc.AddField(Field);
            }
            else
            {
                return;
            }
        }
        /// <summary>
        /// Add new field.
        /// </summary>
        /// <param name="featureClass"></param>
        /// <param name="fieldName"></param>
        /// <param name="fieldType"></param>
        /// <param name="fldLength"></param>
        /// <param name="isNullable"></param>
        /// <param name="defaultValue"></param>
        public static void AddNewField(this IFeatureClass featureClass, string fieldName, esriFieldType fieldType, int fldLength = 1, bool isNullable = true, object defaultValue = null)
        {
            ISchemaLock schemaLock = (ISchemaLock)featureClass;

            try
            {
                schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);

                IFieldEdit2 field = new Field() as IFieldEdit2;
                field.Name_2         = fieldName;
                field.Type_2         = fieldType;
                field.IsNullable_2   = isNullable;
                field.DefaultValue_2 = defaultValue;
                if (fieldType == esriFieldType.esriFieldTypeString)
                {
                    field.Length_2 = fldLength;
                }

                featureClass.AddField(field);
            }
            finally
            {
                schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
            }
        }
Esempio n. 8
0
        public static void AddDoubleField(IFeatureClass featureClass, string fieldName, int length, int precision, IDomain domain = null, string aliasName = null)
        {
            IField     pField     = new FieldClass();
            IFieldEdit pFieldEdit = pField as IFieldEdit;

            pFieldEdit.Name_2 = fieldName;
            if (string.IsNullOrEmpty(aliasName))
            {
                pFieldEdit.AliasName_2 = fieldName;
            }
            else
            {
                pFieldEdit.AliasName_2 = aliasName;
            }
            pFieldEdit.Type_2       = esriFieldType.esriFieldTypeDouble;
            pFieldEdit.IsNullable_2 = true;
            pFieldEdit.Editable_2   = true;
            pFieldEdit.Length_2     = length;
            pFieldEdit.Precision_2  = precision;
            if (domain != null)
            {
                pFieldEdit.Domain_2 = domain;
            }
            featureClass.AddField(pField);
        }
Esempio n. 9
0
        public bool PurePixel2Shp(out string msg)
        {
            IFeatureClass pFeatureClass = null;

            try
            {
                string outEnd = System.IO.Path.Combine(BLL.ConstDef.PATH_TEMP, "PurePixel_" + DateTime.Now.ToFileTime().ToString() + ".shp");
                if (!BLL.EnviVars.instance.GpExecutor.Raster2Polygon(_Hyper_PurePixel, outEnd, false, out msg))
                {
                    return(false);
                }
                //字段整理
                pFeatureClass = EngineAPI.OpenFeatureClass(outEnd);
                pFeatureClass.DeleteField(pFeatureClass.Fields.get_Field(0));
                IField     field      = new FieldClass();
                IFieldEdit fieldEdit2 = field as IFieldEdit;
                fieldEdit2.Name_2 = "CLASS_ID";
                fieldEdit2.Type_2 = esriFieldType.esriFieldTypeInteger;
                pFeatureClass.AddField(field);

                return(true);
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                return(false);
            }
        }
Esempio n. 10
0
 public void AddFields(IFeatureClass pFc, string fieldName)
 {
     try
     {
         int theField = pFc.Fields.FindField(fieldName);
         if (theField == -1)
         {
             IField     pField     = new FieldClass();
             IFieldEdit pFieldEdit = pField as IFieldEdit;
             pFieldEdit.Name_2      = fieldName;
             pFieldEdit.Type_2      = esriFieldType.esriFieldTypeSmallInteger;
             pFieldEdit.AliasName_2 = fieldName;
             pFc.AddField(pFieldEdit);
         }
         else
         {
             return;
         }
     }
     catch (Exception ex)
     {
         XtraMessageBox.Show(ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
         Log.WriteLog(typeof(SampleSimulation), ex);
     }
 }
Esempio n. 11
0
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                this.Cursor = Cursors.AppStarting;  // 设置对话框的鼠标指针为等待指针
                string        fieldName    = textBox1.Text;
                string        aliasName    = textBox2.Text;
                IFeatureClass featureClass = Variable.pAttributeTableFeatureLayer.FeatureClass;
                IFields       fields       = featureClass.Fields;
                if (fields.FindField(fieldName) != -1)
                {
                    MessageBox.Show("字段名称重复!");
                    this.Cursor = Cursors.Default;  // 设置对话框的鼠标指针为默认指针
                    textBox1.Focus();
                    return;
                }
                if (fields.FindFieldByAliasName(aliasName) != -1)
                {
                    MessageBox.Show("显示名称重复!");
                    this.Cursor = Cursors.Default;  // 设置对话框的鼠标指针为默认指针
                    textBox2.Focus();
                    return;
                }
                IField     newField     = new FieldClass(); // 新建字段
                IFieldEdit newFieldEdit = (IFieldEdit)newField;
                newFieldEdit.Name_2      = fieldName;       // 设置字段名称
                newFieldEdit.AliasName_2 = aliasName;       // 设置字段别名
                switch (comboBox1.Text)                     // 设置字段类型
                {
                case "整数":
                    newFieldEdit.Type_2 = esriFieldType.esriFieldTypeInteger;
                    break;

                case "小数":
                    newFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;

                    break;

                case "文本":
                    newFieldEdit.Type_2   = esriFieldType.esriFieldTypeString;
                    newFieldEdit.Length_2 = int.Parse(textBox1.Text);
                    break;

                case "日期时间":
                    newFieldEdit.Type_2 = esriFieldType.esriFieldTypeDate;
                    break;
                }
                newFieldEdit.IsNullable_2 = true;  // 允许空值
                featureClass.AddField(newFieldEdit);
                this.DialogResult = DialogResult.OK;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\n" + ex.ToString(), "异常");
                this.Cursor = Cursors.Default;  // 设置对话框的鼠标指针为默认指针
                this.textBox1.Focus();
            }
        }
        private bool Analyze(string filePath)
        {
            IFeatureClass featureClass = filePath.GetShpFeatureClass();

            if (featureClass == null)
            {
                return(false);
            }
            var a = featureClass.Fields.FindField("TCMC");

            if (a == -1)
            {
                try
                {
                    IField      field     = new FieldClass();
                    IFieldEdit2 fieldEdit = field as IFieldEdit2;
                    fieldEdit.Type_2      = esriFieldType.esriFieldTypeString;
                    fieldEdit.Name_2      = "TCMC";
                    fieldEdit.AliasName_2 = "图层名称";
                    featureClass.AddField(field);
                }
                catch
                {
                    return(false);
                }
            }

            var index = featureClass.Fields.FindField("TCMC");

            if (index != -1)
            {
                var            tcmc          = System.IO.Path.GetFileNameWithoutExtension(filePath);
                IFeatureCursor featureCursor = featureClass.Search(null, false);
                IFeature       feature       = featureCursor.NextFeature();
                while (feature != null)
                {
                    feature.set_Value(index, tcmc);
                    feature.Store();
                    feature = featureCursor.NextFeature();
                }
                System.Runtime.InteropServices.Marshal.ReleaseComObject(featureCursor);
                //switch (featureClass.ShapeType)
                //{
                //    case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint:
                //        PointFiles.Add(filePath);
                //        break;
                //    case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon:
                //        PolygonFiles.Add(filePath);
                //        break;
                //    case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline:
                //        PolylineFiles.Add(filePath);
                //        break;
                //}
            }


            return(true);
        }
        internal static void AddField(IFeatureClass featureClass, string name, esriFieldType type)
        {
            IFieldEdit field = new FieldClass();

            field.Name_2 = name;
            field.Type_2 = type;

            featureClass.AddField(field);
        }
Esempio n. 14
0
 public  void AddField(IFeatureClass pFeatureClass,string fieldName,esriFieldType fieldType)
 {
     //如果存在不必添加字段,直接返回
     if (pFeatureClass.FieldExistCheck(fieldName)) return;
     var pField = new FieldClass();
     var pFieldEdit = (IFieldEdit)pField;
     pFieldEdit.Name_2 = fieldName;
     pFieldEdit.Type_2 = fieldType;  
     pFeatureClass.AddField(pFieldEdit);
 }
Esempio n. 15
0
        private void AddFld(IFeatureClass pFClass, string strName, esriFieldType fieldType)
        {
            IField     pField     = new FieldClass();
            IFieldEdit pFieldEdit = (IFieldEdit)pField;

            pFieldEdit.Name_2 = strName;
            pFieldEdit.Type_2 = fieldType;

            pFClass.AddField(pField);
        }
Esempio n. 16
0
        //Temp
        private void AddField(IFeatureClass fClass, string name)
        {
            IField     newField  = new FieldClass();
            IFieldEdit fieldEdit = (IFieldEdit)newField;

            fieldEdit.Name_2 = name;
            fieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;

            fClass.AddField(newField);
        }
Esempio n. 17
0
        public int AddField(string strFieldName)
        {
            try
            {
                if (m_pLayer is IFeatureLayer)
                {
                    IFeatureLayer featureLayer = m_pLayer as IFeatureLayer;
                    if (featureLayer.FeatureClass == null)
                    {
                        return(-1);
                    }
                    IFeatureClass featureClass = featureLayer.FeatureClass;

                    IField     field     = new FieldClass();
                    IFieldEdit fieldEdit = (IFieldEdit)field;
                    fieldEdit.Name_2 = strFieldName;

                    esriFieldType fieldType = (esriFieldType)cmbtype.SelectedIndex;
                    fieldEdit.Type_2 = fieldType;

                    if (fieldType == esriFieldType.esriFieldTypeSmallInteger ||
                        fieldType == esriFieldType.esriFieldTypeInteger)
                    {
                        fieldEdit.Precision_2 = 0;
                    }
                    else if (fieldType == esriFieldType.esriFieldTypeSingle ||
                             fieldType == esriFieldType.esriFieldTypeDouble)
                    {
                        fieldEdit.Precision_2 = 0;
                        fieldEdit.Scale_2     = 0;
                    }
                    else if (fieldType == esriFieldType.esriFieldTypeString)
                    {
                        fieldEdit.Length_2 = int.Parse(txtLength.Text);
                    }

                    fieldEdit.IsNullable_2   = true;
                    fieldEdit.DefaultValue_2 = 0;
                    fieldEdit.Editable_2     = true;
                    featureClass.AddField(field);

                    return(featureClass.Fields.FindField(strFieldName));
                }
                return(-1);
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message);
                return(-1);
            }

            return(-1);
        }
Esempio n. 18
0
 /// <summary>
 /// 添加字段(新创建的IFields与FeatureClass中的IFields处理方式不同)
 /// </summary>
 /// <param name="fieldHelper"></param>
 public void AddField(ZField fieldHelper)
 {
     if (featureClass == null)
     {
         fieldsEdit.AddField(fieldHelper.field);
     }
     else
     {
         featureClass.AddField(fieldHelper.field);
     }
     ZFieldList.Add(fieldHelper);
 }
Esempio n. 19
0
        public void AddField(IFeatureClass pFeatureClass, string fieldName, esriFieldType fieldType)
        {
            //如果存在不必添加字段,直接返回
            if (pFeatureClass.FieldExistCheck(fieldName))
            {
                return;
            }
            var pField     = new FieldClass();
            var pFieldEdit = (IFieldEdit)pField;

            pFieldEdit.Name_2 = fieldName;
            pFieldEdit.Type_2 = fieldType;
            pFeatureClass.AddField(pFieldEdit);
        }
Esempio n. 20
0
        public int AddField(string strFieldName, esriFieldType fieldType, int nPrecision = 0, int nLength = 255)
        {
            try
            {
                if (m_pLayer is IFeatureLayer)
                {
                    IFeatureLayer featureLayer = m_pLayer as IFeatureLayer;
                    if (featureLayer.FeatureClass == null)
                    {
                        return(-1);
                    }
                    IFeatureClass featureClass = featureLayer.FeatureClass;

                    IField     field     = new FieldClass();
                    IFieldEdit fieldEdit = (IFieldEdit)field;
                    fieldEdit.Name_2 = strFieldName;

                    fieldEdit.Type_2 = fieldType;
                    if (fieldType == esriFieldType.esriFieldTypeSmallInteger ||
                        fieldType == esriFieldType.esriFieldTypeInteger)
                    {
                        fieldEdit.Precision_2 = nPrecision;
                    }
                    else if (fieldType == esriFieldType.esriFieldTypeSingle ||
                             fieldType == esriFieldType.esriFieldTypeDouble)
                    {
                        fieldEdit.Precision_2 = nPrecision;
                        fieldEdit.Scale_2     = nPrecision;
                    }
                    else if (fieldType == esriFieldType.esriFieldTypeString)
                    {
                        fieldEdit.Length_2 = nLength;
                    }

                    fieldEdit.IsNullable_2   = true;
                    fieldEdit.DefaultValue_2 = 0;
                    fieldEdit.Editable_2     = true;
                    featureClass.AddField(field);

                    return(featureClass.Fields.FindField(strFieldName));
                }
                return(-1);
            }
            catch (Exception ex)
            {
                return(-1);
            }
        }
        private void AddHField(IFeatureClass fc)
        {
            int index = fc.FindField("HEIGHT");

            if (index == -1)
            {
                IField     Field      = new FieldClass();
                IFieldEdit pFieldEdit = Field as IFieldEdit;
                pFieldEdit.Name_2 = "HEIGHT";
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
                fc.AddField(Field);
            }
            else
            {
                return;
            }
        }
Esempio n. 22
0
        /// <summary>
        /// 更新周长字段
        /// </summary>
        /// <param name="pFeatureClass"></param>
        static public void UpdatePrim(IFeatureClass pFeatureClass)
        {
            int index = FieldIndex(pFeatureClass, "Shape_Leng");

            if (index > 0)
            {
                ComputeAreaField(pFeatureClass, "Shape_Leng");
            }
            else
            {
                IField     pFieldValue = new FieldClass();
                IFieldEdit pFieldEdit  = pFieldValue as IFieldEdit;
                pFieldEdit.Name_2 = "Shape_Leng";
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
                pFeatureClass.AddField(pFieldValue);
                ComputeAreaField(pFeatureClass, "Shape_Leng");
            }
        }
Esempio n. 23
0
        private static void AddField(IFeatureClass featureClass, string fieldName, esriFieldType fieldType)
        {
            IField newField = new FieldClass();
            ((IFieldEdit)newField).Name_2 = fieldName;
            ((IFieldEdit)newField).Type_2 = fieldType;

            var schemaLock = (ISchemaLock)featureClass;
            try
            {
                // Get an exclusive schema lock to change the schema.
                schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);
                featureClass.AddField(newField);
            }
            finally
            {
                //release the exclusive schema lock
                schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
            }
        }
Esempio n. 24
0
        public static void AddDateField(IFeatureClass featureClass, string fieldName, string aliasName = null)
        {
            IField     pField     = new FieldClass();
            IFieldEdit pFieldEdit = pField as IFieldEdit;

            pFieldEdit.Name_2 = fieldName;
            if (string.IsNullOrEmpty(aliasName))
            {
                pFieldEdit.AliasName_2 = fieldName;
            }
            else
            {
                pFieldEdit.AliasName_2 = aliasName;
            }
            pFieldEdit.Type_2       = esriFieldType.esriFieldTypeDate;
            pFieldEdit.IsNullable_2 = true;
            pFieldEdit.Editable_2   = true;
            featureClass.AddField(pField);
        }
Esempio n. 25
0
        public static void AddFeildToMeery(IFeatureClass featureCls)
        {
            ISchemaLock schemaLock = featureCls as ISchemaLock;

            schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);

            //
            var    field    = CreateStringField("Name", "", 8);
            IClass addFeild = (IClass)featureCls;

            addFeild.AddField(field);

            //加载到内存,上下文中
            IFields    fields     = featureCls.Fields;
            IFieldEdit fieldsEdit = fields as IFieldEdit;

            featureCls.AddField(field);
            //fieldsEdit.AddField(field);
        }
Esempio n. 26
0
        public void CopyFieldsToObjectFeatureClass(IFeatureClass ObjectFeatureClass)
        {
            IFields Fields = this.featureClass.Fields;
            IField  field  = null;

            IField     mField;
            IFieldEdit mFieldEdit;

            for (int j = 0; j < Fields.FieldCount; j++)
            {
                field = Fields.get_Field(j);
                if (ObjectFeatureClass.Fields.FindField(field.Name) <= -1 && (SystemFieldsList.Contains(field.Name.ToUpper()) == false))
                {
                    if (field.Type != esriFieldType.esriFieldTypeOID &&
                        field.Type != esriFieldType.esriFieldTypeGeometry)
                    {
                        if (field.Type != esriFieldType.esriFieldTypeBlob)
                        {
                            //创建一个新的字段类型
                            mField                 = new FieldClass();
                            mFieldEdit             = mField as IFieldEdit;
                            mFieldEdit.Name_2      = field.Name;
                            mFieldEdit.AliasName_2 = field.AliasName;

                            mFieldEdit.Type_2 = field.Type;

                            mFieldEdit.Length_2    = field.Length;
                            mFieldEdit.Precision_2 = field.Precision;
                            mFieldEdit.Scale_2     = field.Scale;

                            mFieldEdit.Editable_2     = field.Editable;
                            mFieldEdit.IsNullable_2   = field.IsNullable;
                            mFieldEdit.DefaultValue_2 = field.DefaultValue;
                            mFieldEdit.Domain_2       = field.Domain;
                            mFieldEdit.DomainFixed_2  = field.DomainFixed;

                            ObjectFeatureClass.AddField(mField);
                        }
                    }
                }
            }
        }
        //添加字段;
        private void 添加字段ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IFeatureLayer player        = layer as IFeatureLayer;
            IFeatureClass pfeatureclass = player.FeatureClass;
            PopupField    pf            = new PopupField();

            pf.ShowDialog();

            if (FieldName != null)
            {
                IFieldEdit fe = new FieldClass();
                fe.Name_2   = FieldName;
                fe.Type_2   = FieldType;
                fe.Length_2 = FieldLength;
                pfeatureclass.AddField(fe as IField);

                FieldName   = null;
                FieldType   = esriFieldType.esriFieldTypeSingle;
                FieldLength = 6;
            }
        }
Esempio n. 28
0
        private void AddFldsFromTable(IFeatureClass pFClass, ITable pTable, int[] FldIds)
        {
            try
            {
                int intNewFldCnt = FldIds.Length;

                for (int i = 0; i < intNewFldCnt; i++)
                {
                    IField     pField     = new FieldClass();
                    IFieldEdit pFieldEdit = (IFieldEdit)pField;
                    pFieldEdit.Name_2 = pTable.Fields.Field[FldIds[i]].Name;
                    pFieldEdit.Type_2 = pTable.Fields.Field[FldIds[i]].Type;
                    pFClass.AddField(pField);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Fail to add a new field.");
                return;
            }
        }
Esempio n. 29
0
        private void CheckField(IFeatureClass currentFeatureClass, IFeatureClass AnalyzeFeatureClass)
        {
            var fields = AnalyzeFeatureClass.Fields;

            for (var i = 0; i < fields.FieldCount; i++)
            {
                var field = fields.get_Field(i);
                if (field.Name.ToUpper().Contains("SHAPE") || field.Name.ToUpper().Contains("FID"))
                {
                    continue;
                }
                var index = currentFeatureClass.Fields.FindField(field.Name);
                if (index == -1)//未找到
                {
                    currentFeatureClass.AddField(field);
                    Fields.Add(new TangField()
                    {
                        Name = field.Name, Alias = field.AliasName, Type = field.Type, Index = currentFeatureClass.Fields.FindField(field.Name)
                    });
                }
            }
        }
Esempio n. 30
0
        public static void AddField(IFeatureClass featureClass, string fieldName, esriFieldType type, IDomain domain = null, string aliasName = null)
        {
            IField     field     = new FieldClass();
            IFieldEdit fieldEdit = field as IFieldEdit;

            fieldEdit.Name_2 = fieldName;
            if (string.IsNullOrEmpty(aliasName))
            {
                fieldEdit.AliasName_2 = fieldName;
            }
            else
            {
                fieldEdit.AliasName_2 = aliasName;
            }
            fieldEdit.Type_2     = type;
            fieldEdit.Editable_2 = true;
            if (domain != null)
            {
                fieldEdit.Domain_2 = domain;
            }
            featureClass.AddField(field);
        }
Esempio n. 31
0
        private string AddField(IFeatureLayer pFeaturelayer, string strFieldName)
        {
            try
            {
                IMxDocument pmxdoc = ArcMap.Document as IMxDocument;
                IMap        pmap   = pmxdoc.FocusMap;

                IFeatureClass pFeatureClass = pFeaturelayer.FeatureClass;

                IFieldEdit pNewField = new FieldClass();
                pNewField.Name_2 = strFieldName;

                int s = pFeatureClass.FindField(strFieldName);

                if (pFeatureClass.FindField(strFieldName) == -1)
                {
                    pNewField.Type_2         = esriFieldType.esriFieldTypeDouble;
                    pNewField.Length_2       = 50;
                    pNewField.Editable_2     = true;
                    pNewField.IsNullable_2   = true;
                    pNewField.DefaultValue_2 = null;
                    pFeatureClass.AddField(pNewField);
                    string strFldName = pNewField.Name;
                    pNewField = null;
                    GC.Collect();
                    return(strFldName);
                }
                else
                {
                    return(strFieldName);
                }
            }

            catch (Exception ex)
            {
                return(null);
            }
        }
Esempio n. 32
0
 private void button1_Click(object sender, EventArgs e)
 {
     if (textBox1.Text == null)
     {
         MessageBox.Show("请输入字段名");
         return;
     }
     try
     {
         IField     pField     = new FieldClass();
         IFieldEdit pFieldEdit = pField as IFieldEdit;
         pFieldEdit.Name_2 = textBox1.Text;
         pFieldEdit.Type_2 = getType();
         IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
         pFeatureClass.AddField(pField);
         MessageBox.Show("新建字段成功");
         this.Close();
     }
     catch (Exception ex)
     {
         MessageBox.Show("出错了");
     }
 }
Esempio n. 33
0
        /// <summary>
        /// 给图层添加字段
        /// </summary>
        /// <param name="strFieldCode"></param>
        /// <param name="strFieldName"></param>
        /// <param name="pFtCls"></param>
        public static void AddField(string strFieldCode, string strFieldName, Type pType, int nLength,
            IFeatureClass pFtCls)
        {
            try
            {
                ///创建一新字段
                esriFieldType fieldType = GetFieldType(pType);
                IField pField = new FieldClass();
                IFieldEdit pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = nLength;
                pFieldEdit.Name_2 = strFieldName;
                pFieldEdit.AliasName_2 = strFieldName;
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = true;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;

                pFtCls.AddField(pField);
            }
            catch (Exception exp)
            {
                Hy.Common.Utility.Log.OperationalLogManager.AppendMessage(exp.ToString());

            }
        }
 private void setFeatureClassFieldValue(IFeatureClass feacls, string strfield, int val)
 {
     if(feacls.FindField(strfield)<0)
     {
         IField field = new FieldClass();
         IFieldEdit fe = field as IFieldEdit;
         fe.Name_2 = strfield;
         fe.Type_2 = esriFieldType.esriFieldTypeInteger;
         feacls.AddField(field);
     }
     int index = feacls.FindField(strfield);
     IFeatureCursor cursor = feacls.Search(null, false);
     IFeature fea = cursor.NextFeature();
     while (fea != null)
     {
         fea.set_Value(index, val);
         fea.Store();
         fea = cursor.NextFeature();
     }
 }
Esempio n. 35
0
        private static void AdicionarColuna(IField field, IFeatureLayer fLayer, IFeatureClass pFeatureClassShp, List<String> camposAdicionados)
        {
            IFieldEdit fldDomain = new FieldClass();
            string aliasName = field.AliasName;
            string fieldName = field.Name;
            fldDomain.AliasName_2 = GetNomeNovo(aliasName, pFeatureClassShp, camposAdicionados);
            fldDomain.Name_2 = GetNomeNovo(fieldName, pFeatureClassShp, camposAdicionados);
            fldDomain.Editable_2 = true;
            fldDomain.Length_2 = 254;

            fldDomain.Type_2 = esriFieldType.esriFieldTypeString;

            pFeatureClassShp.AddField(fldDomain);
            camposAdicionados.Add(fldDomain.Name);
        }
Esempio n. 36
0
        /// <summary>
        /// ��ͼ������ֶ�
        /// </summary>
        /// <param name="pFtCls"></param>
        private void AddFields(IFeatureClass pFtCls)
        {
            try
            {
                IField pField = new FieldClass();
                IFieldEdit pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 80;
                pFieldEdit.Name_2 = "�������";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                pFtCls.AddField(pField);

                pField = new FieldClass();
                pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 80;
                pFieldEdit.Name_2 = "ͼ����";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                pFtCls.AddField(pField);

                pField = new FieldClass();
                pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 80;
                pFieldEdit.Name_2 = "�ֶ�����";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                pFtCls.AddField(pField);

                pField = new FieldClass();
                pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 20;
                pFieldEdit.Name_2 = "��ʶ��";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                pFtCls.AddField(pField);

                pField = new FieldClass();
                pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 80;
                pFieldEdit.Name_2 = "ͼ��2";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                pFtCls.AddField(pField);

                pField = new FieldClass();
                pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 20;
                pFieldEdit.Name_2 = "��ʶ��2";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                pFtCls.AddField(pField);

                pField = new FieldClass();
                pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 50;
                pFieldEdit.Name_2 = "����ͼ����";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                pFtCls.AddField(pField);

                pField = new FieldClass();
                pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 255;
                pFieldEdit.Name_2 = "��������";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                pFtCls.AddField(pField);

                pField = new FieldClass();
                pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 50;
                pFieldEdit.Name_2 = "�Ƿ�����";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeSmallInteger;
                pFtCls.AddField(pField);

                pField = new FieldClass();
                pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 255;
                pFieldEdit.Name_2 = "˵��";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                pFtCls.AddField(pField);

                pField = new FieldClass();
                pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 255;
                pFieldEdit.Name_2 = "�������";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                pFtCls.AddField(pField);

                pField = new FieldClass();
                pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 50;
                pFieldEdit.Name_2 = "X����";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
                pFtCls.AddField(pField);

                pField = new FieldClass();
                pFieldEdit = (IFieldEdit)pField;
                pFieldEdit.Length_2 = 50;
                pFieldEdit.Name_2 = "Y����";
                pFieldEdit.IsNullable_2 = true;
                pFieldEdit.Required_2 = false;
                pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
                pFtCls.AddField(pField);

            }
            catch (Exception exp)
            {
                Hy.Common.Utility.Log.OperationalLogManager.AppendMessage(exp.ToString());

                //GT_CONST.LogAPI.CheckLog.AppendErrLogs(ex.ToString());
            }
        }
        internal static void AddField(IFeatureClass featureClass, string name, esriFieldType type)
        {
            IFieldEdit field = new FieldClass();
            field.Name_2 = name;
            field.Type_2 = type;

            featureClass.AddField(field);
        }
Esempio n. 38
0
 internal static bool AddAField(IFeatureClass pFeatureClass, string pFieldName, esriFieldType pFieldType, int pLength)
 {
     IField tField = new FieldClass();
     IFieldEdit tFieldEdit = tField as IFieldEdit;
     tFieldEdit.Type_2 = pFieldType;
     tFieldEdit.Name_2 = pFieldName;
     if (pFieldType == esriFieldType.esriFieldTypeString)
     {
         tFieldEdit.Length_2 = pLength;
     }
     ISchemaLock tSchemaLock = (ISchemaLock)pFeatureClass;
     bool successful = false;
     try
     {
         tSchemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);
         pFeatureClass.AddField(tField);
         successful = true;
     }
     catch (Exception ex)
     {
         ServerLogger servLogger = new ServerLogger();
         servLogger.LogMessage(ServerLogger.msgType.debug, "add field to output", 8000,
                 "Couldn't get schema lock to add field " + pFieldName + " to output!" + ex.Message);
     }
     finally
     {
         tSchemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
     }
     //logger.LogMessage(ServerLogger.msgType.debug, "AddAField", 99,
     //                                     "Added field: " + pFieldName+", success: "+successful.ToString());
     return successful;
 }