精华内容
下载资源
问答
  • 如何用arcMap编辑图层的属性表

    千次阅读 2012-06-11 16:54:52
    首先,在"Editor"选项下选择“Stop Editing”,也就是说,如果地图还处于编辑状态的话,是不能编辑属性表的。其次,打开属性表(open attribute table),选择:add Field,此时,可以在弹出的对话框中选择,对应字段...
    1.如何在属性表中添加一个字段
    
    • 首先,在"Editor"选项下选择“Stop Editing”,也就是说,如果地图还处于编辑状态的话,是不能编辑属性表的。
    • 其次,打开属性表(open attribute table),选择:add Field,此时,可以在弹出的对话框中选择,对应字段的属性。
    • 再次,选择"Start Editing",在表中的字段中双击,就可以编辑属性表了。
    • 删除和修改的步骤与增加类似。

    展开全文
  • AE属性表操作

    万次阅读 2015-02-07 10:27:39
    2、编辑属性表;3、增加属性列;4、数据排序;5、字段计算…… 嗯,实现的功能目前就这些吧,后续还会继续跟进,还望大家多多关注……下面就分功能说说我的实现方式吧…… 1、打开属性表 属性表的打开是...

     

    原文连接:http://blog.csdn.net/lysc_forever/article/details/17093405


    实现的操作包括:1、打开属性表;2、编辑属性表;3、增加属性列;4、数据排序;5、字段计算……

    嗯,实现的功能目前就这些吧,后续还会继续跟进,还望大家多多关注……下面就分功能说说我的实现方式吧……

    1、打开属性表

    属性表的打开是在TOC的右键菜单中打开的,首先新建一个类OpenAttribute,继承BaseCommand,OpenAttribute类的源码如下:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.Linq;  
    4. using ESRI.ArcGIS.ADF.BaseClasses;  
    5. using ESRI.ArcGIS.Controls;  
    6.   
    7. namespace MapDemo  
    8. {  
    9.     public sealed class OpenAttribute : BaseCommand  
    10.     {  
    11.         IMapControl3 m_mapControl;  
    12.         AxMapControl _MapControl;  
    13.   
    14.         public OpenAttribute(AxMapControl pMapControl)  
    15.         {  
    16.             base.m_caption = "查看属性表";  
    17.             _MapControl = pMapControl;  
    18.         }  
    19.   
    20.         public override void OnClick()  
    21.         {  
    22.             formTable formtable = new formTable(_MapControl, m_mapControl);  
    23.             formtable.Show();  
    24.   
    25.         }  
    26.   
    27.         public override void OnCreate(object hook)  
    28.         {  
    29.             m_mapControl = (IMapControl3)hook;  
    30.         }  
    31.     }  
    32. }  


    解释一下,AxMapControl参数是为了后面属性表操作时刷新视图的。接着在toc右键事件中添加代码:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. //查看属性表  
    2.             m_menuLayer.AddItem(new OpenAttribute(mapMain), -1, 2, false, esriCommandStyles.esriCommandStyleIconAndText);  


    如此这般,这般如此,我们期待的属性表就出现了,效果呢比较丑陋,莫怪莫怪……


    属性表打开之后呢,大家就看到了有关属性表操作的一些功能了,不过呢,属性表的大开的工作还尚未完成。接下来呢,添加如下引用:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. using ESRI.ArcGIS.Carto;  
    2. using ESRI.ArcGIS.Controls;  
    3. using ESRI.ArcGIS.Geodatabase;  


    完了之后,定义一下变量:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. AxMapControl _MapControl;  
    2.         IMapControl3 m_mapControl;  
    3.         public DataTable dt2;          
    4.         ITableSort pTs;//处理排序  
    5.         bool up = true;  
    6.         int row_index = 0;  
    7.         int col_index = 0;  
    8.         public string strAddField = "";  
    9.         RowAndCol[] pRowAndCol = new RowAndCol[10000];  
    10.         int count = 0;  


    这个窗口的参数为:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. ublic formTable(AxMapControl pMapControl,IMapControl3 pMapCtrl)  
    2.         {  
    3.             InitializeComponent();  
    4.             _MapControl = pMapControl;  
    5.             m_mapControl = pMapCtrl;  
    6.         }  


    这样,下面就可以显示属性了,在form_load事件中写如下代码:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. private void formTable_Load(object sender, EventArgs e)  
    2.         {  
    3.             TableShow();  
    4.         }  


    此处,调用了TableShow方法,TableShow的代码如下:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. public void TableShow()  
    2.         {  
    3.             ILayer pLayer = (ILayer)m_mapControl.CustomProperty;  
    4.             IFeatureLayer pFLayer = pLayer as IFeatureLayer;  
    5.             IFeatureClass pFeatureClass = pFLayer.FeatureClass;  
    6.   
    7.             if (pFeatureClass == nullreturn;  
    8.   
    9.             DataTable dt = new DataTable();  
    10.             DataColumn dc = null;  
    11.   
    12.             for (int i = 0; i < pFeatureClass.Fields.FieldCount; i++)  
    13.             {  
    14.   
    15.                 dc = new DataColumn(pFeatureClass.Fields.get_Field(i).Name);  
    16.   
    17.                 dt.Columns.Add(dc);  
    18.   
    19.             }  
    20.   
    21.             IFeatureCursor pFeatureCuror = pFeatureClass.Search(nullfalse);  
    22.             IFeature pFeature = pFeatureCuror.NextFeature();  
    23.   
    24.             DataRow dr = null;  
    25.             while (pFeature != null)  
    26.             {  
    27.                 dr = dt.NewRow();  
    28.                 for (int j = 0; j < pFeatureClass.Fields.FieldCount; j++)  
    29.                 {  
    30.                     if (pFeatureClass.FindField(pFeatureClass.ShapeFieldName) == j)  
    31.                     {  
    32.   
    33.                         dr[j] = pFeatureClass.ShapeType.ToString();  
    34.                     }  
    35.                     else  
    36.                     {  
    37.                         dr[j] = pFeature.get_Value(j).ToString();  
    38.   
    39.                     }  
    40.                 }  
    41.   
    42.                 dt.Rows.Add(dr);  
    43.                 pFeature = pFeatureCuror.NextFeature();  
    44.             }  
    45.             gdvAttribute.DataSource = dt;  
    46.             dt2 = dt;  
    47.         }  


    这样呢,属性表的显示就完成了。

    2、新增字段

    先看看那个“新增字段”按钮的事件吧……

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. ILayer pLayer = (ILayer)m_mapControl.CustomProperty;  
    2.             IFeatureLayer pFLayer = pLayer as IFeatureLayer;  
    3.             formAddField formaddfield = new formAddField(pFLayer, gdvAttribute);  
    4.             formaddfield.Show();  


    此处,调用了窗体formAddField ,传递的参数是IFeatureLayer pFLayer 和DataGridView gdvAttribute,那么,下面看看formAddField的设计以及实现


    界面呢也是比较简单,看看formAddField 的代码:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.ComponentModel;  
    4. using System.Data;  
    5. using System.Drawing;  
    6. using System.Linq;  
    7. using System.Text;  
    8. using System.Windows.Forms;  
    9.   
    10. using ESRI.ArcGIS.Carto;  
    11. using ESRI.ArcGIS.Geodatabase;  
    12. using ESRI.ArcGIS.Controls;  
    13.   
    14. namespace MapDemo  
    15. {  
    16.     public partial class formAddField : Form  
    17.     {  
    18.         private IFeatureLayer _FeatureLayer = null;  
    19.         private DataGridView _dgv;  
    20.         public formAddField(IFeatureLayer pFeatureLayer, DataGridView dgv)  
    21.         {  
    22.             InitializeComponent();  
    23.             _FeatureLayer = pFeatureLayer;  
    24.             _dgv = dgv;  
    25.         }  
    26.   
    27.         private void formAddField_Load(object sender, EventArgs e)  
    28.         {  
    29.             this.cmbFieldType.Items.Add("长整型");  
    30.             this.cmbFieldType.Items.Add("短整型");  
    31.             this.cmbFieldType.Items.Add("浮点型");  
    32.             this.cmbFieldType.Items.Add("双精度");  
    33.             this.cmbFieldType.Items.Add("文本型");  
    34.             this.cmbFieldType.Items.Add("日期型");  
    35.             this.cmbFieldType.SelectedIndex = 0;  
    36.         }  
    37.   
    38.         /// <summary>  
    39.         /// 改变事件  
    40.         /// </summary>  
    41.         /// <param name="sender"></param>  
    42.         /// <param name="e"></param>  
    43.         private void cmbFieldType_SelectedIndexChanged(object sender, EventArgs e)  
    44.         {  
    45.             string strFieldType = cmbFieldType.Text;  
    46.             switch (strFieldType)  
    47.             {  
    48.                 case "长整型":  
    49.                     {  
    50.                         panelPrecision.Visible = true;  
    51.                         panelScale.Visible = false;  
    52.                         break;  
    53.                     }  
    54.                 case "短整型":  
    55.                     {  
    56.                         panelPrecision.Visible = true;  
    57.                         panelScale.Visible = false;  
    58.                         break;  
    59.                     }  
    60.                 case "浮点型":  
    61.                     {  
    62.                         panelPrecision.Visible = true;  
    63.                         panelScale.Visible = true;  
    64.                         break;  
    65.                     }  
    66.                 case "双精度":  
    67.                     {  
    68.                         panelPrecision.Visible = true;  
    69.                         panelScale.Visible = true;  
    70.                         break;  
    71.                     }  
    72.                 case "文本型":  
    73.                     {  
    74.                         panelPrecision.Visible = true;  
    75.                         panelScale.Visible = false;  
    76.                         lblPrecision.Text = "长度";  
    77.                         break;  
    78.                     }  
    79.                 default://日期型0  
    80.                     {  
    81.                         panelPrecision.Visible = false;  
    82.                         panelScale.Visible = false;  
    83.                         break;  
    84.                     }  
    85.             }   
    86.         }  
    87.   
    88.         private void btnOK_Click(object sender, EventArgs e)  
    89.         {  
    90.             string strFieldName = txtFieldName.Text;  
    91.             string strFieldType = cmbFieldType.Text;  
    92.             try  
    93.             {  
    94.                 IFeatureLayer editAttributeLayer = _FeatureLayer;  
    95.   
    96.                 //Field collection  
    97.                 IFieldsEdit pFieldsEdit;  
    98.                 //获取FeatureLayer  
    99.                 IFeatureLayer pFeatureLayer = editAttributeLayer;  
    100.   
    101.                 //从FeatureLayer获取工作空间  
    102.                 IDataset pDataSet = pFeatureLayer.FeatureClass as IDataset;  
    103.                 IWorkspace pWorkSpace = pDataSet.Workspace;  
    104.                 //设置字段属性  
    105.                 IField pNewField = new FieldClass();  
    106.                 IFieldEdit pFieldEdit = pNewField as IFieldEdit;  
    107.                 pFieldEdit.AliasName_2 = strFieldName;  
    108.                 pFieldEdit.Name_2 = strFieldName;  
    109.                 switch (strFieldType)  
    110.                 {  
    111.                     case "长整型":  
    112.                     {  
    113.                         pFieldEdit.Type_2 = esriFieldType.esriFieldTypeInteger;  
    114.                         pFieldEdit.Precision_2 = int.Parse(txtPrecision.Text);  
    115.                         break;  
    116.                     }  
    117.                     case "Class1.cs短整型":  
    118.                     {  
    119.                         pFieldEdit.Type_2 = esriFieldType.esriFieldTypeSmallInteger;  
    120.                         pFieldEdit.Precision_2 = int.Parse(txtPrecision.Text);  
    121.                         break;  
    122.                     }  
    123.                     case "浮点型":  
    124.                     {  
    125.                         pFieldEdit.Type_2 = esriFieldType.esriFieldTypeSingle;  
    126.                         pFieldEdit.Precision_2 = int.Parse(txtPrecision.Text);  
    127.                         pFieldEdit.Scale_2 = int.Parse(txtScale.Text);  
    128.                         break;  
    129.                     }  
    130.                     case "双精度":  
    131.                     {  
    132.                         pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;  
    133.                         pFieldEdit.Precision_2 = int.Parse(txtPrecision.Text);  
    134.                         pFieldEdit.Scale_2 = int.Parse(txtScale.Text);  
    135.                         break;  
    136.                     }  
    137.                     case "文本型":  
    138.                     {  
    139.                         pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;  
    140.                         pFieldEdit.Length_2 = int.Parse(txtPrecision.Text);  
    141.                         break;  
    142.                     }  
    143.                     default://日期型0  
    144.                     {  
    145.                         pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDate;  
    146.                         break;  
    147.                     }  
    148.                 }                 
    149.                 //添加字段  
    150.                 try  
    151.                 {  
    152.                     int theField = pFeatureLayer.FeatureClass.Fields.FindField(strFieldName);  
    153.                     if (theField == -1)  
    154.                     {  
    155.                         pFeatureLayer.FeatureClass.AddField(pFieldEdit);  
    156.                         MessageBox.Show("字段添加成功!");  
    157.                     }  
    158.                     else  
    159.                     {  
    160.                         MessageBox.Show("字段已经存在!");  
    161.                     }  
    162.                 }  
    163.                 catch (Exception ex)  
    164.                 {  
    165.                     MessageBox.Show("Field " + pFieldEdit.Name + " was not added due to an error (" + ex.Message + " )");  
    166.                 }  
    167.   
    168.             }  
    169.             catch (System.Exception ex)  
    170.             {  
    171.                 MessageBox.Show(ex.Message);  
    172.             }              
    173.             this.Close();  
    174.             RefreshTable refresh = new RefreshTable();  
    175.             refresh.Refresh(_dgv, _FeatureLayer);  
    176.         }  
    177.   
    178.         private void btnCancle_Click(object sender, EventArgs e)  
    179.         {  
    180.             this.Close();  
    181.         }          
    182.     }  
    183. }  


    首先,在窗体加载的时候将数据类型添加进去,之后在类型选择改变时触发其属性控制控件的显示或者改变,接下来就是最重要的添加字段了,大家注意到了,在this.Close()之后,还调用了RefreshTable 的Refresh方法,传递的参数是datagridview _dgv和Ifeaturelayer _FeatureLayer,Refresh方法主要是实现添加自断后显示的刷新,由于后面还有涉及到,所以,这个后面一并说。

    3、编辑属性并保存

    还是先看看那两个按钮的时间吧:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. /// <summary>  
    2.         /// 编辑属性,并定位到最后一行  
    3.         /// </summary>  
    4.         /// <param name="sender"></param>  
    5.         /// <param name="e"></param>  
    6.         private void toolEditor_Click(object sender, EventArgs e)  
    7.         {  
    8.             gdvAttribute.ReadOnly = false;  
    9.             this.gdvAttribute.CurrentCell = this.gdvAttribute.Rows[this.gdvAttribute.Rows.Count - 2].Cells[0];  
    10.         }  
    11.   
    12.  /// <summary>  
    13.         /// 保存编辑  
    14.         /// </summary>  
    15.         /// <param name="sender"></param>  
    16.         /// <param name="e"></param>  
    17.         private void toolSave_Click(object sender, EventArgs e)  
    18.         {  
    19.             gdvAttribute.ReadOnly = true;  
    20.             ILayer pLayer = (ILayer)m_mapControl.CustomProperty;  
    21.             IFeatureLayer pFLayer = pLayer as IFeatureLayer;  
    22.             IFeatureClass pFeatureClass = pFLayer.FeatureClass;  
    23.             ITable pTable;  
    24.             //pTable = pFeatureClass.CreateFeature().Table;//很重要的一种获取shp表格的一种方式           
    25.             pTable = pFLayer as ITable;  
    26.             //将改变的记录值传给shp中的表  
    27.             int i = 0;  
    28.             while (pRowAndCol[i].Column != 0 || pRowAndCol[i].Row != 0)  
    29.             {  
    30.                 IRow pRow;  
    31.                 pRow = pTable.GetRow(pRowAndCol[i].Row);  
    32.                 pRow.set_Value(pRowAndCol[i].Column, pRowAndCol[i].Value);  
    33.                 pRow.Store();  
    34.                 i++;  
    35.             }  
    36.             count = 0;  
    37.             for (int j = 0; j < i; j++)  
    38.             {  
    39.                 pRowAndCol[j].Row = 0;  
    40.                 pRowAndCol[j].Column = 0;  
    41.                 pRowAndCol[j].Value = null;  
    42.             }  
    43.             MessageBox.Show("保存成功!""提示", MessageBoxButtons.OK);  
    44.         }  


    在保存属性表的时候,出现了pRowAndCol,对他的定义如下:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. public struct RowAndCol  
    2.         {  
    3.             //字段  
    4.             private int row;  
    5.             private int column;  
    6.             private string _value;  
    7.   
    8.             //行属性  
    9.             public int Row  
    10.             {  
    11.                 get  
    12.                 {  
    13.                     return row;  
    14.                 }  
    15.                 set  
    16.                 {  
    17.                     row = value;  
    18.                 }  
    19.             }  
    20.             //列属性  
    21.             public int Column  
    22.             {  
    23.                 get  
    24.                 {  
    25.                     return column;  
    26.                 }  
    27.                 set  
    28.                 {  
    29.                     column = value;  
    30.                 }  
    31.             }  
    32.             //值属性  
    33.             public string Value  
    34.             {  
    35.                 get  
    36.                 {  
    37.                     return _value;  
    38.                 }  
    39.                 set  
    40.                 {  
    41.                     _value = value;  
    42.                 }  
    43.             }  
    44.         }  


    4、删除选择

    顾名思义,就是删除选择的行,这里的选择可以是多选,也可是单选,看看对应按钮的事件吧:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. /// <summary>  
    2.         /// 删除行  
    3.         /// </summary>  
    4.         /// <param name="sender"></param>  
    5.         /// <param name="e"></param>  
    6.         private void toolDelSelect_Click(object sender, EventArgs e)  
    7.         {  
    8.             if (((MessageBox.Show("确定要删除吗""警告", MessageBoxButtons.YesNo)) == DialogResult.Yes))  
    9.             {  
    10.                 ILayer pLayer = (ILayer)m_mapControl.CustomProperty;  
    11.                 IFeatureLayer pFLayer = pLayer as IFeatureLayer;  
    12.                 ITable pTable = pFLayer as ITable;  
    13.                 IRow pRow = pTable.GetRow(row_index);  
    14.                 pRow.Delete();  
    15.                 TableShow();  
    16.                 MessageBox.Show("删除成功!""提示", MessageBoxButtons.OK);  
    17.                 _MapControl.ActiveView.Refresh();  
    18.             }  
    19.         }  


    此处,看看下面这个事件:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. private void gdvAttribute_CellValueChanged(object sender, DataGridViewCellEventArgs e)  
    2.         {  
    3.             //记录值一旦改变触发此事件  
    4.             //在dataGridView中获取改变记录的行数,列数和记录值  
    5.             pRowAndCol[count].Row = gdvAttribute.CurrentCell.RowIndex;  
    6.             pRowAndCol[count].Column = gdvAttribute.CurrentCell.ColumnIndex;  
    7.             pRowAndCol[count].Value = gdvAttribute.Rows[gdvAttribute.CurrentCell.RowIndex].Cells[gdvAttribute.CurrentCell.ColumnIndex].Value.ToString();  
    8.             count++;  
    9.         }  


    5、导出Excel

    首先得添加程序对Microsoft.Office.Interop.Excel的引用,添加完成之后方可导出:

     

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
    1. /// <summary>  
    2.         /// 导出Excel  
    3.         /// </summary>  
    4.         /// <param name="sender"></param>  
    5.         /// <param name="e"></param>  
    6.         private void toolExpXLS_Click(object sender, EventArgs e)  
    7.         {  
    8.             ILayer pLayer = (ILayer)m_mapControl.CustomProperty;  
    9.             IFeatureLayer pFLayer = pLayer as IFeatureLayer;  
    10.             IFeatureClass pFeatureClass = pFLayer.FeatureClass;  
    11.             IFields pFields = pFeatureClass.Fields;  
    12.             ExportExcel(gdvAttribute, pFields);  
    13.         }  
    14.   
    15.         private void ExportExcel(DataGridView myDGV, IFields pFields)  
    16.         {  
    17.             string saveFileName = "";  
    18.             SaveFileDialog saveDialog = new SaveFileDialog();  
    19.             saveDialog.DefaultExt = "xls";  
    20.             saveDialog.Filter = "Excel文件|*.xls";  
    21.             saveDialog.ShowDialog();  
    22.             saveFileName = saveDialog.FileName;  
    23.             if (saveFileName.IndexOf(":") < 0) return//被点了取消   
    24.   
    25.             Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();  
    26.             if (xlApp == null)  
    27.             {  
    28.                 MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");  
    29.                 return;  
    30.             }  
    31.   
    32.             Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;  
    33.             Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);  
    34.             Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1  
    35.   
    36.             //写入标题  
    37.             for (int i = 0; i < myDGV.ColumnCount; i++)  
    38.             {  
    39.                 worksheet.Columns.Cells[1, i + 1] = myDGV.Columns[i].HeaderText;  
    40.             }  
    41.             //写入数值  
    42.             for (int r = 0; r < myDGV.Rows.Count; r++)  
    43.             {  
    44.                 for (int i = 0; i < myDGV.ColumnCount; i++)  
    45.                 {  
    46.                     worksheet.Cells[r + 2, i + 1] = myDGV.Rows[r].Cells[i].Value;  
    47.                 }  
    48.                 System.Windows.Forms.Application.DoEvents();  
    49.             }  
    50.   
    51.             worksheet.Columns.EntireColumn.AutoFit();//列宽自适应  
    52.   
    53.             if (saveFileName != "")  
    54.             {  
    55.                 try  
    56.                 {  
    57.                     workbook.Saved = true;  
    58.                     workbook.SaveCopyAs(saveFileName);  
    59.                 }  
    60.                 catch (Exception ex)  
    61.                 {  
    62.                     MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);  
    63.                 }  
    64.                 xlApp.Quit();  
    65.                 GC.Collect();//强行销毁   
    66.                 MessageBox.Show("资料保存成功""提示", MessageBoxButtons.OK);  
    67.             }  
    68.         }  



     

    展开全文
  • ArcGIS Engine要素属性表编辑

    千次阅读 2018-11-15 11:03:53
    要素属性编辑是地理信息系统的基本功能,为要素添加字段使用IFieldEdit接口、IField接口与FieldClass类。 由于IField字段是只读的,要修改字段,必须将其转化为IFieldEdit接口类型,再对其进行赋值。 IField ...

    属性表字段添加

    要素属性编辑是地理信息系统的基本功能,为要素添加字段使用IFieldEdit接口IField接口FieldClass类。

    由于IField字段是只读的,要修改字段,必须将其转化为IFieldEdit接口类型,再对其进行赋值。

                    IField pField = new FieldClass();
                    IFieldEdit pFieldEdit = pField as IFieldEdit;
                    pFieldEdit.Name_2 = fieldname;
                    pFieldEdit.AliasName_2 = alias;
                    pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
                    pFieldEdit.Length_2 = 20;
                    pTable.AddField(pField);

    属性表赋值

    使用IRow接口

                        string value = row.Cells[j].Value.ToString();
                        pRow.set_Value(j, value);
                        pRow.Store();

    IRow接口提供set_Value方法,用于设置和修改属性,其第一个参数为属性的序号,第二个参数为属性值。

    展开全文
  • 原文地址: ArcGIS问题:属性表编辑与修改 - Silent Dawn的日志 - 网易博客 ... 属性表编辑与修改 属性表的ID的添加和删除须在stop editing 状态下,在修改或添加具体属性时要在start ...

    原文地址:

    ArcGIS问题:属性表的编辑与修改 - Silent Dawn的日志 - 网易博客
    http://gisman.blog.163.com/blog/static/34493388200942785434949/

     

    属性表的编辑
    1. 属性表的编辑与修改
    属性表的ID的添加和删除须在stop editing 状态下,在修改或添加具体属性时要在start editing 状态下,修改添加完成后save edits。
    2.属性表数据的恢复、删除、复制或粘贴
    失误删除要素后,打开备份的原数据,选择删除的数据表,在ArcMap中会显示选中数据项,复制(Ctrl+C)后Editor 中Start Editing ,选择要复制到的图层,粘贴(Ctrl+V)即可恢复
    在Start Editing状态下,在属性表中选择数据项(选中项会呈现蓝色,按住Ctrl可以多项选择),ArcMap中图形会呈现高亮,亦可在ArcMap中直接选择,然后Delete
    在属性表中选择数据项(选中项会呈现蓝色,按住Ctrl可以多项选择),ArcMap中图形会呈现高亮,亦可在ArcMap中直接选择,然后将数据复制到目的图层(目的图层要处于Start Editing状态)
    3.属性表属性的添加与删除

    属性的添加与删除要在Stop Editing状态进行,注意属性删除后不能恢复,或者在ArcCatalog中右键单击选择properties中Field中选中要删除项delete或者添加并选择其类型。

    转载于:https://www.cnblogs.com/wangshunli/p/4438915.html

    展开全文
  • 属性表

    千次阅读 2008-03-06 10:39:00
    属性表是一个允许用户去查看和编辑项目的属性的窗口。例如,一个电子表格程序可能使用属性表去让用户设置字体和表格的边框属性,及设置设置的属性,例如一个磁盘驱动器,打印机或鼠标。 关于属性表使用属性表在...
  • AE属性表操作(1)

    万次阅读 热门讨论 2013-12-03 11:54:14
    2、编辑属性表;3、增加属性列;4、数据排序;5、字段计算…… 嗯,实现的功能目前就这些吧,后续还会继续跟进,还望大家多多关注……下面就分功能说说我的实现方式吧…… 1、打开属性表 属性表的打开是在TO
  • Arcgis属性表常用操作

    千次阅读 2020-03-25 22:50:58
    属性表操作 一、属性表介绍 属性表即Arcgis中的Table数据,此类数据为二维表,通常格式有.dbf,shp属性表,栅格属性表,数据库表,Excel表,TXT表等。Arcgis不可以编辑上述提到的Excel表和TXT表。这些表都存储了...
  • QGIS入门实验五 矢量数据属性编辑

    千次阅读 2020-07-28 10:14:54
    实验05 矢量数据属性编辑 一、实验目的 通过这个实验我们可以掌握: ...还可以通过【字段计算器】进行批量快速的编辑属性表 3.删除字段 在菜单栏上点击【删除字段】选择要删除的字段进行删除即可 ...
  • 模糊查询我的根据自己的设计的,自己用基本语句是 属性表字段 LIKE '*内容*' *号为 SQL like语句里的% like '%%',在ArcGIS里是*开始用%不出来,其他查询语句都遵循SQL语法 /// <summary> /// 清除选择 ...
  • 属性表概述

    千次阅读 2002-03-08 08:59:00
    属性表 属性表是一个允许用户去查看和编辑项目的属性的窗口。例如,一个电子表格程序可能使用属性表去让用户设置字体和表格的边框属性,及设置设置的属性,例如一个磁盘驱动器,打印机或鼠标。 关于属性表使用属性...
  • 第022篇:ArcGIS中将属性表直接导出为Excel的方法

    万次阅读 多人点赞 2018-08-31 11:00:15
    在使用ArcGIS处理数据的过程中,经常需要导出属性表。无论是分析也好,是添加复杂字段内容也好,Excel都要比ArcGIS本身出色得多。大家通常采用的方式是先导出成txt或dbf,再转成Excel。上述方法在很多情况下是可行的...
  • ArcGIS - 跨属性表进行字段计算

    千次阅读 2020-02-27 18:58:09
    属性表添加字段用于存放计算结果 选择其中一个图层 - 打开属性表 - 左上角的表选项 - 添加...在主页面菜单栏空白处右键 - 选择编辑器 - 选择编辑器 - 开始编辑 - 回到属性表 - 在新建的用于储存计算结果的字段右键 ...
  • ArcGIS中提供了对属性表和对应颜色编辑的功能(如下图2)。   我们软件用MFC开发的,发现ListCtrl控件实在不好用,网上有很多重写的demo,没有找到合适的,于是按照功能自己重新写了一个。 之前没自己写过控件...
  • Qt属性表控件的使用 QtTreePropertyBrowser

    万次阅读 多人点赞 2015-06-16 14:25:41
    属性表是vs2003时引入的的新控件,用于流量和设置大量的信息,现在,很多软件上都能看到它的身影,如vs,Qt Creator等IDE的详细设置里都离不开属性表。虽然,再Qt Creator里,属性表到处可见,但是,却没有集成到...
  • ArcMap小技巧——快速修改属性表

    万次阅读 2018-08-07 12:49:15
    在GIS相关的工作中,常常会涉及到对属性表数据的修改,尤其是对栅格图像的矢量化,往往需要修改大量的数据。一般的方法是 一般方法 ①开始编辑 ②打开需要修改的属性表 ③双击属性表行前面的方格,定位到图...
  • arcgis批量修改属性表

    千次阅读 2016-11-22 17:19:25
    arcgis作为GIS领域应用最广泛的软件,在GIS从业人员的日常工作中必不可少。本文主要介绍arcgis属性表属性通改的一个快捷方法,只需要简单的VB代码就能大幅度提高修改效率。下图所示为示例属性表: 某...
  • Arcgis属性表怎么添加字段? 在arcgis工作中很多时候我们需要对属性表进行添加字段的操作。下面我们讲一下如何在属性表中添加字段。 打开一个arcgis工程文件,打开某一要素的属性表。 点击左上角的按钮,在下拉菜单...
  • 因%是特殊字符,在属性表中添加时总会弹出如下的对话框  那么如何显示百分号呢?... 属性表中的百分号仅仅为显示,和数据存储无关,当打开编辑器对属性值进行编辑时,单击属性值,仅显示数值,无百分号。
  • 了解ArcEngine中矢量要素的字段及属性结构,了解栅格图像的数据属性及属性表 实现右击TOC可以显示数据属性表、删除图层,双击Map可以识别地图属性 2概要 本文只介绍主要功能方法,具体的调用关系、窗口实现可见...
  • VS2012项目属性表

    千次阅读 2015-01-16 22:54:23
    解决这个问题的方法就是为每类项目创建属性表,下次再创建类型的项目时就直接导入属性表行了。Visual Studio 2012中创建属性表的步骤。 第1步:  选择坐下角的“属性管理器”。 第2步:  右键单击左上角的项目...
  • 1.在做好的SHP文件中,打开属性表连接本地excel表时,连接字段的文字和符号一定要一致(要注意括号,是输入法输入还是英文直接输入),否则无法链接属性值。 2. 当验证连接时出现,不包含的属性字符,要仔细看提示...
  • java JTable表头属性设置

    万次阅读 2016-12-27 22:14:07
    java JTable表头属性设置
  • 作为一只菜鸟,研究了一个上午+一个下午,才把属性表的更新修改搞了出来,记录一下:我的需求是:已经在文件地理数据库中存放了一个ITable类型的表(不是要素类FeatureClass),注意不是要素类FeatureClass的属性表...
  • 表格可编辑属性

    千次阅读 2018-01-02 17:10:04
    <td contenteditable="true">{{banner_lists.level}}</td>
  • 属性编辑器PropertyEditor

    千次阅读 2019-09-22 15:29:14
    在Spring配置文件里,我们往往通过字面值为Bean各种类型的...我们可以隐约地感觉到一定有一个转换器在其中起作用,这个转换器就是属性编辑器。 “属性编辑器”这个名字可能会让人误以为是一个带用户界面的输入器,...
  • 第一次发帖 可能格式有点差 见谅!... //选择一行进行编辑时用到的 $(function(){ $("#list").jqGrid({ url:'studentShow_do.jsp', datatype: 'json', mtype: 'post', colNames:['学号',
  • AE开发图层右键打开属性表

    千次阅读 2017-07-24 11:19:35
    在ArcMap中,单击图层右键菜单中的“Open Attribute Table”命令,便可弹出属性数据。 数据显示,我们用了DataGridView控件。DataGridView 控件提供一种强大而灵活的以表格形式显示数据的方式。可以使用 ...
  • 属性表及属性页问题集

    千次阅读 2002-03-07 08:59:00
    属性表及属性页问题集一、“应用”按钮的ID“应用”的ID为:ID_APPLY_NOW (实际上是0x3021)。 在VC++的include目录中的Afxres.h文件中,定义如下: ...#define ID_APPLY_NOW 0x3021#define ID_WIZBACK 0x3023#...
  • 编辑属性contentEditable="true

    千次阅读 2018-04-18 11:34:20
    属性描述accesskey规定访问元素的键盘快捷键class规定元素的类名(用于规定样式中的类)。contenteditable规定是否允许用户编辑内容。contextmenu规定元素的上下文菜单。dir规定元素中内容的文本方...
  • 修改Feature的属性表的值

    千次阅读 2014-11-14 08:42:11
    然后用IFeature.set_Value()方法对Feature进行属性表值的修改:  pFeature.set_Value(i, valueToSet); 修改完成,要用IFeature.store()方法保存:  pFeature. Store() ; 然后最好将Feature...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 258,178
精华内容 103,271
关键字:

如何编辑属性表