斯潘8
斯潘4
使用FME有很多方法来操作和管理属性。本文将介绍其中一种方法。我们将获取一个细胞信号数据的csv文件,基于属性值的组合,产生代表信号质量的点特征。
1。读取数据点csv文件
在画布上添加一个csv阅读器,在cellsignals.csv中读取。在参数中,将经度和纬度的数据类型设置为X坐标和Y坐标,分别。将坐标系设置为LL84,然后单击“确定”。
2。空值检验缺少值或为空
读取csv文件后,我们需要做的第一件事是过滤掉空值/缺少值/空值。将NullAttributeMapper Transformer添加到工作区。这个空属性映射器Transformer用于评估所选属性是否为空,值缺失或为空,将这些属性值映射到“丢失”的新值,并将新映射的丢失值路由到检查器以进行进一步评估。在NullAttributeMapper参数中,设置映射到所有属性,单击“如果属性值为”,选择所有三个值并单击“确定”。然后为了让地图设置为失踪,这将更改所有空值,缺少或空值到缺少,这将有助于以后的过滤。
使用nullattributemapper,如果属性值为,然后映射到失踪
三。删除缺少的值
既然我们已经映射了所有的空值,失踪,或空值读取为缺少,我们可以很容易地过滤掉它们。添加一个测试器变换到画布上。测试变压器用于评估一个特性的一个或多个测试。我们将使用测试仪来测试纬度,经度,权力,质量,num_度量值包含缺少的值。在测试仪参数中,将左值设置为Latitude,将运算符设置为“丢失”,然后启用negate,对经度重复此操作,权力,质量,以及num_度量,您可以使用“复制”按钮,只需更改属性即可。最后,将通过标准设置为所有测试(和)。
测试所有缺少的电源属性,质量,数字测量,经纬度
4。删除重复项
我们有很多记录,有时会重复,幸运的是我们可以使用复式过滤器以便轻松删除重复的纬度/经度对。添加一个复制过滤器并将其连接到测试仪上通过的输出端口。打开参数,并为关键属性选择纬度和经度。
5。格式日期
下一步,我们需要重新格式化日期字段记录,因为它包含小时和分钟,我们只对日期感兴趣。为此,我们将使用datetimeconverter变压器,它用于获取以特定方式格式化的输入日期/时间并以另一种方式输出。为了日期时间转换器为了正确工作,您需要知道输入日期的格式,所以最好提前检查数据。
记录的格式为2011年4月12日1:04,这意味着日可以包含一个或两个值,月份包含一个或两个值,一年就是一整年,小时包含一个或两个24小时格式的值,分钟包含两个值。输入格式如下:
%e/%n/%y%k:%m
我们希望这一天有两个价值观,有两个值的月份,今年要满了,全部用反斜杠隔开,看起来像2011年12月4日,对于输出格式,它是:
%m/%d/%y
要找出您需要的查询,在datetimeconverter参数中有一个快速参考菜单。
在DateTimeConverter中,将输入格式设置为%e/%n/%y%k:%m,将输出格式设置为%m/%d/%y
6。使用正则表达式进行模式匹配
来自csv文件的“code”属性具有特定的模式。前三个字符是字母,其余字符是数字(abc3098330997)。可以使用一个简单的正则表达式来提取它们,并分别创建codetag和codevalue属性。
使用纵梁搜索器我们将只从代码属性值中分离字母字符来创建代码标记属性。将StringSearcher转换器添加到画布,并将其连接到datetimeconverter上的输出端口。在参数中,搜索范围:代码,最后将正则表达式设置为[a-z][a-z][a-z]将匹配结果属性设置为codetag。
使用正则表达式,在代码中搜索三个字母字符
7。提取代码的其余部分
现在我们已经使用字符串搜索和正则表达式创建了代码标签,我们可以使用相同的正则表达式来提取代码的其余部分。使用捻线机变压器,我们将用零替换字母字符来隔离codeValue属性。在画布中添加一个StringReplacer,将其连接到StringSearcher上匹配的输出端口。在参数中,将属性设置为代码,然后将模式设置为替换正则表达式。对于要替换的文本,使用步骤5中使用的相同正则表达式,[A-Z][A-Z][A-Z]。将替换文本保留为空白,然后单击“确定”。
使用相同的正则表达式,删除前3个字母字符以保留数值
8。将代码重命名为codeValue
我们使用StringSearcher更改了代码的值,但StringSearcher不允许属性重命名,所以我们需要使用属性名称变压器。在画布中添加一个属性名称,在参数中,对于输入值,选择代码,对于输出值,将其重命名为codeValue。
9。筛选属性以缩小结果范围
我们只对代码标签为abc或abd的电台感兴趣,所以我们需要过滤掉它们。为此,我们可以使用属性过滤器将值路由到特定输出端口的转换器。这个过程也可以通过其他变压器实现,比如测试仪。向画布中添加一个attribute filter,并选择codetag作为要筛选的属性。添加abc和abd作为可能的属性值,然后使用向上箭头将这两个移动到上面列表的顶部
*注意:步骤9-11只能使用attributeCreator和测试仪来实现,选择以下方法来突出各种变压器的使用。要查看压缩方法,打开csvattributes.fmw工作区并查找压缩方法书签。
10。筛选属性以缩小结果范围
现在我们要按每个站点的功率级别组织和过滤数据,为此,我们将使用属性筛选器变压器。使用attributerangefilter,我们可以使用power属性根据范围创建组,然后单独或作为一个组处理这些组。将attributerangefilter添加到画布,连接到attributefilter上的ABC和ABD输出端口。在参数中,对于“源”属性,选择“电源”,然后,对于范围查找,输入以下内容:
TESTEST1 | TESTESTR2 | 睾酮3 | 质量 | > | - 40 |
质量 | <= | - 60 |
11。创建一个指示信号质量的属性
既然我们已经过滤掉了需要的功率等级,然后测试信号的质量,我们需要在属性中识别它们。在每个测试变压器之后,添加一个属性创建器变压器,我们可以用它来创建属性。对于连接到第一个测试仪的attributeCreator,创建一个名为QualityOfSignal的属性,并给它一个最佳值。对于连接到第二个检测仪的下一个属性创建器,创建相同的属性,但这次给它一个合理的价值。对于最终的属性创建者,使用相同的属性名,但给它一个最坏的值。
12。从属性创建几何体
现在数据被清除了,我们可以使用纬度和经度属性在地图上可视化每个单元信号。我们可以使用顶点创建程序创建点。将VertexCreator添加到画布并将其连接到AttributeCreator。在参数中,将X值设置为经度,Y值设置为纬度,将模式保留为添加点。
13。根据信号质量给点上色
现在点已经创建,我们希望通过使用不同的颜色来可视化信号属性的质量,这可以通过使用属性值管理器,它查找属性并根据其他属性指定值。我们将使用此转换器使用信号质量属性中的三个值,并使用fme_颜色值为其指定颜色。在源属性的参数中选择QualityOfSignal,然后输入fme_color作为目标属性。然后,对于值映射,输入以下内容:
源特征 | 目标值 |
最好的 | 0,0,15 |
合理的 | 0,5,1 |
最差的 | 01,1,1 |
使用attributeValueMapper根据点的值为点上色
14。写入映射信息选项卡
添加mapinfo选项卡(mitab)编写器并将属性定义设置为自动。然后将其连接到attributeValueMapper上的输出端口,然后运行转换。检查输出,你应该看到点是由信号的质量着色的。
由信号质量着色的单元信号的输出。
数据属性
此处使用的数据源于温哥华市,不列颠哥伦比亚省。它包含根据开放政府许可证(温哥华)获得许可的信息。
?2019安全亚搏在线软件公司|合法的