span8
span4
正如在前一篇文章,任何格式的Reader数据集都可以用作传出模式的源。要记住的关键一点是,动态编写者需要能够通过名称找到要使此工作流工作的模式定义。亚搏在线
那么当你使用一个全新的名字来写数据时会发生什么呢?
在这种情况下,需要在编写器的特性类型中使用一个名为“模式定义名称”的特殊参数。此参数通知编写器在搜索匹配模式的源代码时要使用的正确名称。
以下是你可能会遇到这种情况的几个原因:
在下面的示例中,已经设置了一个项目,以便以数据库的形式提供更新的城市模式。这个数据库是预定义的,但是包含通用的特性类型名称。为了创建一个动态工作流并从这个数据库用模式写出数据,必须将亚搏在线数据库作为一个工作空间资源添加到工作空间中。然后,我们将更改输出数据集的名称,以包括城市作为前缀(i。e Vancouver_BusStops)。
包含我们模式的SpatiaLite数据库:
1.添加源数据集
打开FME到一个新的工作空间,并从“Reader”菜单中选择“Add Reader”。
2.添加目标数据集
从作家菜单选择“添加作家”。
3.将数据库添加为资源
使用这个函数将数据库作为阅读器资源加载到工作空间中:
一旦数据库被添加,一个条目被放置在Navigator窗口:
4.创建新的表名属性
我们将把现有的功能类型名称与城市名称“Vancouver”连接起来。为此,添加一个StringCocatenator,并填写如下详细信息:
5.模式映射
确保工作区包含正确的映射,以匹配数据库所包含的新属性模式。在本例中,AttributeManager转换器用于提供此功能。使用下表创建属性映射。将AttributeManager连接到StringCocatenator,然后将AttributeManager输出端口连接到动态写入器。
输入属性 | 输出属性 |
PRIMARYINDEX | PID |
类 | ROAD_CLASS |
featureID | FEATUREID |
numberOfLanes | ROAD_LANES |
routeNumber | ROUTE_NUM |
routeType | ROUTE_TYPE |
类型 | ROAD_TYPE |
的名字 | PARK_NAME |
name_alt | NAME_ALT |
STOPABBR | STOP_ABBR |
STOPNAME | STOP_NAME |
6.在Writer特性类型中设置模式定义
打开Dynamic Writer特性类型并将表名设置为包含新名称的属性。在下面的图像中,SpatiaLite数据库被输入为“模式源”。使用原始的fme_feature_type属性模式定义名称的设置,让作者可以找到SpatiaLite数据库内的表名(如果你不这样做,作者将寻找连接名称在数据库中,无法找到正确的功能类型):
7.运行工作空间
运行并检查输出数据集是否具有正确的模式。
最终的想法
在这个阶段,任何未来的更新都可以添加到这个工作流中,而不需要改变现有的工作空间布局。亚搏在线此外,可以在FME环境之外更改数据库模式,并且工作区可以自动处理新模式。
注意:在上面的示例中,如果数据库模式确实发生了更改,那么用户需要更正AttributeManager转换器以提供正确的属性映射。然而,在此场景中使用SchemaMapper转换器将提供一个外部方法来处理任何映射问题,从而使工作空间的更改变得不必要。对于复杂的工作流,这是缓亚搏在线解未来维护问题的完美方法。这将在后面讨论高级技术-使用示意图.
完整的示意图可以在这里找到:SchemaMapper变压器教程
©2019安全亚搏在线软件公司法律