2

我正在尝试将我的应用程序从 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 的坐标系不存在。坏消息:找不到坐标系“TOM_PRICE_MINE_MGA(TOM_PRICE_MINE_MGA)”的定义 (crdsysmn.cpp:1074) 名为 TOM_PRICE_MINE_MGA 的坐标系不存在。坏消息:指定未知坐标系“TOM_PRICE_MINE_MGA” - 正在中止 (crdsysmn.cpp:1628) 指定未知坐标系“TOM_PRICE_MINE_MGA” - 正在中止坏消息: Reprojector:无法创建重投影引擎 (fmereprojector.cpp:404) Reprojector:无法创建重投影引擎

变压器摘录:

<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,

4

0 回答 0