span8
span4
正如在前一篇文章,任何读取器数据集 - 以任何格式 - 可以用作传出模式的源。要记住的关键是,动态撰写者需要能够以名称找到该工作流程的模式定义。亚搏在线
那么,当您使用一个全新的名称来编写数据时,会发生什么呢?
在这种情况下,您需要在Writer的要素类型中使用一个名为'schema定义名称'的特殊参数。此参数在搜索源以获取匹配架构时将正确名称通知Write的姓名。
以下是您可能遇到的一些原因:
在下面的示例中,为了以数据库的形式提供更新的城市模式,已经设置了一个项目。此数据库是预定义的,但包含泛型特性类型名称。为了创建一个动态工作流并从这个数据库中使用模式写出数据,必亚搏在线须将数据库作为工作空间资源添加到工作空间中。然后,我们将更改输出数据集名称,以包含城市作为前缀(例如Vancouver_BusStops)。
包含我们的架构的SpatiaLite数据库:
1.添加源数据集
打开FME到一个新工作区,从Readers菜单中选择“Add Reader”。
2.添加目标数据集
从写入器菜单中选择“添加写入器”。
3.将数据库添加为资源
使用这个函数将数据库作为Reader资源加载到工作空间中:
添加数据库后,将在Navigator窗口中放置一个条目:
4.创建新表名称属性
我们将把现有的特征类型名称与城市名称“温哥华”连接起来。为此,添加一个StringCocatenator并填写如下细节:
5.模式映射
确保工作区包含正确的映射,以匹配数据库包含的新属性模式。在本例中,AttributeManager转换器用于提供此功能。使用下表创建属性映射。将AttributeManager连接到StringCocatenator,然后将AttributeManager输出端口连接到Dynamic Writer。
输入属性 | 输出属性 |
PRIMARYINDEX | PID |
类 | ROAD_CLASS |
featureID | feedid. |
numberOfLanes | ROAD_LANES |
Routenumber. | ROUTE_NUM |
routeType | ROUTE_TYPE |
类型 | ROAD_TYPE |
的名字 | Park_name. |
name_alt | name_alt. |
stopabbr. | STOP_ABBR |
stopName. | stop_name. |
6.在写入器特性类型中设置模式定义
打开动态写入器功能类型,并将表名设置为包含新名称的属性。在下面的图像中,已输入Spatialite数据库作为“架构源”。使用原始fme_feature_type属性为“架构定义名称”设置,以便编写器可以在Spatialite数据库中找到表名(如果您不这样做,则编写器将查找数据库中的连接名称并无法进行找到正确的功能类型):
7.运行工作空间
运行并检查输出数据集具有正确的模式。
最后的想法
在此阶段,可以在此工作流中添加任何将来的更新,而无需更改现有的工作区布局。亚搏在线此外,可以对FME环境之外的数据库模式进行更改,工作空间可以自动处理新架构。
注意:在上面的示例中,如果数据库模式发生了更改,用户将需要纠正AttributeManager转换器以提供正确的属性映射。然而,在这个场景中使用SchemaMapper转换器将提供一个外部方法来处理任何映射问题,从而使工作空间更改变得不必要。对于复杂的工作流程,这是亚搏在线未来减轻维护问题的完美方法。这将在后面进一步讨论高级技术 - 使用Schemamapper.
完整的SchemaMapper教程可以在这里找到:SchemaPper变压器教程
©2020 S亚搏在线afe Software Inc |法律