span8
span4
域是一组定义允许值用于属性规则。它们被用来约束数据值,以保证数据的完整性。一个域可以在地理数据库中被定义为一种独特的实体,并且可以被应用到包含该域定义地理数据库内的任何要素类的任何属性。
鉴于域定义的复杂性,强烈推荐一个使用ArcGIS来定义自己的地理数据库域。但是,如果你提供的域中定义还没有被应用到地理数据库,并在查找表中,而不是存在的数据会发生什么?下面的练习将演示如何使用地理数据库表包含域代码和值创建使用FME编码域定义。
街道要素类(ESRI地理数据库 - 文件地理数据库)
另外,在上述图像中,我们看到源街道特征类的可视化。将受到目标地理数据库域定义的值可以在StreetCategory属性中可以看出。
StreetCategory地理数据库表(ESRI地理数据库 - 文件地理数据库)
在上面的图像中,我们看到了源StreetCategory地理数据库表的可视化。该表中的值将提供Geodatabase域定义的值。重要的是要注意Geodatabase表的名称对应于将受编码域定义支配的属性。
1.阅读源数据
构成我们编码域定义的信息将使用Esri Geodatabase (File Geodb)阅读器从一个独立的Geodatabase表中读取,而街道特征几何和数据的基础模式将使用FeatureReader转换器从街道特征类中读取。这将允许我们执行从Geodatabase表中包含的信息创建域定义所需的底层模式操作。在添加FeatureReader转换器时,打开参数对话框,确保设置类似以下截图:
此外,一旦FeatureReader被添加到画布上,就添加一个Creator转换器,并将Creator连接到FeatureReader上的Initiator输入端口。创建者确保FeatureReader将在工作空间运行时触发。
2.从表中为编码域定义构建字符串
FME使用特定的语法编写编码域,然后应用到地理数据库的底层模式coded_domain(
coded_domain (StreetType:整数:1:动脉:2:二次:3:住宅:4:收集器:5:私人:6:NonCity: 7:: 99:未知)
要获得包含在地理数据库表到格式的数据上面提到的,我们需要做一些字符串操作。所述StringConcatenator用于创建和保存个人代码:值对(即,1:动脉)进入的属性称为StreetCategoryKeys。
ListBuilder根据这些传入的代码:value对创建一个列表,而ListConcatenator则将这些代码:value对合并为单个字符串属性(StreetCategoryConcate),其中code:value对用冒号分隔(即1:Arterial:2:Secondary)。
AttributeCreator用于创建一个属性,该属性将保存Geodatabase表的fme_feature_type的值(在本例中是表的名称- StreetCategory)。这个创建的属性的值将允许我们在后面的工作流中搜索和更改特性方案的数据类型。亚搏在线
3.合并查找表来要素模式
该FeatureMerger变压器用于新创建的域定义代码合并:值列表到源街要素类的架构。的经编码的域定义将充当在FeatureMerger供应商的数据,同时从所述FeatureReader架构端口将提供请求者输入源。一旦FeatureMerger已添加到画布上,并输入连接后,打开变压器的参数对话,确保参数如下所示:
4.搜索模式
既然代码:值列表已经被应用到该功能模式,我们需要现在就告诉架构,这将是一个编码域数据类型。首先,我们将以此来回报,这将是受我们的编码域的特征属性的索引号使用ListSearcher通过模式列表中进行搜索。一旦我们有了索引号,我们将能够改变从字符串到一个编码区的该属性的基本本地数据类型(见步骤5)。
5.创建编码域和处理属性
一个AttributeCreator用于改变将受到编码域定义的特征属性的数据类型。为了这样做,我们从上面的步骤中的指标值,并将其应用到底层本地数据类型属性(属性{}。native.data.type),用于把编码域特征属性。这种数据类型属性将被分配的全部完成的语法,其包括编码域定义 - coded_domain(StreetType:整数:@Value(StreetCategoryConcate))。
同时,AttributeCreator将用于创建Sort属性,该属性将在稍后的工作流中使用,以控制特性和模式到达文件Geodatabase写入器的顺序。亚搏在线
现在我们已经处理了编码域定义和特性模式操作,现在我们可以处理来自FeatureReader的特性。AttibuteManager用于将我们的特性的StreetCategory属性中包含的属性值映射到新定义的编码域值。这是通过对StreetCategory属性应用一个条件值定义(如下所示)来实现的。
正如你可以在屏幕上看到上面拍摄的,在同一时间,我们映射StreetCategory属性我们编码域定义,我们也创造了排序属性,并将其值设置为2。
6.排序模式/功能和写入的域动态
在前面两个步骤中创建的排序属性将用于确保已应用在改变模式后,我们的功能将被写入到目标地理数据库。分类器变压器被用于控制工作流的这个部分。亚搏在线
最后,设置为动态表定义的Esri Geodatabase(文件Geodb)编写器将接受修改后的模式,并将其应用到目标Geodatabase。在应用架构之后,源街道特性类的特性将使用应用于StreetCategory属性的编码域定义来编写。
©2019 S亚搏在线afe Software Inc |法律