В таблицах и классах пространственных объектов баз геоданных хранятся объекты одного типа, с одинаковым поведением и атрибутами. Например, класс объектов с названием WaterMains может хранить данные о водопроводных системах. Все водопроводы имеют сходное поведение и атрибутивные поля ReferenceID, Depth, Material, GroundSurfaceType, Size и PressureRating.
Хотя все объекты в классе или таблицы должны иметь сходное поведение и атрибуты, не все объекты могут использовать одни и те же атрибутивные домены. Например, в магистральной сети диапазон давления в системе может быть от 40 до 100 футов на квадратный дюйм, в то время как в распределительных сетях допустимо давление в пределах от 50 до 75 футов на квадратный дюйм. Для применения этого правила ограничения необходимо использовать атрибутивный домен. Чтобы применить это правило ограничения, нет необходимости создавать отдельные классы объектов для различных сетей водоснабжения. Вы можете создать для них отдельные домены и значения по умолчанию. Это можно осуществить с помощью подтипов.
Когда используются подтипы
При проектировании базы геоданных, вам необходимо принять решение о том, стоит ли использовать отдельные классы объектов, или можно воспользоваться функциональностью подтипов. Если вы хотите разделить объекты по их значениям по умолчанию, атрибутивным доменам, правилам связей и отношений, рекомендуется создавать отдельные подтипы внутри класса объектов или таблицы.
Если вы планируете разделять объекты на основе различного поведения, атрибутов или прав доступа, или того, будут ли объекты мультиверсионными, необходимо создать несколько классов пространственных объектов.
Рабочий процесс для создания подтипов
Для создания подтипов для класса пространственных объектов или таблицы необходимо выполнить следующие шаги:
- Установить поле подтипа (Set Subtype Field): определяет поле во входной таблице или классе пространственных объектов, в которых хранятся коды подтипов.
- Добавить подтип (Add Subtype): добавляет новый подтип к набору подтипов в классе пространственных объектов или в таблице
- Установить подтип по умолчанию (Set Default Subtype): устанавливает уникальное значение подтипа по умолчанию, также именуемое кодом.
В следующем примере продемонстрировано создание подтипов для хранения различных типов объектов в классе объектов, представляющем переходники (фитинги) в водопроводной сети.
Во-первых, необходимо определить поле, которое будет использоваться для хранения информации о подтипах:
import arcpy
arcpy.env.workspace = "C:/data/Montgomery.gdb"
arcpy.SetSubtypeField_management("Water/Fittings", "TYPECODE")
После определения поля подтипов, коды подтипов добавляются в список подтипов:
arcpy.AddSubtype_management ("Water/Fittings","0", "unknown")
arcpy.AddSubtype_management ("Water/Fittings", "1", "bend")
arcpy.AddSubtype_management ("Water/Fittings", "2", "cap")
arcpy.AddSubtype_management ("Water/Fittings", "3", "cross")
arcpy.AddSubtype_management ("Water/Fittings", "4", "coupling")
arcpy.AddSubtype_management ("Water/Fittings", "5", "expansion joint")
arcpy.AddSubtype_management ("Water/Fittings", "6", "offset")
arcpy.AddSubtype_management ("Water/Fittings", "7", "plug")
arcpy.AddSubtype_management ("Water/Fittings", "8", "reducer")
arcpy.AddSubtype_management ("Water/Fittings", "9", "saddle")
arcpy.AddSubtype_management ("Water/Fittings", "10", "sleeve")
arcpy.AddSubtype_management ("Water/Fittings", "11", "tap")
arcpy.AddSubtype_management ("Water/Fittings", "12", "tee")
arcpy.AddSubtype_management ("Water/Fittings", "13", "weld")
arcpy.AddSubtype_management ("Water/Fittings", "14", "riser")
В конце нужно задать код подтипа по умолчанию:
arcpy.SetDefaultSubtype_management ("Water/Fittings", "2")