我正在尝试将我的应用程序从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
我找到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,