故障排除
数据流
许多ESF工作区的一个核心问题是,它们的结构没有按照FME中数据流的工作方式进行。在FME中,数据流拆分相当于复制,合并相当于追加。
如果您想要记录实际合并属性或功能在一起,那么您需要使用组合转换器,如Aggregators, featuremerger, and Joiners等……
使用通用密钥建立关系
一个非常常见的问题是缺乏使用适当id的相互引用。例如,每个空缺都需要一个独特的养opening_id
每个开口定义都是开口上的子元素,因此必须同时包含ESF_opening_id
和一个ESF_opening_definition_id
.如果一个开口定义切割块多边形被发送给ESF编写器,而没有引用共享ESF_opening_id
与opening_definition
,那么opening_definition
多边形将被ESF验证器拒绝。
有些记录可能具有重复键。例如,几个切割块可能是同一个开口的一部分,在这种情况下,复合键可能是切割块和切割许可。在工作区中,您将需要放置一个Aggregator转换器,以便将这些多个切割块分组为一个与一个开口定义和开口相关联的聚合特性。
不符合特性规范
经常有一些特性被ESF作者拒绝,因为它们不符合相关的特性表示文档(参见下面的模式表)。您可能需要使用FME的属性处理转换器来解析数据,使其符合要求。例如,您可以使用StringReplacer转换器来消除电话号码中的空格,因为ESF结果特性表示规范规定电话号码必须是十进制(10,0)。
查看/测试输出
尝试使用ESF结果阅读器使用检查应用程序(FME Universal Viewer或FME Data Inspector)打开XML输出文件。中的“验证数据集”读者参数。这与MOF ESF提交网站对在线提交的模式检查相同。
试错法
您可能需要进行一些解析和重新格式化,以便将元数据转换为ESF可以接受的形式。请注意,这通常是一个反复试验的过程。
运行工作区,生成XML。同样,尝试使用ESF Results阅读器使用Inspection应用程序(FME Universal Viewer或FME Data Inspector)打开XML输出文件。中的“验证数据集”读者参数。
如果失败,您可以执行以下操作:
- 注意行号和错误消息。
- 在文本编辑器中打开XML文件,并注意由读者识别的问题字段。
- 引用模式表在文档中2 esf_results_fme_feature_representation.doc在养Templates.zip文件,查找该字段和特性类型,并查看需求是什么。这是您发现日期和电话号码值格式错误、类型错误或在需要值时为空的方法。
例子:
XML解析器错误:'输入错误
数据集:“文件:C: / / / / RT / 31827 /结果/ RESULTS_OpeningDefinition.xml '
行:53列:18消息:数据类型错误:
类型:InvalidDatatypeValueException, Message:Value不在枚举中。
如果我们查看源文件,我们会发现:
53行显示了:
< rst: actionCode / >
这必须意味着有一条actionCode为空的记录。
为了检查输出并了解它失败的原因,您可能还需要使用ESF结果阅读器尝试用检查应用程序(FME Universal Viewer或FME Data Inspector)加载输出。中的“验证数据集”读者参数。
提取和管理属性
使用Joiner从电子表格或表中提取字段值非常方便。诀窍是找到一个连接几何特征和表记录的公共键,以便检索OpeningDefinition属性。
使用AttributeRenamer转换器将属性重命名为ESF期望的确切名称。这样,您就不需要在输出时手动连接它们。
使用NullAttributeMapper转换器处理那些带有空值的记录,否则会导致转换失败。这些空值可能存在,因为几何文件中的记录无法在电子表格中找到匹配。最终需要对这些记录进行匹配和填充,以避免丢失这些记录。
分组功能
对于结果提交,你通常需要将功能分组opening_id使用Aggregator转换器。然后,您可以分支数据流,并使用GeometryRemover将属性数据发送到OpeningDefinition特性类型,而另一个数据流分支可以将具有属性的聚合多边形传递到OpeningDefinition特性类型。
额外的资源
要了解更多的诊断思路,请尝试阅读:7ESF_PROBLEMS_R2.doc,它包含在教程中,开始与BC MoF ESF.
如果在查看了上面的信息后,您仍然有问题,您可以在assistance@safe.com上给我们发送电子邮件,连同您的工作区、翻译日志和示例源数据以及您所遇到问题的描述。亚搏在线