Краткая информация
Создает класс атрибутивных отношений из таблицы-источника, таблицы-адресата и таблицы отношения.
Использование
Этот инструмент создает таблицу в базе данных, содержащую выбранные поля атрибутов из таблицы отношений. Эти поля используются для хранения атрибутов отношения, которые не относятся ни к исходному классу, ни к классу назначения. Например, в базе данных участков у вас может быть класс отношений между участками и владельцами, где владельцы «владеют» участками, а участки «принадлежат» владельцам. Доля во владении может храниться как атрибут этого отношения.
Простые или равноправные отношения – это отношения между двумя или более объектами в базе данных, которые существует независимо друг от друга. Например, в железнодорожной сети, могут быть железнодорожные стрелки, имеющие один или более связанный с ними семафор. Однако, железнодорожная стрелка может существовать без семафора, а семафоры могут существовать в железнодорожной сети и там, где нет стрелок. Простые отношения могут иметь кардинальность «один к одному», «один ко многим» или «многие ко многим».
Сложные отношения – это отношения, в которых существование одного объекта контролирует существования связанных с ним объектов. Например, электрические столбы несут на себе трансформаторы, а трансформаторы установлены на столбах. После удаления столба, сообщение об удалении распространяется и на связанные с ним трансформаторы, которые удаляются из класса трансформаторов. Сложные отношения всегда «один ко многим».
Описания прямого и обратного отношения поясняют отношение, связывающее один объект с другим. Описание прямого отношения описывает отношение класса-источника к классу-адресату. В примере столб-трансформатор прямой подписью пути может быть: «Столбы поддерживают трансформаторы». Описание обратного отношения поясняет отношение класса-адресата к классу-источнику. В примере со столбом и трансформатором описание обратного отношения могло бы быть таким: «Трансформаторы устанавливаются на столбах».
Классы отношений также могут быть созданы в ArcCatalog. В контекстном меню базы геоданных выберите элемент Создать (New) > Класс отношений (Relationship Class).
У параметра Атрибутивные поля (Attribute Fields) кнопка Добавить поле (Add Field) используется только в ModelBuilder. В ModelBuilder, если предыдущий инструмент не был запущен или его производные данные не существуют, параметр Атрибутивные поля (Attribute Fields) не заполняются именами полей. Кнопка Добавить поле (Add Field) позволяет добавлять нужные поля, так что вы можете установить все параметры в диалоговом окне Таблица в класс отношений (Table To Relationship Class) и продолжить построение модели.
Синтаксис
TableToRelationshipClass_management (origin_table, destination_table, out_relationship_class, relationship_type, forward_label, backward_label, message_direction, cardinality, relationship_table, attribute_fields, origin_primary_key, origin_foreign_key, destination_primary_key, destination_foreign_key)
Параметр | Объяснение | Тип данных |
origin_table | Таблица или класс пространственных объектов, который будет связан с таблицей-адресатом. | Table View |
destination_table | Таблица или класс пространственных объектов, который будет связан с таблицей-источником. | Table View |
out_relationship_class | Создаваемый класс отношений. | Relationship Class |
relationship_type | Тип отношения, которое должно быть установлено между источником и адресатом.
| String |
forward_label | Подпись, определяющая отношение источника к адресату. | String |
backward_label | Подпись, определяющая отношение адресата к источнику. | String |
message_direction | Направление сообщений, которые будут пересылаться между объектами, участвующими в отношении. Например, в отношении между столбами и трансформаторами, при удалении столба, он отправляет сообщение связанным с ним объектам трансформатора, информируя их о его удалении.
| String |
cardinality | Кардинальность отношения между источником и адресатом.
| String |
relationship_table | Таблица, содержащая атрибуты, которые будут добавлены к классу отношений. | Table View |
attribute_fields [attribute_fields,...] | Поля, содержащие значения, которые будут добавлены к классу отношений. | Field |
origin_primary_key | Поле в таблице-источнике, которое будет использоваться для создания отношения. Обычно это поле идентификатора объектов. | String |
origin_foreign_key | Имя поля, содержащего внешний ключ в таблице отношения, которое ссылается на поле первичного ключа в классе-источнике. | String |
destination_primary_key | Поле в таблице-адресате, которое будет использоваться для создания отношения. Обычно это поле идентификатора объектов. | String |
destination_foreign_key | Поле в таблице отношений, которое соответствует полю Первичный ключ (Primary Key) таблицы-адресата. | String |
Пример кода
TableToRelationshipClass Пример (окно Python)
На следующем скрипте окна Python демонстрируется, как использовать инструмент Таблица в класс отношений (Table To Relationship Class).
import arcpy
arcpy.env.workspace = "C:/data/Montgomery.gdb"
arcpy.TableToRelationshipClass_management("owners", "Parcels", "ownersParcels_RelClass",
"SIMPLE", "Owns", "Is Owned By", "BACKWARD",
"MANY_TO_MANY", "owners", ["OWNER_PERCENT", "DEED_DATE"],
"OBJECTID", "owner_id", "OBJECTID", "parcel_id")
TableToRelationshipClass Пример (автономный скрипт)
Создание класса отношений с атрибутами между классом объектов участков и таблицей с информацией о владельцах.
# Name: TableToRelationshipClass.py
# Description: Create an attributed relationship class between parcels
# feature class and table with owner information
# Author: ESRI
# import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Copy owners.dat to file gdb table, since both tables to be related
# must be in the same database
ownerDat = "owners.dat"
ownerTbl = "Montgomery.gdb/owners"
arcpy.CopyRows_management(ownerDat, ownerTbl)
# Create attributed relationship class between 'parcel' parcel layer
# and 'owner' table with additional parcel owner information
parcel = "Montgomery.gdb/Parcels"
relClass = "Montgomery.gdb/parcelowners_RelClass"
forLabel = "Owns"
backLabel = "Is Owned By"
attributeFields = ["OWNER_PERCENT", "DEED_DATE"]
originPK = "OBJECTID"
originFK = "owner_ID"
destinationPK = "OBJECTID"
destinationFK = "parcel_ID"
arcpy.TableToRelationshipClass_management(ownerTbl, parcel, relClass, "SIMPLE",
forLabel, backLabel, "BACKWARD", "MANY_TO_MANY",
ownerTbl, attributeFields, originPK, originFK,
destinationPK, destinationFK)