Программно установить параметры трансформатора в FME2015

Я пытаюсь обновить свое приложение с 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 не существует. BADNEWS: указана неизвестная система координат 'TOM_PRICE_MINE_MGA' - прерывание (crdsysmn.cpp:1628) указана неизвестная система координат 'TOM_PRICE_MINE_MGA' - отменено BADNEWS: репроектор: не удалось создать механизм репроекции (механизм fmereprojector.cpp:404) Reprojection C Repro: не может быть воспроизведен, репродуктор не воспроизводится

Отрывок трансформатора:

<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 ответов

Другие вопросы по тегам