嗨,FME社区亚搏国际在线官网。
我有一个简单的任务,将shapefile中的日语字段名更改为英文字段名。所以我用SchemaMapper来完成这个任务。
我创建了一个简单的csv文件,有两列,旧名称和新名称。然后,我在shemamapper中使用了这个csv文件。
我将结果层保存为形状文件。但我装箱的形状文件与原始文件的字段名完全相同。所有日语字段名…
我意识到当我和检查员检查输出时,我可以看到SchemaMapper实际上更改了属性名。请看下面的图片。
然而,当我将此结果保存为形状文件时,它没有反映这些更改。有人能告诉我我做错了什么吗?是吗?
提前谢谢。
希罗
SchemaMapper的筛选器当前支持“=”
对于测试过滤器来说,有这样的操作符是很好的:=;>(二)<;开始;包含regex…
我有许多XLS工作表,需要在其中重命名一些字段并创建一些新字段。我创建了一个具有我需要的查找属性以及为新属性设置值的XLS。
原始-源属性
新建-新建属性
值-需要设置的属性值。
我能够导入此文件并在attributeManager中使用,而不会对新属性映射和现有属性映射产生任何问题。但是,因为我有许多需要更新的电子表格,并且新属性的值会定期更改,所以我希望能够通过SchemaMapper在这个表中提供这些属性。但是,当我尝试这样做时,属性成功地重命名了,但是新属性没有出现。我最好将模式表保存在一个文件中。
SchemaMapper能做到这一点吗?
我的实际项目是在将层写入目标数据库之前动态读取层并设置模式。为了理解模式映射器的工作原理,我在层和目标数据库之间使用了模式映射器。我传递了带有源字段名和所需目标字段名的csv文件。当我运行工作区时,输出具有输入的所有字段。请参阅附件以获得更好的理解。亚搏在线工作流程模式映射器参数.pngcsv-参数.png属性映射.pngPostgis-Writer.png
我可能在读取属性名以部分现有FME格式属性名开头的Excel工作表时遇到问题。
我在这方面的第一次经验是在使用SchemaMapper Transformer时,但当我调查Excel阅读器时,我注意到类似的行为
我想要使用的属性名称是:
如果将具有这些属性名的工作表加载到SchemaMapper Transformer或Excel Reader中,我注意到以下行为:
使用以下属性名重复过程时,一切按预期进行:
我的印象是,这个问题是由于与FME格式属性(有些)相似。据我所知,在有关这方面的文档中没有提到任何限制。
我添加了一个带有四张纸的test.xlsx,包含上述数据。此文件可用于复制问题。
我想知道这是个真正的问题还是我遗漏了什么
熟悉FME桌面版本:
你好,
我有一个表,根据对象的不同,我将它用于多个模式映射。
要做到这一点,我的模式映射是一个带有多个输出的测试过滤器的组合,并且每个输出都连接了一个模式映射器(见下文)。所有模式映射器都在读取同一个表,但它们的何处条款与测试筛选器中使用的条件相关。
有没有一种方法可以动态地更改模式映射器转换器内的WHERE子句,以便不用这个复杂的自定义转换器,我可以使用一个简单的单一模式映射器转换器?
谢谢
我正在尝试从基于WHERE子句的Microsoft SQL Server非空间表中读取SchemaMapper。WHERE子句中的值取决于另一个表中的值。所以我首先读取另一个表并创建一个具有该值的属性。在SchemaMapper中,配置如下:
您已经可以注意到,没有为WHERE子句字段分配属性值或打开文本编辑器的选项。
运行工作区时,会出现以下错误:
Microsoft SQL Server非空间读卡器:查询失败,可能是由于语句格式不正确。查询文本'select*from dataowner.[rac_schema_definition]其中mapping_id='@value(mapping_id)''的。提供程序错误`(-2147217900)从字符串转换为唯一标识符时转换失败。'
发生了致命错误。查看上面的日志文件了解详细信息
SchemaMapper_Mapper(SchemaMappingFactory):无法读取功能:发生了致命错误。查看上面的日志文件了解详细信息
我似乎不可能在WHERE子句中指定属性值。它只是将@value(…)作为文本插入。当我在FeatureReader for Microsoft SQL Server非空间版中尝试此操作时,可以指定属性值或打开文本编辑器,然后运行它,就像魅力一样。
这是错误还是不存在的功能?或者,这是不可能的原因吗?
我已经在考虑一个解决办法。
选项正在使用参数。
用@value(…)填充参数将得到与上述问题相同的结果。
它似乎使用预先定义的字符串作为输入参数,并在SchemaMapper的where子句中使用$()。问题是这个值不再是动态的了。
我可以考虑在参数中使用python获取所需的值,但是我想最小化python/arcpy。
另一个选项是向SchemaMapper的输入数据添加(A)行,并使用SchemaMapper筛选器而不是WHERE子句。这可能有效,但是输入数据可以有数百万行的行顺序,因此,我希望避免向该数据添加属性。另外,SchemaMapper的映射表可能有许多我不需要的行,我希望避免处理这些行。
还有其他选择吗?或者是对我先前问题的解释?
我要从以下功能映射值:
我的特点:
-x=100
-Y=100
-Z=150
根据以下规则
如果z>0且z<50,newattribute=a
大家好,
我有一个形状文件(行),它包括字段:年,时间, 公社,省…我有一个.mdb,它有一个空表,有字段:AXAB诳ti.
我想从shapefile获取空间数据到.mdb中的表,并获取属性(commone=a_xa,省=b_ti)。我该怎么办?
谢谢你
我想通过一个已发布的参数读取SchemaMapper的csv文件。然而,这似乎不是一个选择。我无法选择参数,当我尝试键入$(published_parameter)时,我收到参数通知“在$(published_parameter)”中找不到数据集。我如何解决这个问题?
PS:使用FME 2016.1构建16492
值映射-desiredoutcome.pngPNG我从多个shapefiles创建了一个对照表,其中a)读取查找表b)将值写入地理数据库,c)使用源shapefile名称填充一个名为“datasource”的字段。我有一个名为“city”的字段,需要根据“datasource”字段中的值填充city值。我的方法是使用if/else if/else语句在编写器的目标字段属性中设置条件语句。不起作用。请参阅显示参数和所需结果的屏幕帽。
是否可以让SchemaMapper读取源表(shapefile)的名称,并在编写器中使用该名称填充目标属性字段?问题/目标说明见附件。schemamapperq.png格式
你好,我需要将许多不同的数据集导入数据库。源数据集的字段名(即读卡器)不总是匹配目标数据库的字段名(即作者)。因此,我使用的是SchemaMapper Transformer。SchemaMapper使用的外部查找表具有源数据集的所有不同字段名,以及目标数据库的相应名称(参见下面的示例)。
源数据集 | 目标数据库 | |
日期 | 记录日期 | |
日期从 | 记录日期 | |
日期值 | 记录日期 | |
拉特 | 纬度 | |
是 | 纬度 | |
纬度 | 纬度 | |
长 | 经度 | |
X | 经度 | |
经度 | 经度 |
然而,如果源数据集的字段名已经与目标数据库的字段名匹配,然后,当我使用SchemaMapper运行FME脚本时,该字段不会导入到目标数据库中。因此,使用上面的示例表,如果源数据集具有字段名“Latitude”,那么该字段名将不会导入。SchemaMapper中有没有设置可以解决这个问题?或者其他简单的解决方法?还是我做错了什么?
干杯,达米安
场景:有多个数据库存储相同功能类型的数据集,但是表名和列名各不相同。任务是将多个数据库迁移到具有公共模式(即通用功能类型名称,通用属性名)。
除数据表外,每个数据库都有两个映射表——一个定义了表名和目标公共特性类型名之间的映射规则,另一个定义了列名称和每个要素类型的目标公共属性名称之间的映射规则。幸运的是,映射表的模式对于每个数据库都是通用的。
如果可以为SchemaMapper的数据集参数(包括数据库连接参数)设置用户参数或功能属性,包含架构映射器的工作区可以使用批处理完成任务。然而,数据集参数不能在当前架构映射器中参数化,因此,您需要为每个数据库手动设置连接参数。
事实上,我通过一个包含python脚本的工作流解决了这亚搏在线个问题,该脚本根据映射表为每个数据库执行模式映射,但我认为,如果沙曼apper的数据集参数可以参数化,会更容易。
你好,我正在尝试为输出分配一个级别(MicroStationV8),在arcmap中提供输入,我正在使用SchemaMapper和FilterAttribute(来纠正输入的几何图形)。在arcmap属性的输入值函数(选项schemamapper中的filter属性)中,我使用schemamapper的选项new属性分配一个级别。最后,我用地图特征类型指定方向以更正几何图形,但不要给我分配输出V8的级别,始终指定相同的级别(不正确的级别),并且不在架构映射器的Excel表中查找。
有人知道模式映射器和attributeFilter的配置是否有问题吗?你说什么??。
先谢谢你,当做!你说什么?