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); }
/// <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); }
/// <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); }
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); } }
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); }
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); } }
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); } }
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); }
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); }
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); }
//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); }
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); }
/// <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); }
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); }
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; } }
/// <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"); } }
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); } }
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); }
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); }
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; } }
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; } }
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) }); } } }
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); }
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); } }
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("出错了"); } }
/// <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(); } }
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); }
/// <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 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; }