斯潘8
斯潘4
域是定义属性允许值的一组规则。它们用于约束数据值,以确保数据完整性。域在地理数据库中定义为唯一实体,可以应用于包含域定义的地理数据库中任何要素类的任何属性。
考虑到域定义的复杂性,强烈建议使用ARCGIS定义其地理数据库域。然而,如果向您提供的数据没有将域定义应用到地理数据库,而是存在于查找表中,会发生什么情况?下面的练习将演示如何使用包含域代码和值的地理数据库表来使用FME创建编码域定义。
街道要素类(esri geodatabase-文件geodb)
在上图中,我们看到了源街道功能类的可视化。受目标地理数据库域定义约束的值可以在streetcategory属性中看到。
StreetCategory地理数据库表 (ESRI地理数据库-文件地理数据库)
在上图中,我们看到了源StreetCategory地理数据库表的可视化。此表中的值将提供地理数据库域定义的值。需要注意的是,geodatabase表的名称对应于受编码域定义约束的属性。
1。读取源数据
包含我们编码域定义的信息将使用ESRI地理数据库(文件geodb)阅读器从独立的地理数据库表中读取,而街道特征几何图形和数据的基础架构将使用FeatureReader Transformer从街道特征类中读取。这将允许我们执行从geodatabase表中包含的信息创建域定义所需的底层模式操作。在添加FeatureReader变压器时,打开参数对话框,确保设置类似于以下屏幕截图:
此外,一旦将“壮举先锋”添加到画布上,添加一个创建者转换器,并将创建者连接到FeatureReader上的启动器输入端口。创建者确保在工作区运行时触发FeatureReader。
2。表中编码域定义的生成字符串
fme使用特定的语法编写编码域,然后将其应用于地理数据库编码域的基础架构。(
编码域(streettype:integer:1:动脉:2:次要:3:住宅:4:收集器:5:私有:6:非城市:7:其他:99:未知)
要将geodatabase表中包含的数据转换为上述格式,我们需要做一些字符串操作。StringConcatenator用于创建和保存单个代码:值对(即1:动脉)进入一个称为streetCategorykeys的属性。
listBuilder从这些传入的代码创建一个列表:值对,而listconcatenator将这些code:value对合并为单个字符串属性(streetCategoryConcate),其中code:value对由冒号(即1:动脉:2:继发性)。
attributeCreator用于创建一个属性,该属性将保存geodatabase表的fme_feature_类型的值(在本例中,表的名称-StreetCategory)。此已创建属性的值将允许我们稍后在工作流中搜索和更改功能架构的数据类型。亚搏在线
三。将查阅表格合并到功能架构
FeatureMerge Transformer用于将新创建的域定义代码:值列表合并到源街道功能类的架构中。编码域定义将作为FeatureMerge中的供应商数据,而FeatureReader的模式端口将提供请求者输入源。一旦特性合并被添加到画布并连接输入,打开变压器参数对话框,确保参数显示如下:
4。搜索模式
现在,code:value列表已应用于功能模式,我们现在需要告诉模式它将是一个编码域数据类型。第一,我们将使用listsearcher搜索模式列表,以返回受编码域约束的功能属性的索引号。一旦我们有了索引号,我们将能够将该属性的基础本机数据类型从字符串更改为编码域的基础本机数据类型(参见步骤5)。
5。创建编码域和句柄属性
attributeCreator用于更改将受编码域定义约束的功能属性的数据类型。这样做,我们从上面的步骤中获取索引值,并将其应用于编码域功能属性的基础本机数据类型属性(attribute.native.data.type)。将为该数据类型属性分配完整的语法,该语法包含编码域定义-编码的_域(streettype:integer:@value(streetCategoryConcate))。
同时,attributeCreator将用于创建一个排序属性,稍后将在工作流中使用该属性来控制功能和模式到达文件geodatabase writer的顺序。亚搏在线
既然我们已经处理了编码域定义和特征模式操作,我们现在可以处理来自FeatureReader的特性。attributeManager用于将特性的streetCategory属性中包含的属性值映射到新定义的编码域值。这是通过将条件值定义(如下所示)应用于streetCategory属性来实现的。
正如你在上面的屏幕截图中看到的那样,同时,我们将streetCategory属性映射到编码域定义,我们还创建了一个排序属性,并将其值设置为2。
6。动态排序架构/功能和写入域
在前两个步骤中创建的排序属性将用于确保在应用更改的模式后,我们的功能将被写入目标地理数据库。分拣机变压器用于控制这部分工作流程。亚搏在线
最后,设置为动态表定义的ESRI geodatabase(file geodb)编写器将采用修改后的模式,并将其应用于目标geodatabase。应用模式后,然后,将使用应用于streetcategory属性的编码域定义来编写源街道要素类中的要素。
?2019安全亚搏在线软件公司|合法的