span8
span4
我在FME Server的工作区,包括PythonCaller。
该PythonCaller包括需要的目录作为其输入参数之一的脚本。
我希望它使用的目录,提供给PythonCaller为隐藏用户参数。用户参数的定义仅仅是文本,并且该值也由其它用户的参数值,从一个桌面工作区这触发服务器的工作空间中提供的。
我已经尝试了一切。我已经改变了参数定义,我已经把周围的r值和引号。不过工作区失败。
例如此错误消息到来时,如果我只是试图输入用户参数值只是简单的目录(d:\数据\ citydb_temp \ ...)
“Python异常
让我怎么把用户参数目录作为输入参数,以正确的PythonCaller?
除了访问通过FME_MacroValues字典私营和发布的参数具体表现@nielsgerrits,你也可以使用ParameterFetcher检索参数值转换成特征属性。
这样,你可以访问使用feature.getAttribute()方法的值。
值得注意的是,这是一种访问定制变压器内的用户参数的优选方式。
好点子。不,它不应该有所作为。你甚至可以去疯狂和使用AttributeManager :-)
问题是,该FME_MacroValues在自定义变压器内(到最不安全的用户),相当出人意料的方式快译通的行为。亚搏在线这就是为什么它的建议去它转换到一个要素属性。
感谢解释,只是检查,如果我错过了什么。
我真的很喜欢使用的参数在属性中所有未个体特征有关的操作(例如,目标文件路径),因为他们是在工作区中随时取用,而不必把它们合并到功能,并让他们在整个工作流程(感觉出行亚搏在线 like this eats performance).
我甚至用VariableSetters和-Retrievers对于这种东西,它的工作相当不错,如果流的顺序组织良好开始。
该代码还包括定制packagcehttps://github.com/wo1fsea/PyTexturePacker
目标是创建纹理图集了几百张照片(更好的视觉效果表现纹理3D城市模型),而PyTexturePacker包需要的图片输入目录和输出目录纹理图集。我还发现,PyTexturePacker没有正常工作,如果我没有先创建的输出目录,所以这就是为什么有os.mkdir纹理打包机pack_test功能之前。
它的工作完全没有问题,如果我只是在目录中的文字像R型“C:目录\ ...”,但是当作为用户参数或功能属性输入,错误的用武之地。
另一个奇怪的是,我也有一个工作区,只有具有PythonCaller用同一个脚本,没有其他变压器(尽管创作者),并与私人用户的参数作为脚本的输入。如果我触发从FMEServer,它的工作原理完全没问题,即使有FMEMacrovalues [“PARAMETER_NAME”],而不是当在FMEDesktop触发。只是无法弄清楚什么是在其他工作区造成的问题,(为什么它不与桌面工作)。
这里的代码如下:
进口fme进口fmeobjects从PyTexturePacker进口封隔器#进口操作系统模板类接口:#使用这个类时,确保它的名字是#的值设置为类或函数过程特性的变压器参数类FeatureProcessor(对象):def __init__(自我):通过def输入(自我,特性):self.pyoutput(特性)def关闭(自我):通过路径= feature.getAttribute (_atlas_path) os.mkdir(路径)def pack_test (in_path out_path):创建一个MaxRectsBinPacker packer =封隔器。create(enable_rotated= 0, max_width=8192, max_height=8192, bg_color=(0, 0, 0, 255), texture_format='.jpg', border_padding= 0, shape_padding= 0) result = packer.pack(in_path, out_path) pack_test(feature.getAttribute('_input_appearances'),feature.getAttribute('_textureAtlasOutput'))
我用这种方法来定义一旦这个路径,并让工作空间定义基于FME_ENGINE的路径。通过这种方式,需要通过我们的DTAP的路径没有改变。
什么工作对我来说是:
如果FME_MacroValues.get( 'FME_ENGINE', '')== '':回归FME_MacroValues.get( 'WasWordtPathDev')的elif '测试' 在FME_MacroValues.get( 'FME_ENGINE'):返回FME_MacroValues.get( 'WasWordtPathTest')其他:返回FME_MacroValues.get( 'WasWordtPathProd')
2016工作区:FileDirectoryUserParameter.fmwt
也看到了这个问题:脚本参数
请记住参数的导航器中的顺序很重要。在脚本参数所用的参数必须置于脚本参数的上方。这是因为在导航器的顺序决定的读取顺序。
©2019安全亚搏在线软件公司|法律