天天看點

基于C#的AE二次開發之GP工具實作要素類添加字段

基于C#的AE二次開發之GP工具實作要素類添加字段

我的開發環境為ArcGIS Engine 10.2與Visual studio2010。主地圖名稱為axMapControl1。建立一個菜單或按鈕,加入點選事件,粘貼代碼即可實作。(注意相關事件的添加與動态連結庫的引入)

  • 效果預覽
基于C#的AE二次開發之GP工具實作要素類添加字段

使用的工具

基于C#的AE二次開發之GP工具實作要素類添加字段

實作效果預覽

  • 實作代碼
private void 添加字段ToolStripMenuItem_Click(object sender, EventArgs e)
{
    try
    {
        //定義一個Geoprocessor工具類
        Geoprocessor gp = new Geoprocessor();
        //使用的是資料管理工具下的添加字段工具
        ESRI.ArcGIS.DataManagementTools.AddField addField = new ESRI.ArcGIS.DataManagementTools.AddField();
        if (axMapControl1.get_Layer(0) != null)
        {
            //将第一個圖層強制轉換為FeatureLayer
            IFeatureLayer currentFeatureLater = axMapControl1.get_Layer(0) as IFeatureLayer;
            //将首圖層要素類強制轉化為表
            ESRI.ArcGIS.Geodatabase.ITable pTable = currentFeatureLater as ESRI.ArcGIS.Geodatabase.ITable;
            addField.in_table = pTable;//輸入要添加字段的要素類屬性表
            addField.field_name = "number4";//添加字段的名稱
            //字段類型有:TEXT、SHORT、LONG、FLOAT、DOUBLE、DATE、BLOB、RASTER、GUID
            addField.field_type = "DOUBLE";
            //其他屬性例如field_scale(字段精度)、field_length(字段長度)等等,核心是上面這幾個
            gp.Execute(addField, null);
            //強提醒
            MessageBox.Show("字段添加成功!");
        }
    }
    catch (Exception ex)
    {
        //如果添加字段的名稱已存在且字段類型一緻,不會執行字段添加;
        //如果添加字段的名稱已存在且字段類型不一緻,會報錯。
        MessageBox.Show("字段添加失敗" + ex);
    }
}
           
  • 補充
  1. field_type—— 字段類型

    TEXT—任何字元串。

    FLOAT— 在 -3.4E38 和 1.2E38 之間的小數。

    DOUBLE— 在 -2.2E308 和 1.8E308 之間的小數。

    SHORT— 在 -32,768 和 32,767 之間的整數。

    LONG— 在 -2,147,483,648 和 2,147,483,647 之間的整數。

    DATE—日期和/或時間。

    BLOB—長二進制數序列。您需要一個自定義的加載器、檢視器或第三方應用程式将這些項加載到 BLOB 字段中或者檢視 BLOB 字段的内容。

    RASTER—栅格影像。可以存儲 ArcGIS 軟體支援的所有栅格資料集格式,但強烈建議您僅使用小影像。

    GUID—全局唯一辨別符。

  2. field_scale—— 字段精度 (可選)

    可存儲在字段中的位數。所有位都将被計算在内,而無論其處于小數點的哪一側。如果輸入表是檔案或個人地理資料庫,則将忽略字段精度值。

  3. field_precision——字段小數位數 (可選)

    可存儲在字段中的小數位數。此參數僅可用于浮點型和雙精度資料字段類型。

    如果輸入表是檔案或個人地理資料庫,則将忽略字段小數位數值。

  4. field_alias——字段别名 (可選)

    指定給字段名稱的備用名稱。此名稱用于為含義隐晦的的字段名稱指定更具描述性的名稱。字段别名參數僅适用于地理資料庫。

  5. field_domain——字段屬性域 (可選)

    用于限制地理資料庫中的表、要素類或子類型的任何特定屬性的允許值。必須指定現有屬性域的名稱才能将其應用于字段。