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