斯潘8
斯潘4
我有一个使用表中的模式作为工作区资源的动态编写器。读GML有一个格式为YYYY-MM-DD的日期属性,读卡器模式将其视为XML_日期类型。有一个SchemaMapper过程正在发生,表中的模式将目标数据类型定义为fme_date。问题是目标格式希望日期格式为YYYYMMDD(无破折号)。如果我使用日期格式转换器格式化日期,那么一切都很好。如果没有,功能将被删除。
与其使用日期格式化程序(我需要指定所有数据属性),我更喜欢更通用的方法。当时正在考虑使用一个python脚本来查看属性的数据类型,但在fmeobjects中似乎没有任何方法可以做到这一点。下一种可能性是python检查每个属性值,看看它们是否是日期格式的YYYY-MM-DD和重新格式化。
这一切似乎有点笨拙,所以我想有一些明显的我错过了!谢谢。
我使用fmeobjects类沿着python路径(见下面)前进。FME通用阅读器要读取模式,检测本机数据类型为xml-date的属性,创建一个在日期格式化程序中使用的python脚本私有参数。
导入fmeobjects fetch参数master xsd=fme _macrovalues['master xsd']gml _file=fme _macrovalues['in gml']设置架构readerdirecties=[]directives.append('runtime _macros')directives.append('xsd _doc,“'+master xsd+'”)reader=fmeobjects.fmeuniversalreader('gml',错误的,指令)打开数据集根据实际格式,除“真实格式”以外的所需参数不同。阅读帮助文档中的“映射文件指令”部分了解有关特定格式参数的更多信息。参数=[“真实格式”,'gml']reader.open(gml_文件,参数)dateattrlist=[]将架构属性读取并处理到listwhile true:schema=reader.read schema()如果schema==none:break for i,枚举中的名称(schema.getSequencedAttributeNames()):nativeDataType=schema.getAttribute('*%s'%name)如果nativeDataType='xml\u date':dateAttrlist.append(name)reader.close()使用set将重复列表删除到参数variableDateAttr='中,对于set中的val(dateAttrlist):dateAttr=val+','+DATEATTR设置参数RETURN DATEATTR
我唯一能想到的非python方法是使用attributesplitter,然后是一个attributeCreator,它创建一个名为@value(_attr_name)且日期格式正确的新属性。不幸的是,我认为你不能在dateformator中使用相同的@value技巧。
现在有@currentAttribute函数,看起来应该是正确的,但我不这么认为。除非您可以在python或fmefunctioncaller中使用它
作记号,这个问题让我思考,并产生了一个新的想法:
对,我喜欢这个想法,也有同样的想法。不知道这有多可行,但我喜欢它。我想如果我们再加一句,它就只会开着,说,属性管理器。我无法想象我们把它放在每个变压器上(尽管我可能是错的)。
?2019安全亚搏在线软件公司|合法的