span8
span4
有许多方法可以使用FME操作和管理属性。本文将介绍其中一种方法。我们将获取手机信号数据的CSV文件,并基于属性值的组合,生成代表信号质量的点特征。
1。阅读在数据点CSV文件
将一个CSV阅读器添加到画布中,读取CellSignals.csv。在参数中,将经度和纬度的数据类型分别设置为x_coordinate和y_coordinate。将坐标系统设置为LL84并单击ok。
2。测试空,丢失或空值
在读取CSV文件之后,我们需要做的第一件事是过滤掉null/missing/empty值。将NullAttributeMapper转换器添加到工作空间。的NullAttributeMappertransformer用于对空值、缺失值或空值的属性选择进行评估,将这些属性值映射到一个新的值“missing”,并将新映射的缺失值路由到检查器进行进一步评估。在NullAttributeMapper参数中,设置映射到所有属性,单击If属性值旁边的省略号,选择所有三个值并单击ok。然后,对于Map将其设置为Missing,这将把所有null、Missing或empty值更改为Missing,这将有助于以后的过滤。
使用NullAttributeMapper,选择如果属性值,然后映射到丢失了所有值
3。删除缺失值
现在我们已经将所有null、missing或empty值映射为missing,可以轻松地过滤掉它们。添加一个测试仪变压器到画布。测试转换器用于评估一个特性的一个或多个测试。我们将使用测试器来测试纬度、经度、功率、质量和num_measures是否包含丢失的值。在测试参数中,将左边的值设置为latitude,将操作符设置为Is Missing,然后启用Negate,对经度、功率、质量和num_measures重复这一操作,您可以使用Duplicate按钮并更改属性。最后,将通过标准设置为所有测试(和)。
测试出来的电源,质量,num_measures,经度和纬度都缺少的属性
4。删除重复
我们有很多记录,有时会出现重复,幸运的是我们可以使用DuplicateFilter轻松删除重复的纬度/经度对。添加一个复制文件,并将其连接到测试器上传递的输出端口。打开参数,并为键属性选择纬度和经度。
5。格式日期
接下来,我们需要重新格式化日期字段record_tstamp,因为它包含小时和分钟,我们只对日期感兴趣。为此,我们将使用DateTimeConverter转换器,它用于获取以特定方式格式化的输入日期/时间,并以另一种方式输出它。为了DateTimeConverter要正确工作,您需要知道输入日期的格式,因此最好事先检查您的数据。
记录格式为4/12/2011 1:04,这意味着日期可以包含一个或两个值,月份包含一个或两个值,年份是全年,小时包含一个或两个24小时格式的值,分钟包含两个值。输入格式如下:
%e/%N/%Y%k:%M
我们希望一天有两个值,一个月有两个值,一年是满的,都用反斜杠隔开,看起来像2011年12月4日,对于输出格式来说是:
%m/%d/%Y年
要找出您需要的查询,DateTimeConverter参数中有一个快速引用菜单。
在DateTimeConverter,所述输入格式设置为%E /%N /%Y%K:%M和输出格式%米/%d /%Y
6。使用正则表达式模式匹配
来自CSV文件的“Code”属性具有特定的模式。前三个字符是字母,其余字符是数字(ABC3098330997)。一个简单的正则表达式可以用来提取它们并分别创建我们的codeTag和codeValue属性。
使用StringSearcher我们将只从代码属性值中分离字母字符以创建代码标记属性。将StringSearcher转换器添加到画布,并将其连接到DateTimeConverter上的输出端口。在参数中,搜索In:Code,然后将正则表达式设置为[A-Z][A-Z][A-Z]最后,将匹配结果属性设置为codeTag。
使用正则表达式,搜索在码连续3个字母字符
7。提取的剩余部分代码
现在我们已经使用stringsearch和正则表达式创建了codeTag,我们可以使用相同的正则表达式来提取代码的其余部分。使用StringReplacertransformer,我们将把字母字符替换为不隔离codeValue属性的字符。将StringReplacer添加到画布,将其连接到StringSearcher上匹配的输出端口。在参数中,将属性设置为“代码”,然后将模式设置为“替换正则表达式”。要替换文本,请使用步骤5中使用的相同正则表达式,[A-Z][A-Z][A-Z]。将替换文本留空,然后单击“确定”。
使用相同的正则表达式,除去前3个字母只保留数值
8。重命名守则CodeValue
我们使用StringSearcher更改了代码的值,但是StringSearcher不允许属性重命名,因此我们需要使用AttributeRenamer变压器。将attributenamer添加到画布中,在参数中,为“输入值”选择“代码”,为“输出值”重命名为“代码值”。
9。过滤器属性来缩小查询范围
我们只对ABC或ABD代码标签的电台感兴趣,所以我们需要将它们过滤掉。为此,我们可以使用AttributeFilter将值路由到特定输出端口的转换器。这一过程也可以通过其他变压器如测试仪来实现。将Attribute Filter添加到画布并选择codeTag作为要筛选的属性。添加ABC和ABD作为可能的属性值,然后使用向上箭头将它们移动到上面列表的顶部
*注:步骤9-11可以仅使用AttributeCreator和测试仪来实现,选择下面的方法来突出显示的使用的各种变压器。要查看冷凝方法,开拓CSVAttributes.fmw工作区,并寻找方法冷凝书签。
10。过滤器属性来缩小查询范围
现在,我们希望在每个站点按功率级别组织和过滤数据,为此,我们将使用AttributeRangeFilter变压器。使用AttributeRangeFilter,我们可以使用Power属性根据范围创建组,然后单独或作为一个组处理这些组。将AttributeRangeFilter添加到画布,该画布连接到AttributeFilter上的ABC和ABD输出端口。在“参数”中,选择“电源”作为“源属性”,然后在“范围查找”中输入以下内容:
Tester_1 | Tester_2 | Tester_3 | 质量 | > | -40 |
质量 | <= | -60 |
11。创建指示信号质量的属性
现在我们已经过滤掉了需要的功率级别,然后测试信号的质量,我们需要在属性中识别这些。在每个测试变压器之后添加AttributeCreatortransformer,我们可以使用它来创建属性。对于连接到第一个测试仪的AttributeCreator,创建一个名为QualityOfSignal的属性,并将其值设为Best。对于连接到第二个测试仪的下一个AttributeCreator,创建相同的属性,但这次给它一个合理的值。对于最终的AttributeCreator,请使用相同的属性名,但将其值设为Worst。
12。创建一个从属性几何
现在数据已经清理完毕,我们可以使用纬度和经度属性在地图上可视化每个单元格信号。我们可以使用VertexCreator创建点。向画布添加一个VertRecreator并将其连接到AttributeCreator。在参数中,将X值设置为经度,将Y值设置为纬度,将模式保持为添加点。
13。基于色彩的上QualityOfSignal点
现在已经创建了点,我们希望通过使用不同的颜色来可视化信号属性的QualityOfSignal,这可以使用AttributeValueMapper,它查找属性并基于其他属性分配值。我们将使用此转换器使用QualityOfSignal属性中的三个值,并使用fme_color值为其指定颜色。在“源属性”的“参数”中,选择“QualityOfSignal”,然后输入fme_color作为“目标属性”。然后在“值映射”中输入以下内容:
源要素 | 目标值 |
最好 | 0,0,0.15 |
合理 | 0,0.5,1 |
最差 | 0,1,1 |
使用AttributeValueMapper基于其价值来着色点
14。写为MapInfo TAB
添加MapInfo TAB(MITAB)Writer并将属性定义设置为Automatic。然后将其连接到AttributeValueMapper上的输出端口,然后运行转换。检查你应该看到,这些点被QualityOfSignal彩色输出。
由QualityOfSignal有色的CellSignals输出。
数据归属
这里使用源自从公开数据中的数据由提供温哥华市, 不列颠哥伦比亚省。它包含了开放政府许可协议进行许可信息 - 温哥华。
©2019安全亚搏在线软件公司法律