SPAN8.
SPAN4.
域是一组定义属性允许值的规则。它们用于约束数据值,以确保数据的完整性。在Geodatabase中,域被定义为唯一的实体,可以应用于包含域定义的Geodatabase中任何特征类中的任何属性。
考虑到域定义的复杂性,我们强烈建议使用ArcGIS来定义他们的Geodatabase域。但是,如果提供给您的数据中,域定义没有应用到Geodatabase,而是存在于查找表中,会发生什么情况?下面的练习将演示如何使用包含域代码和值的Geodatabase表来使用FME创建编码域定义。
街道特征类(ESRI Geodatabase - File Geodb)
在上图中,我们看到了源代码Streets特性类的可视化。受目标Geodatabase域定义约束的值可以在StreetCategory属性中看到。
StreetCategory Geodatabase表(ESRI Geodatabase - File Geodb)
在上面的图像中,我们看到源街的可视化了地理数据库表。此表中的值将提供地理数据库域定义的值。值得注意的是,地理数据库表的名称对应于将受到编码域定义的属性。
1.读取源数据
将包含我们的编码域定义的信息将使用ESRI地理数据库(File GeoDB)读取器从独立的地理数据库表读取,而街道功能几何和数据的底层模式使用FeateUrereader变压器将从街道功能类读取。这将允许我们执行从地理数据库表中包含的信息创建域定义所需的底层架构操作。添加FeatureReader变压器时,打开“参数”对话框,并确保设置类似于以下屏幕:
此外,一旦将特派架添加到画布中,添加创建器变压器并将创建者连接到FearyureReader上的启动器输入端口。创建者可确保TembureReader将在运行工作区时触发。
2.构建用于表中的编码域定义的字符串
FME使用特定语法写入编码域,然后将其应用于地理数据库 - Coded_domain的底层架构(
Coded_domain(Streettype:整数:1:动脉:2:二次:3:住宅:4:收藏家:5:私人:6:非直率:7:其他:99:未知)
要将Geodatabase表中包含的数据转换为上面提到的格式,我们需要进行一些字符串操作。StringConcatenator用于创建和保存单独的代码:值对(即1:Arterial)到一个称为StreetCategoryKeys的属性中。
The ListBuilder creates a list from those incoming code:value pairs, while the ListConcatenator merges those code:value pairs into a single string attribute (StreetCategoryConcate) wherein the code:value pairs are separated by a colon (i.e. 1:Arterial:2:Secondary).
attributeCreator用于创建一个属性,该属性将保存地理数据库表的fme_feature_type的值(在这种情况下,表格的名称 - StreetCategory)。此创建属性的值将允许我们在工作流程中稍后搜索和更改要素架构的数据类型。亚搏在线
3.将查找表合并到特性模式
featuremerge转换器用于将新创建的域定义代码:值列表合并到源Street特性类的模式中。编码的域定义将作为featuremerge中的Supplier数据,而来自featureereader的Schema端口将提供Requestor输入源。一旦feature merge已经被添加到画布上,输入连接,打开变压器的参数对话框,并确保参数显示如下:
4.搜索架构
现在代码:value列表已经应用到特性模式中,我们现在需要告诉模式它将是编码的域数据类型。首先,我们将使用ListSearcher搜索模式列表,以返回特性属性的索引号,该属性将服从我们编码的域。一旦我们有了索引号,我们就能够将该属性的底层本机数据类型从String更改为编码域的数据类型(参见步骤5)。
5.创建编码域和处理属性
AttributeCreator用于更改特性属性的数据类型,该特性属性将服从编码的域定义。为此,我们从上面的步骤中获取索引值,并将其应用于编码域特性属性的底层原生数据类型属性(attribute{}.native.data.type)。这个数据类型属性将被分配完整的语法,包括编码域定义- coded_domain(StreetType:integer:@Value(StreetCategoryConcate))。
与此同时,attributecreator将用于创建一个排序属性,该属性将在Workflow中使用,以控制我们的功能和架构到达文件地理数据库编写器的顺序。亚搏在线
既然我们处理了我们的编码域定义和特征模式操作,我们现在可以处理来自FeatureReader的功能。ATTIBUTMANager用于映射我们功能的StreetCategory属性中包含的属性值,以新定义的编码域值。这是通过将条件值定义(如下所示)应用于StreetCategory属性来完成的。
正如您在上面的屏幕截图中所注意到的,在我们将StreetCategory属性映射到编码的域定义的同时,我们还创建了一个Sort属性并将其值设置为2。
6.动态排序模式/特性和写域
在前两步中创建的排序属性将用于确保在应用更改的架构之后,我们的功能将写入目标地理数据库。分拣机变压器用于控制工作流的这一部分。亚搏在线
最后,将设置为动态表定义的ESRI地理数据库(文件GeoDB)编写器将采用修改后的架构并将其应用于目标地理数据库。应用架构后,将使用应用于StreetCategory属性的编码域定义写入源街头要素类的功能。
©2019 S亚搏在线afe Software Inc |合法的