原文发布时间:2011-05-17
自定义转换器的应用(五)——仿射变换
——结合探讨发布参数
作者:跑
联系QQ:44295133
第一部分 仿射变换
我们都知道,FME有两个坐标仿射变换转换器——Affiner、3DAffiner,分别应用于2维、3维数据模型
上面的公式中,我们不难看出它分别有6个(A~F)、12个(A~L)系数。
实际使用中,与之对应的是4参数、7参数坐标相似变换,其一般公式如下:
上式,4参数为ΔX、ΔY、α、m ,7参数为 。其中, 表示坐标平移量, 表示坐标轴旋转量,m表示缩放尺度。
比较可知,将求解的参数代入Affiner、3DAffiner,需要计算其对应系数。为使它符合实际使用习惯,可以通过定制自定义转换器的方式,将习惯上使用的4参、7参作为独立参数发布,从而简化输入步骤。
下面谈谈如何发布这些独立参数,以及如何获取这些参数输入值。
第二部分 发布参数
参考FME帮助文件相关章节,我们知道有两种方式来发布参数:一是在参数区新增;一是在转换器区直接发布。它们都在Workbench的导航窗内。
FME在运行一个带发布参数的工作空间前,会提示用户输入参数值(无默认值的情况下),该参数值将被应用于(Apply to…)相关联位置。此外,还可以通过转换器ParameterFetcher获取参数值。当然,这里还有一个技巧,当参数区有若干相同的输入(如指定Joiner文件所在位置)时,可以通过“Setting to a Published Parameter”来简化这些重复输入。
关于发布参数的更详细解释,之前有博文 发布参数(Published Parameter),不再赘述。这里补充一点,可能是大家在使用过程中忽略的小细节。在上一篇博文 自定义转换器的应用(四)——属性传递 中,我们试图将属性传递所需字段发布至参数区,从而实现供、求双方属性字段的可选性传递。在事先并不知道该字段名称的情况下,如何获取该字段及其字段值?以下通过分别将字段值、字段名的发布,实现属性传递。