ArcGis Python腳本——批量添加字段


插個廣告,制作ArcGIS的Tool工具學習下面的教程就對了:
零基礎學習Python制作ArcGIS自定義工具觀看鏈接
《零基礎學習Python制作ArcGIS自定義工具》課程簡介

以下是正文:


 

先看如何增加一個字段

函數:arcpy.AddField_management

語法:AddFields_management (in_table, field_description)

參數

說明

數據類型

in_table

要添加指定字段的輸入表。該字段將被添加到現有輸入表,並且不會創建新的輸出表。

可將字段添加到 ArcSDE 的要素類、文件或個人地理數據庫的要素類、coverage、shapefile、柵格目錄、獨立表、帶屬性表的柵格和/或圖層。

Mosaic Layer;

Raster Catalog Layer;

Raster Layer;

Table View

field_name

要添加到輸入表的字段的名稱。

String

field_type

在創建新字段時所使用的字段類型。

  • TEXT —名稱或其他文本特性。
  • FLOAT —特定范圍內含小數值的數值。
  • DOUBLE —特定范圍內含小數值的數值。
  • SHORT —特定范圍內不含小數值的數值;編碼值。
  • LONG —特定范圍內不含小數值的數值。
  • DATE —日期和/或時間。
  • BLOB —影像或其他多媒體。
  • RASTER —柵格影像。
  • GUID —GUID 值

String

field_precision

(可選)

描述可存儲在字段中的位數。所有位都將被計算在內,而無論其處於小數點的哪一側。

如果輸入表是個人或文件地理數據庫,則將忽略字段精度值。

Long

field_scale

(可選)

設置可存儲在字段中的小數位數。此參數僅可用於浮點型和雙精度數據字段類型。

如果輸入表是個人或文件地理數據庫,則將忽略字段小數位數值。

Long

field_length

(可選)

要添加的字段的長度。它為字段的每條記錄設置最大允許字符數。此選項僅適用於文本或 blob 類型的字段。

Long

field_alias

(可選)

指定給字段名稱的備用名稱。此名稱用於為含義隱晦的的字段名稱指定更具描述性的名稱。字段別名參數僅適用於地理數據庫和 coverage。

String

field_is_nullable

(可選)

不存在關聯屬性信息的地理要素。它們與零或空字段不同,僅支持地理數據庫中的字段。

  • NON_NULLABLE —字段不允許空值。
  • NULLABLE —字段允許空值。這是默認設置。

Boolean

field_is_required

(可選)

指定要創建的字段是否是表的必填字段;僅支持地理數據庫中的字段。

  • NON_REQUIRED —字段不是必填字段。這是默認設置。
  • REQUIRED —此字段是必填字段。必填字段具有永久性,不能刪除。

Boolean

field_domain

(可選)

用於約束地理數據庫中的表、要素類或子類型的任何特定屬性的允許值。必須指定現有屬性域的名稱才能將其應用於字段。

String

例:

要對“省級行政區域”增加一個名為“Area”,類型是“Text”,長度是100的字段。

arcpy.AddField_management("省級行政區域",'Area',"TEXT",field_length=100)

①第1參“輸入表”與第2參“字段名”是必選參數;

②其他參數為字段描述,可選,最好使用具名參數,如field_length=100。

批量添加字段的處理思路及代碼

例:給“省級行政區域”添加“A、B、C、D”4個字段。

①用Excel制作出字段及其描述表;

②復制除標題行以為的內容,粘貼到txt文檔,替換空格為“,”(英文符號,);

③arcpy批量添加字段,導入“Fields Description.txt”描述,每一行line是1個字段信息,將每行信息用“,”拆分裝入列表lineList;新建字段各屬性描述使用“具名參數=列表lineList各索引值指示數據的方式傳入;

import arcpy
#get txt file
f=open("C:/Users/yang/Desktop/Fields Description.txt",'r')
#read line
line=f.readline()
while line:
    lineList=line.split(',')
    #add field
    arcpy.AddField_management("省級行政區域",field_name=lineList[0],field_type=lineList[1],field_length=lineList[2],field_precision=lineList[3],field_scale=lineList[4].replace("\n",""))
    #next line   #code source: https://www.cnblogs.com/yzhyingcool/ QQ:975601416
    line=f.readline()
#close the txt file
f.close()

④使用該腳本時只需要改動“Fields Description.txt”描述文件的路徑與待處理的要素名(或路徑)即可。

 

Ps 示例中長度、精度均為隨意寫的,並不准確。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM