动态工作流:目标格式源自格式要素

原文发布时间:2017/9/6  16:37:18

注意:如果你使用FME2015.1或更低版本,请查阅:

https://knowledge.safe.com/articles/21787/dynamic-workflows-20150-and-below-destination-sche.html

目标格式源自格式要素

    这类工作流利用列表属性创建属性格式。列表属性是FME在单个属性中允许多个值的一种方式。动态模式下的写模块会检查每个要素类的第一个要素,判断其是否存在特定的列表属性。如果这个列表在第一个要素处被发现,那么,它会为写模块生成相应的格式。

    在本文中,我们创建了一个处理城市公园信息的工作空间。目标是,把公园的数据转换成拥有新格式的MapInfo tab文件。这个新的格式只包含公园名的信息,而其他的内容将被移除。如果使用了一个标准的动态工作空间,那么输出的格式会借鉴输入的数据集,这不是本例中所需要的。

创建列表

    从FME2015.1起,我们可以从FeatureReader的“Schema”端口获取格式列表。另外,转换器AttributePivoter,SchemaSetter以及读模块“Schema(any format)”都可以创建格式列表。

    在这个简化的例子中,列表将由创建属性的转换器AttributeCreator和PythonCaller生成。

  

列表的元素格式如下:

列表名:attribute{}

列表的每个元素有两个成分:

l name:要包含在格式中的属性名称

l fme_data_type:属性的数据类型

比如:attribute{}.name和attribute{}.fme_data_type.

    有效的FME数据类型包括:

  

使用特定格式类型的格式

    如果你希望为属性使用特定格式的数据类型(也就是,非FME数据类型),再上述两个属性之外,还要再包含两个属性:

  

比如:

 

  

    该结果是一个新的Geodatabase要素类,它包含一个“guid”类型的属性“myAttribute”。

添加几何:如果你想为每个输出的要素类(Shape,Geodatabase)指定特定的几何,那么,你需要定义该几何类型。可按如下方式完成:

  

比如:

  

可以为Geodatabase定义点类型的要素类。

分布说明

1、将Reader添加到工作空间

l 读模块格式:Autodesk MapGuide Enterprise SDF

l 源文件:<Tutorial Download>\resources\InteropolisDatabase.sdf

l 选择要素类:Default.CityParks

2、定义新的格式

    利用AttributeCreator,定义新的格式。

  

  

3、设置模式映射

    添加AttributeManager改变当前属性名,以匹配数据库格式。

  

4、添加动态写模块

添加写模块:

l 写模块格式:MapInfo TAB(MITAB)

l 数据集:<Tutorial Download>\output

l 格式定义:Dynamic(Advanced)

    一旦写模块被添加到工作空间,将它连接到AttributeManager,并打开参数设置页面。将Schema Sources设置成"Schema From Schema Feature":

  

运行工作空间,查看结果。

高级示例1:使用FeatureReader

    在接下来的示例中,在用FeatureReader将数据读入工作空间时,执行空间查询。输出的格式通过生成列表属性来实现,生成列表过程可直接在FeatureReader内实现。因为属性相关的信息在工作空间运行前是未知的,因此,列表属性是自定义输出格式的最好方式。从FME 2015.1开始,FeatureReader就包含一个实现该目的的模式输出端口。

    查看完整示例:Extracting data within a clipping polygon

高级示例2:修改格式要素

    这篇文章深入解析了格式要素以及如何在工作空间中编辑它。Modifying the Schema Feature

记录

    如果在使用上述技术时,报错“Geometry Not Specified”;尝试设置下列属性:fme_geometry{0} = <fme_type>。这适用于shape文件以及一些其他的格式。了解更多<fme_type>内容,请看:FME Geometry Types

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值