Назначить домен полю (Assign Domain To Field) (Управление данными)
Резюме
Устанавливает домен для конкретного поля класса объектов или для поля подтипа. Если подтипы не определены, домен будет присвоен указанному полю.
Использование
-
Управление доменами включает следующие шаги:
- Создать домен с помощью инструмента Создать домен (Create Domain).
- Добавить значения или установить диапазон значений для домена с помощью инструмента Добавить кодированное значение домену (Add Coded Value to Domain) или инструмента Установить значение для интервального домена (Set Value For Range Domain).
- Связать домен с классом пространственных объектов, используя этот инструмент.
-
Если атрибутивный домен связан с таблицей или классом пространственных объектов, в базе данных создается правило проверки атрибутов. Это правило проверки атрибутов описывает и ограничивает корректные значения для поля соответствующего типа.
-
Один атрибутивный домен может быть связан с несколькими полями в одной таблице, классе пространственных объектов или подтипе, а также в нескольких таблицах и классах пространственных объектов.
-
Для определения параметра Входная таблица (Input Table)можно использовать слои пространственных объектов или представления таблиц.
-
Доменами рабочих областей можно также управлять в ArcCatalog или в окне Каталога. Домены можно создать и изменить на вкладке Домены (Domains) диалогового окна Свойства базы данных (Database Properties).
-
В параметре Подтип (Subtype) кнопка Добавить значение (Add Value) используется только в ModelBuilder. В ModelBuilder, если предыдущий инструмент не был запущен или не существует его производных данных, параметр Подтип может не быть заполнен значениями. Кнопка Добавить значение (Add Value) позволяет добавлять нужные значения, таким образом вы можете завершить диалог Назначить домен полю (Assign Domain To Field) и продолжить построение модели.
Синтаксис
Параметр | Объяснение | Тип данных |
in_table |
Имя таблицы или класса пространственных объектов, содержащего поле, которому будет назначен домен. | Table View |
field_name |
Имя поля, которому будет назначен домен. | Field |
domain_name |
Имя домена базы геоданных, который будет назначен выбранному полю. Доступные домены подгружаются автоматически. | String |
subtype_code [subtype_code,...] (дополнительно) | Код подтипа, которому будет назначен домен. | String |
Пример кода
Пример скрипта Python для выполнения функции Назначить домен полю (Assign Domain To Field) с запуском из окна Python в ArcGIS.
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.AssignDomainToField_management("montgomery.gdb/Landbase/Parcels", "ZONING_S", "ZoningFields", "1: government")
Пример скрипта Python для рабочего процесса создания атрибутивного домена и добавления в него значений.Функция Назначить домен полю (Assign Domain To Field).
# Name: MakeDomain.py
# Description: Create an attribute domain to constrain pipe material values
# Author: ESRI
#Import system modules
import arcpy
from arcpy import env
try:
# Set the workspace (to avoid having to type in the full path to the data every time)
env.workspace = "C:/data"
# Set local parameters
domName = "Material4"
gdb = "montgomery.gdb"
inFeatures = "Montgomery.gdb/Water/Distribmains"
inField = "Material"
# Process: Create the coded value domain
arcpy.CreateDomain_management("montgomery.gdb", domName, "Valid pipe materials", "TEXT", "CODED")
#Store all the domain values in a dictionary with the domain code as the "key" and the
#domain description as the "value" (domDict[code])
domDict = {"CI":"Cast iron", "DI": "Ductile iron", "PVC": "PVC", \
"ACP": "Asbestos concrete", "COP": "Copper"}
# Process: Add valid material types to the domain
#use a for loop to cycle through all the domain codes in the dictionary
for code in domDict:
arcpy.AddCodedValueToDomain_management(gdb, domName, code, domDict[code])
# Process: Constrain the material value of distribution mains
arcpy.AssignDomainToField_management(inFeatures, inField, domName)
except Exception, e:
# If an error occurred, print line number and error message
import traceback, sys
tb = sys.exc_info()[2]
print "Line %i" % tb.tb_lineno
print e.message