Удалить поле (Delete Field) (Управление данными (Data Management))
Резюме
Этот инструмент производит удаление одного или нескольких полей из класса пространственных объектов, таблицы, слоя объектов или набора растровых данных.
Использование
-
Этот инструмент может использовать любую таблицу; класс пространственных объектов ArcSDE, файловой или персональной баз геоданных; покрытие; набор растровых данных или шейп-файл.
-
Невозможно удалить поля из не нативных форматов, использующихся в ArcGIS только для чтения, например, наборов данных VPF и CAD.
-
Для параметра Удалить поле (Drop Field) кнопка Добавить поле (Add Field) используется только в ModelBuilder. В ModelBuilder, если предыдущий инструмент не был запущен и не существует его производных данных, параметр Удалить поле (Drop Field) не заполняется именами полей. Кнопка Добавить поле (Add Field) позволяет добавлять нужные поля, так что вы можете завершить диалоговое окно Удалить поле (Delete Field) и продолжить построение модели.
Синтаксис
Параметр | Объяснение | Тип данных |
in_table |
Таблица, содержащая поля, которые будут удалены. Существующая входная таблица будет изменена. | Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View |
drop_field [drop_field,...] | Поля, которые будут удалены из входной таблицы. Можно удалить только необязательные поля. | Field |
Пример кода
На следующем скрипте окна Python демонстрируется, как использовать инструмент Удалить поле (Delete Field) с запуском из окна Python в ArcGIS:
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.CopyFeatures_management("majorrds.shp", "C:/output/majorrds_copy.shp")
arcpy.DeleteField_management("C:/output/majorrds_copy.shp",
["STREET_NAM", "LABEL", "CLASS"])
Пример скрипта Python для выполнения функции Удалить поле (Delete Field):
# Name: DeleteField_Example2.py
# Description: Delete several fields from a feature class
# Author: ESRI
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Set local variables
inFeatures = "accident.dbf"
outFeatureClass = "C:/output/new_accident.dbf"
dropFields = ["STREET_NAM", "LABEL", "CLASS"]
# Execute CopyFeatures to make a new copy of the feature class
# Use CopyRows if you have a table
arcpy.CopyFeatures_management(inFeatures, outFeatureClass)
# Execute DeleteField
arcpy.DeleteField_management(outFeatureClass, dropFields)
Используйте инструмент Удалить поле (Delete Field), чтобы удалить все необходимые поля из класса пространственных объектов или таблицы.
# Name: DeleteFields_clearfields.py
# Description: Delete unrequired fields from a feature class or tble.
# Import system modules
import arcpy
from arcpy import env
try:
# Get user-supplied input and output arguments
inTable = arcpy.GetParameterAsText(0)
updatedTable = arcpy.GetParameterAsText(1)
# Describe the input (need to test the dataset and data types)
desc = arcpy.Describe(updatedTable)
# Make a copy of the input (so we can mantain the original as is)
if desc.datasetType == "FeatureClass":
arcpy.CopyFeatures_management(inTable, updatedTable)
else:
arcpy.CopyRows_management(inTable, updatedTable)
# Use ListFields to get a list of field objects
fieldObjList = arcpy.ListFields(updatedTable)
# Create an empty list that will be populated with field names
fieldNameList = []
# For each field in the object list, add the field name to the
# name list. If the field is required, exclude it, to prevent errors
for field in fieldObjList:
if not field.required:
fieldNameList.append(field.name)
# dBASE tables require a field other than an OID and Shape. If this is
# the case, retain an extra field (the first one in the original list)
if desc.dataType in ["ShapeFile", "DbaseTable"]:
fieldNameList = fieldNameList[1:]
# Execute DeleteField to delete all fields in the field list.
arcpy.DeleteField_management(updatedTable, fieldNameList)
except Exception as e:
# If an error occurred, print line number and error message
import traceback
import sys
tb = sys.exc_info()[2]
print("Line {0}".format(tb.tb_lineno))
print(e.message)