天天看點

在ArcGIS中為Shapefile屬性表增加字段

  屬性描述了要素的相關特性,并存儲于表中。在建立新的屬性表或是向已有的屬性表中增加字段的時候,必須指明資料類型和字段屬性,比如精度(Precision)或長度(Length)。資料類型的選擇和相關設定會影響存儲和顯示,并且對背景資料庫的精度和效率有十分重要的意義。

    在ArcGIS中你可以将要素的屬性值存儲為七種資料類型之一,即短整型(short integer)、長整型(long integer)、浮點型(float)、雙精度(double)、文本型(text)、日期型(date)和大型二進制對象(BLOB)。屬性表同樣包含預定義字段,儲存了資料的幾何特性(Shape)和要素ID(FID)。浮點和雙精度資料是真實的數值,通常用于測量或計算的連續資料。短整型和長整型資料所反映的數值,通常用于記數或為分類指定一個編碼值(coded value)。文本資料也能夠存儲編碼值或者描述要素特征的文本,比如名稱。要素時間方面的資料存儲為日期型,如閥門的最後檢測時間。BLOB能夠內建其它的媒體,如視訊、影像或聲音。下表總結了這些資料類型的資訊。

資料類型

 描述

浮點型(Float)

 1個符号位、7個指數位和24個小數位

雙精度(Double)

 1個符号位、7個指數位和56個小數位

短整型(Short Integer)

 1個符号位、15個二進制位,大約在-32000~32000

長整型(Long Integer)

 1個符号位、31個二進制位,大約在-2000000000~2000000000

文本型(Text)

 數字字元存儲為位元組

日期型(Date)

 日期值基于标準時間格式存儲

BLOB

 複雜對象,如影像和視訊

用ArcMap為表增加一個新字段

在開始編輯shapefile屬性表之前,你可以先看看已有字段的資料類型和設定。

1、  啟動ArcMap,加載一個要修改的shapefile,在目錄表(TOC)中右鍵單擊shapefile檔案,從環境菜單中選擇Properties。

2、  在Layer Properties對話框中,單擊Fields标簽。屬性表中的每一個字段都列在這裡,并且顯示了資料類型和特性。單擊OK,關閉Layer Properties對話框。

3、  要增加字段,在目錄表中單擊shapefile,從環境菜單中選擇Open Attribute Table。

4、  單擊Options按鈕,選擇Add Field。

5、  在Add Field對話框中,為新字段命名并選擇資料類型。在Field Properties中設定相應的字段特性。

6、  單擊OK,關閉對話框。

精度(Precision)是一項重要的設定,精度值反映了資料存儲的詳細程度,并不一定反映它的精确程度。确定實際需要的精度值,因為高的精度需要更多的磁盤空間。Scale指的是小數點右邊的數字位數。

 在ArcCatalog中建立新的Shapefile

在ArcCatalog的表視圖中也可以完成增加字段的工作(方法同上),此處我們讨論一下如何建立新的Shapefile。在建立新的Shapefile時,FID和Shape字段可以自動産生,但你增加的其它字段的資料類型必須自己指定。

1、  啟動ArcCatalog,選擇一個用來存儲建立Shapefile的檔案夾(位置)。

2、  從主菜單中選擇File > New > Shapefile。在Create New Shapefile對話框中,為shapefile命名,選擇要素類型,設定坐标系統。如果要存儲M和Z值,選中相應的複選框。完成後單擊OK。

3、  右鍵單擊新建立的shapefile,從環境菜單中選擇Properties。

4、  在Shapefile Properties對話框中,單擊Fields标簽。

5、  要建立一個新的字段,隻要在第一個有效的空行上單擊。在Field Name下輸入屬性的名稱。在Data Type下單擊,從下拉清單框中選擇合适的資料類型。

6、  一旦選擇了資料類型,就可以對字段特性進行設定。設定完字段特性後,但擊應用或确定。

在ArcCatalog中可以增加、編輯或删除shapefile屬性表的字段。新字段的值通常由表中的其它字段計算得到,或是存儲選中要素的值。

 用代碼增加一個字段

我們可以用ArcMap和ArcCatalog來增加字段,當然也可以用代碼來完成這項工作。下面這段代碼就可以很容易的增加一個字段。

Public Sub AddField()

    Dim pMxdoc As IMxDocument

    Set pMxdoc = ThisDocument

    Dim pFeatureLayer As IFeatureLayer

    Set pFeatureLayer = pMxdoc.SelectedLayer

    Dim pMyField As IFieldEdit

    Set pMyField = New Field

    With pMyField        ‘設定字段屬性

        .Name = "MyField"

        .Type = esriFieldTypeString

        .Length = 16

    End With

    Dim pTable As Itable

    Set pTable = pFeatureLayer

    pTable.AddField pMyField

End Sub

為了友善,我們使用了SelectedLayer來獲得一個要素圖層(當然是shapefile的)。然後再定義一個新的字段,包括了名稱、類型和長度,這些都是最基本的設定。定義好字段後我們就需要把它添加到表中。要素類(featureclass)也是一種表(table),隻不過是一種特殊的表(包含了空間資訊),這一點我們可以從OMD圖中很容易看到。是以我們在增加字段的時候使用的是Itable接口。需要注意的一點是,我們在此處并沒有使用IFieldsEdit接口,為什麼呢?因為我們在這裡并不是要建立一個新的表,隻是在已有的表中增加一個新的字段而已。

注:ArcObjects(以下簡稱AO)是ArcGIS Desktop的基石,從上面的例子我們也可以看出,許多在ArcMap或ArcCatalog中的操作都可以用相應的代碼來完成,因為ArcMap與ArcCatalog也是使用了相似的代碼來完成這些工作的。是以我們在學習AO開發的過程中,首先要學習的就是Desktop的基本操作,你隻有熟悉了它的基本操作才能有一個直覺的了解,明白對象間的層次關系,知道AO能夠做些什麼事,這樣在你自己寫代碼的時候才能夠做到有的放矢。 

繼續閱讀