域是一组规则,用于定义属性的允许值。它们用于约束数据值以确保数据完整性。属性域在地理数据库中定义为唯一实体,可应用于包含属性域定义的地理数据库中任何要素类中的任何属性。

有两种类型的地理数据库属性域(编码属性域和范围属性域),FME支持这两种类型。编码属性域本质上是多个有效值的列表,而范围属性域是单个允许的数值范围。通俗形容就是属性的取值范围,常见情况属性约束中取值字典表。

以道路类型为例:常见道路类型为下表6种。(字典表与样例数据均来源于网络,仅用于交流学习使用)

序号

代码

道路类型

释义

1

G

国道

指具有全国性政治、经济意义的主要干线公路

2

S

省道

又称省级干线公路。在省公路网中,具有全省性的政治、经济、国防意义,并经省、市

3

X

县道

是指具有全县〔县级市〕政治、经济意义,连接县城和县内主要乡〔镇〕、等主要地

4

Y

乡道

意思为乡村道路,一般宽度大约在3M之间,是乡村通往各地点的保障

5

Z

专用公路

是由工矿、农林等部门投资修建,主要为该部门使用的公路,分别称为厂矿公路、林区

6

D

城市道路

通达城市的各地区,供城市内交通运输及行人使用,便于居民生活、工作及文化娱乐活

表1:道路类型字典表

01

在样例数据库中,选择道路数据右键,选择数据库属性,查看数据库的属性域。如下图所示:

图1:属性域截图

02

在对该数据库的属性进行修改时,编辑存在属性域的字段,会出现类似下拉框选项的形式,如下图样例属性所示。编辑属性“DLLX”时,出现类似下拉框选项(国道、省道、县道、乡道、专用公路、城市道路),即为该属性的编码值范围。

图2:编辑属性编码值范围截图

01

通过FME默认设置对该数据进行读取。

图3:默认设置读取GDB数据设置截图

选取其中一条数据,进行查看属性,属性“DLLX”显示的仍然是代码,其实际代码的属性并未显示。因此采用默认方式读取属性域,是无法读取到的。

图4:默认设置读取数据属性截图

02

勾选“Resolve Domains”(解析属性域)对该数据进行读取。

图5:勾选“Resolve Domains”(解析属性域)

对该数据进行读取设置截图

选取其中一条数据,进行查看属性。属性“DLLX”显示的仍然是代码,但在属性中多了一个“DLLX_resolved”属性,并且其属性值是该数据属性“DLLX”对应的实际属性值。

图6:勾选“Resolve Domains”后读取出来的属性截图

因此,当我们需要读取数据的属性域及其编码值时,只需要将读取设置中的“Resolve Domains”(解析属性域)进行勾选即可读取到数据属性域的实际值和编码值。

(一)使用现有属性域

已经有属性域的数据库,我们在对数据进行读取处理后,将原有数据库的属性域进行保留继承。

仅对示例数据进行属性替换等操作。

图7:数据处理模板截图

01

采用已有属性域的数据库为模板文件进行输出。

图8:采用以已有属性域的数据库为模板文件进行输出设置截图

02

采用以已有属性域的数据库的XML工作空间文档为模板文件。

图9:采用以已有属性域的数据库XML工作空间文档为模板文件输出设置截图

(二)创建新的属性域

在实际数据生产中原数据格式,如DWG,SHP等数据格式不存在属性域,那么是否需要如上文所述,先在GIS中设置好属性域,再进行调用呢,其实不需要,可以在FME中直接创建属性域。

以SHP格式的样例数据为例,将SHP数据中的字段“dllx”字段按照标准进行规范化,同时创建属性域。

图10:样例SHP数据截图

01

按照上文中的字典表,通过转换器“AttributeValueMapper”对数据进行标准化。

图11:将样例SHP数据标准化转换器设置截图

02

添加GDB写模块。

03

修改需要创建属性域的字段属性类型为“coded_domain”。

图12:选取对应属性修改字段属性截图

图13:选取对应属性修改字段属性后截图

04

点击“Edit”(编辑),进入属性域创建界面,并根据上文中字典表进行创建属性域,如下图所示。

图14:创建属性域页面原始和填写属性域后截图

05

数据写出,查看数据属性域。

图15:创建属性域后查看输出的GDB属性域

图16:创建属性域后输出GDB属性域修改属性截图

FME支持500种以上数据格式及500种以上的数据处理转换器,可以实现各种生产过程中的需求。欢迎大家共同努力,继续研究、学习FME!