最近在研究UPDM2019,想着转一套模型到PostGIS中,arcgis当中的属性域Domain不能直接转入到PostGIS,需要手动转换。
ArcGIS属性域Domain
属性域是描述字段类型合法值的规则,提供了一种增强数据完整性的方法。属性域是可接受的特性值的声明。属性域用于约束表或要素类的任意特定属性中的允许值。如果要素类中的要素或表中的非空间对象已被分组为各个子类型,则可将不同的属性域分配给每个子类型。如果一个属性域与某个特性字段相关联,则只有该属性域内的值才对此字段有效。也就是说,此字段不会接受不属于该属性域的值。使用属性域可针对特定字段限制可供选择的值,从而有助于确保数据完整性。
ArcGIS Domain信息在ArcCatalong数据管理可见(任选一要素,右键属性->子类型->属性域),在此处可复制编码值到excel。
上述编码值可直接复制到excel
属性域Domain在数据库中的存储
在测试test.mdb中导入部分空间表,会导入跟这些空间数据表相关的Domain信息。
打开mdb,其中GDB_Items中保存了Domain的信息,Definition字段里面以xml结构保存了字典表值,表里面不只包含Domain信息,还包含关系类等。
下表为GDB_Items
下表为GDB_ItemTypes,从该表可以读取Domain类型对应的UUID,字段使用的属性域对应Coded Value Domain(父类型是Domain),通过UUID对应GDB_Items的Type字段。
下图为查看属性域的xml值,批量转出可通过写程序转换xml中的Domain值,代码实现比较简单,不再贴出。