在FME2015

时间:2016-04-19 06:50:15

标签: c# fme

我正在尝试将我的应用程序从FME2009升级到FME2015。我遇到的问题似乎是我设置的参数没有在实际的变压器中使用。而是使用变换器定义中的默认值。具体而言,未应用源和目标坐标系名称。

当我的应用程序与FME2009链接时,以这种方式设置参数非常有效。

代码摘录:

StringCollection directives = new StringCollection();
directives.Add(Safe.FMEObjects.Constants.TransformerManager.CreateTransformerDirectives.SerializationString);
parameters = String.Format("\"SOURCE_COORDSYS,{0},XFORMER_NAME,SpineClipTransformer,DEST_COORDSYS,{1}\"", sourceCSys, destCSys);
directives.Add(String.Format("NAME,SpineClipTransformer,VERSION,0,PARAMETER_VALUES,{0},INPUT_FEATURE_TYPES,,INPUT_FILTERS,,INPUT_ATTRS,,OUTPUT_FEATURE_TYPES,,OUTPUT_FUNCTIONS,", parameters));

transformer = fme.TransformerManager().CreateTransformer(directives);

当我执行此代码时,我可以从日志中看到正在使用默认值。

日志摘录:

  

名为TOM_PRICE_MINE_MGA的坐标系不存在。   BADNEWS:没有找到坐标系`TOM_PRICE_MINE_MGA(TOM_PRICE_MINE_MGA)'的定义(crdsysmn.cpp:1074)   名为TOM_PRICE_MINE_MGA的坐标系不存在。   BADNEWS:未知坐标系'TOM_PRICE_MINE_MGA'指定 - 中止(crdsysmn.cpp:1628)   指定了未知坐标系'TOM_PRICE_MINE_MGA' - 中止   BADNEWS:重投影仪:无法创建重投影引擎(fmereprojector.cpp:404)   重新投影仪:无法创建重投影引擎

Transformer excerpt:

<GLOBAL_PARAMETERS>
<GLOBAL_PARAMETER
GUI_LINE="GUI COORDSYS DEST_COORDSYS Destination Coordinate System:"
DEFAULT_VALUE="EPSG:28350"
IS_STAND_ALONE="false"
/>
<GLOBAL_PARAMETER
GUI_LINE="GUI COORDSYS SOURCE_COORDSYS Source Coordinate System:"
DEFAULT_VALUE="TOM_PRICE_MINE_MGA"
IS_STAND_ALONE="false"
/>
</GLOBAL_PARAMETERS>

...

DEFAULT_MACRO DEST_COORDSYS EPSG:28350
DEFAULT_MACRO SOURCE_COORDSYS TOM_PRICE_MINE_MGA

编辑1

我找到IFMEOTransformer.Serialize方法并在实例化变换器后运行它。

我的指示:NAME,SpineClipTransformer,VERSION,0,PARAMETER_VALUES,"SOURCE_COORDSYS,LL-GDA94,XFORMER_NAME,SpineClipTransformer,DEST_COORDSYS,MGA94-50",INPUT_FEATURE_TYPES,,INPUT_FILTERS,,INPUT_ATTRS,,OUTPUT_FEATURE_TYPES,,OUTPUT_FUNCTIONS,

IFMEOTransformer.Serialize()输出:NAME,SpineClipTransformer,VERSION,1,PARAMETER_VALUES,"__COMPOUND_PARAMETERS,,XFORMER_NAME,SpineClipTransformer,TRANSFORMER_GROUP,",INPUT_FEATURE_TYPES,,INPUT_FILTERS,,INPUT_ATTRS,,OUTPUT_FEATURE_TYPES,,OUTPUT_FUNCTIONS,

尝试遵循这种格式(不知道任何事情),我将指令更改为:NAME,SpineClipTransformer,VERSION,1,PARAMETER_VALUES,"__COMPOUND_PARAMETERS,SOURCE_COORDSYS,LL-GDA94,XFORMER_NAME,SpineClipTransformer,DEST_COORDSYS,MGA94-50,TRANSFORMER_GROUP,",INPUT_FEATURE_TYPES,,INPUT_FILTERS,,INPUT_ATTRS,,OUTPUT_FEATURE_TYPES,,OUTPUT_FUNCTIONS,

新的IFMEOTransformer.Serialize()输出:NAME,SpineClipTransformer,VERSION,1,PARAMETER_VALUES,"__COMPOUND_PARAMETERS,SOURCE_COORDSYS,XFORMER_NAME,SpineClipTransformer,TRANSFORMER_GROUP,",INPUT_FEATURE_TYPES,,INPUT_FILTERS,,INPUT_ATTRS,,OUTPUT_FEATURE_TYPES,,OUTPUT_FUNCTIONS,

0 个答案:

没有答案