Las tablas de la geodatabase y las clases de entidades almacenan objetos del mismo tipo, es decir, objetos que tienen el mismo comportamiento y los mismos atributos. Por ejemplo, una clase de entidad denominada WaterMains puede almacenar tuberías de agua a presión. Todas las conducciones de agua tienen el mismo comportamiento y cuentan con los atributos ReferenceID, Depth, Material, GroundSurfaceType, Size y PressureRating.
Aunque todos los objetos de una clase o tabla de entidad deben tener el mismo comportamiento y los mismos atributos, no todos los objetos compartirán los mismos dominios de atributos. Por ejemplo, en una red de agua puede darse el caso de que solo las conducciones de agua de transmisión puedan tener una presión de entre 40 y 100 psi, mientras que las conducciones de agua de distribución pueden tener una presión de entre 50 y 75 psi. En este caso, se utilizaría un atributo de dominio para imponer esta restricción. Para aplicar este tipo de regla de validación, no es necesario crear clases de entidades separadas para las tuberías de agua de transmisión y distribución, pero sería conveniente distinguir estos tipos de tuberías de agua entre sí para establecer un conjunto separado de dominios y valores predeterminados. Puede hacerlo mediante subtipos.
Cuándo utilizar subtipos
Una cuestión importante a la hora de diseñar una geodatabase es decidir dónde es apropiado utilizar subtipos y dónde se necesitan clases de entidades adicionales. Cuando se distinguen objetos por sus valores predeterminados, dominios de atributos, reglas de conectividad y reglas de relación, se recomienda crear subtipos separados para una misma clase de entidad o tabla.
Cuando distinga objetos en función de diferentes comportamientos, atributos o privilegios de acceso, o de si los objetos tienen varias versiones, deberá crear varias clases de entidades.
Flujo de trabajo de subtipo
Los siguientes pasos se utilizan para crear subtipos para una clase de entidad o tabla:
- Establecer campo de subtipo: establece el campo en la tabla o clase de entidad de entrada que almacena los códigos de subtipo.
- Agregar subtipo: agrega un nuevo subtipo al conjunto de subtipos de una clase de entidad o tabla.
- Establecer subtipo predeterminado: establece el valor predeterminado único de un subtipo, también denominado código.
En el siguiente ejemplo, se crean subtipos para representar diferentes tipos de accesorios dentro de una clase de entidad de accesorios de tuberías de agua.
El primer paso consiste en definir el campo utilizado para almacenar la información del subtipo:
import arcpy
arcpy.env.workspace = "C:/data/Montgomery.gdb"
arcpy.management.SetSubtypeField("Water/Fittings", "TYPECODE")
Una vez definido el campo de subtipo, los códigos de subtipo se agregan a la lista de subtipos:
arcpy.management.AddSubtype("Water/Fittings", "0", "unknown")
arcpy.management.AddSubtype("Water/Fittings", "1", "bend")
arcpy.management.AddSubtype("Water/Fittings", "2", "cap")
arcpy.management.AddSubtype("Water/Fittings", "3", "cross")
arcpy.management.AddSubtype("Water/Fittings", "4", "coupling")
arcpy.management.AddSubtype("Water/Fittings", "5", "expansion joint")
arcpy.management.AddSubtype("Water/Fittings", "6", "offset")
arcpy.management.AddSubtype("Water/Fittings", "7", "plug")
arcpy.management.AddSubtype("Water/Fittings", "8", "reducer")
arcpy.management.AddSubtype("Water/Fittings", "9", "saddle")
arcpy.management.AddSubtype("Water/Fittings", "10", "sleeve")
arcpy.management.AddSubtype("Water/Fittings", "11", "tap")
arcpy.management.AddSubtype("Water/Fittings", "12", "tee")
arcpy.management.AddSubtype("Water/Fittings", "13", "weld")
arcpy.management.AddSubtype("Water/Fittings", "14", "riser")
El último paso consiste en establecer el código de subtipo predeterminado:
arcpy.management.SetDefaultSubtype("Water/Fittings", "2")