西班牙
斯潘4
大家好,
我是FME的新用户,我正在使用FME Workbench 2017.0。
我有一个新的功能类,它有编码域。输入到新要素类中的数据来自旧mdb中的要素类。我想从每个字段中删除属性值,这些字段在各自的编码域中没有值,它们可以是空字符串,也可以是空字符串。
图中显示了一些数据的例子,在这里您可以看到Bur-T不存在作为EngulyAgor或MeaveDeDy中的编码值,但它存在于PiPiPoor所有者中。或者STR不存在于PIPEAWORD BOOST或MIN中的编码值,但它存在于EngulyAffice中。我使用attributevaluemapper来达到这一点。
注意:我试过查询删除字符长度<的值,删除大写的值,等等,但这些似乎不起作用,因为“Town of Burke”和“Streets Division”值仍然被识别为它们的代码,所以在程序执行时,它们随后会被删除。
任何帮助都将不胜感激。谢谢您!
好啊。如果目标格式是esri文件geodatabase,我知道编码域是什么。
据我所知,fme无法从fgdb数据集中读取域的定义,但是geodatabase_file reader有一个名为“resolve domains”的选项参数来读取与每个代码对应的描述。如果在将读卡器添加到工作区时选中此选项,则其读卡器功能类型的每个具有域定义的属性都将具有以“_resolved”为后缀的描述属性,如果未定义代码,则其值将为空。
因此,解决方法是:将所有mdb记录写入目标fgdb表后,使用geodatabase_文件读取器和“解析域”选项重新读取表中的所有记录,将没有描述的代码替换为
此屏幕截图说明了从重新读取表到更新表的过程。
您好!@ENASB公司,请
我创建了一个示例工作区(编码域示例.fmwt)这可能有助于你完成这项任务。由于您知道要删除的值,因此可以使用attributeManager中的条件语句重新分配值。例如,在我提供的工作区中,我正在测试school_category属性中的值“strongstart bc”。如果功能的school_category=“strong开始BC”,AttributeManager会将school_category设置为空(请参阅下面的屏幕截图以供参考)。
因为这是一个简单的例子,所以我对测试子句使用了准确的拼写;但是,也可以在测试子句中使用正则表达式,方法是将测试子句运算符更改为“contains regex”。
要设置条件语句的测试子句,请打开attributeManager参数>属性值(下拉箭头)>条件值。>在第一行“if”中输入一个测试子句(双击空单元格),并将属性值留空。
参考用if-then条件语句测试本文将详细介绍如何使用attributemanager(带有非常有用的屏幕截图)设置条件操作。
我用了属性管理器因为它将所有内容都包含在一个变压器中,但您也可以使用其他变压器来实现这一点。一定要查看使用attributemanager转换器控制数据的属性如果你想快速介绍一下attributemanager和使用geodatabase子类型和域文章也是!
希望这有帮助。
-克里斯
?2019安全亚搏在线软件公司|合法的