span8
span4
域是一组定义允许值用于属性规则。它们被用来约束数据值,以保证数据的完整性。一个域可以在地理数据库中被定义为一种独特的实体,并且可以被应用到包含该域定义地理数据库内的任何要素类的任何属性。
鉴于域定义的复杂性,强烈推荐一个使用ArcGIS来定义自己的地理数据库域。但是,如果你提供的域中定义还没有被应用到地理数据库,并在查找表中,而不是存在的数据会发生什么?下面的练习将演示如何使用地理数据库表包含域代码和值创建使用FME编码域定义。
街道要素类(ESRI地理数据库-文件Geodb)
另外,在上述图像中,我们看到源街道特征类的可视化。将受到目标地理数据库域定义的值可以在StreetCategory属性中可以看出。
街道类别地理数据库表(ESRI地理数据库-Geodb文件)
另外,在上述图像中,我们看到源StreetCategory地理数据库表的可视化。此表中的值将为地理数据库域定义的值。需要注意的是重要的地理数据库表中对应于将受到编码域定义属性的名称。
一读取源数据
信息将包含我们的编码域定义将使用由ESRI的地理数据库(文件地理数据库),读卡器,而街道的特征几何形状和数据的基础架构将从街道要素类使用FeatureReader变压器读一个独立的地理数据库表中读取。这将允许我们做的创建从包含在地理数据库表中的信息域定义所需的基础架构操作。当添加FeatureReader变压器,打开参数对话,并确保设置类似于下面的屏幕截图:
此外,一旦FeatureReader已添加到画布上,增加一个变压器的创造者和创造者连接到在FeatureReader发起者输入端口。造物主确保运行工作区时FeatureReader将触发。
二从表中为编码域定义生成字符串
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的参数对话框,确保参数显示如下:
四搜索架构
既然code:value列表已经应用到了特性模式,我们现在需要告诉模式它将是一个编码域数据类型。首先,我们将使用ListSearcher搜索模式列表,以返回将受编码域约束的feature属性的索引号。一旦我们有了索引号,我们就可以将该属性的底层本地数据类型从字符串更改为编码域的类型(请参见步骤5)。
五创建编码域和句柄属性
AttributeCreator用于更改将受编码域定义约束的特征属性的数据类型。为此,我们从上面的步骤中获取索引值,并将其应用于编码域功能属性的基础本机数据类型属性(属性{}.native.data.type)。此数据类型属性将被分配完整的语法,该语法包含编码域定义-编码域(StreetType:integer:@Value(streettcategorycontate))。
同时,AttributeCreator将用于创建一个Sort属性,稍后将在工作流中使用该属性来控制特性和架构到达Geodatabase writer文件的顺序。亚搏在线
现在我们已经处理了编码域定义和特性模式操作,现在可以处理来自FeatureReader的特性。AttibuteManager用于将包含在功能的streetcontegory属性中的属性值映射到新定义的编码域值。这是通过将条件值定义(如下所示)应用于StreetCategory属性来完成的。
正如您在上面的屏幕截图中可能注意到的,在我们将StreetCategory属性映射到我们的编码域定义的同时,我们还创建了Sort属性并将其值设置为2。
六动态排序架构/功能和写入域
在前两个步骤中创建的排序属性将用于确保在应用更改的架构之后,我们的功能将写入目标Geodatabase。分拣机变压器用于控制工作流程的这一部分。亚搏在线
最后,设置为动态表定义的Esri Geodatabase(File Geodb)writer将采用修改后的模式并将其应用于目标Geodatabase。应用模式后,将使用应用于StreetCategory属性的编码域定义编写源Streets要素类中的要素。
©2019安全亚搏在线软件公司|法律