I am trying to upgrade my application from FME2009 to FME2015. The problem I'm running into is it seems like the parameters I set are not being used in the actual transformer. Instead, the default values from the transformer definition are being used. Specifically, the source and destination coordinate system names are not being applied.
Setting the parameters in this way worked perfectly when my application was linked against FME2009.
Code excerpt:
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);
When I execute this code I can see from the logs that the default values are being used.
Log excerpt:
Coordinate system named TOM_PRICE_MINE_MGA does not exist. BADNEWS: No definition was found for coordinate system `TOM_PRICE_MINE_MGA(TOM_PRICE_MINE_MGA)' (crdsysmn.cpp:1074) Coordinate system named TOM_PRICE_MINE_MGA does not exist. BADNEWS: Unknown coordinate system 'TOM_PRICE_MINE_MGA' specified - aborting (crdsysmn.cpp:1628) Unknown coordinate system 'TOM_PRICE_MINE_MGA' specified - aborting BADNEWS: Reprojector: Could not create reprojection engine (fmereprojector.cpp:404) Reprojector: Could not create reprojection engine
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
Edit 1
I found the IFMEOTransformer.Serialize method and ran it after I instantiated the transformer.
My directive: 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() output: 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,
Attempting to follow this format (without knowing anything about it), I changed my directive to: 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,
New IFMEOTransformer.Serialize() output: 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,