Las clases de entidad y las tablas de geodatabase almacenan objetos del mismo tipo; esto es, objetos que tienen el mismo comportamiento y los mismos atributos. Por ejemplo, una clase de entidad llamada WaterMains puede almacenar redes da agua a presión. Todas las redes de agua tienen el mismo comportamiento y tienen los atributos Id. de referencia, Profundidad, Material, GroundSurfaceType, Tamaño y PressureRating.
A pesar de que todos los objetos de una tabla o clase de entidad deben tener el mismo comportamiento y los mismos atributos, no todos los objetos compartirán los mismos dominios de atributo. Por ejemplo, puede ser verdad en una red de agua que sólo las redes de transmisión de agua pueden tener una presión de entre 40 y 100 psi, mientras que las redes de distribución de agua pueden tener una presión de entre 50 y 75 psi. Utilice un domino de atributo para reforzar esta restricción. Para implementar este tipo de regla de validación, no tiene que crear clases de entidad separadas para la transmisión y distribución de redes de agua, pero puede que quiera diferenciar estos tipos de redes de agua entre sí para establecer un conjunto de dominios separado y valores predeterminados. Puede hacerlo utilizando subtipos.
Cuándo utilizar los subtipos
Cuando se debe decidir dónde es apropiado utilizar subtipos y dónde se necesitan clases de entidad adicionales, surge un problema de diseño de geodatabase importante. Cuando los objetos se distinguen por sus valores, dominios de atributo, reglas de conectividad y reglas de relación predeterminados, se recomienda crear subtipos separados para una tabla o clase de entidad simple.
Cuando los objetos se distinguen basándose en comportamientos, atributos o privilegios de acceso diferentes, o en si los objetos son multiversionados, debe crear clases de entidad múltiples.
Flujo de trabajo de subtipo
Los siguientes pasos se utilizan para crear subtipos para una tabla o clase de entidad:
- Establecer campo de subtipo: Define el campo en la clase de entidad o tabla de entrada que almacena los códigos de subtipo
- Agregar subtipo: Agrega un subtipo al conjunto de subtipos en una tabla o clase de entidad
- Establecer subtipo predeterminado: Establece un valor predeterminado único para el subtipo, también llamado código.
En el siguiente ejemplo, los subtipos se crean para representar distintos tipos de ajuste dentro de la clase de entidad de ajustes de las tuberías agua.
El primer paso es definir el campo utilizado para almacenar la información de subtipo:
import arcpy arcpy.env.workspace = "C:/data/Montgomery.gdb" arcpy.SetSubtypeField_management("Water/Fittings", "TYPECODE")
Después de que se define el campo de subtipo, los códigos de subtipo se agregan a la lista de subtipos:
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")
El paso final es establecer el código de subtipo predeterminado:
arcpy.SetDefaultSubtype_management ("Water/Fittings", "2")