FME学习之旅---day27

我们付出一些成本,时间的或者其他,最终总能收获一些什么。

教程:Excel 入门

查看和检查 Excel 数据

1.读模块读取EXCEL文件

2.对源数据进行预览

Excel Reader 参数 |将 Excel 转换为 CSV

阅读 2020 年和平均值工作表,然后计算降水量与平均值相比的百分比。创建新列后,写出 CSV

1.读模块读取EXCEL文件

点击【参数】,选择勾选,可以对读取的表单进行选择和预览

其中,Average中将Field Names Row更改为2,主要是为了不显示第一行的文本

2.添加FeatureJoiner转换器,将两个表进行合并

3.添加 ExpressionEvaluator转换器,计算百分比

表达式如下

(@Value(Precipitation)/@Value(Average Precipitation))*100

4.添加AttributeRounder转换器,对结果进行四舍五入

设置Percent of Average字段的小数位数为2

5.添加StringConcatenator转换器,添加百分比符号

将表达式的结果修改为覆盖,连接方式如下

6.写模块写出CSV

添加CSV写模块,将文件名修改为2020Precipitation

7.结果预览

Excel Writer 参数 |将 Excel 转换为 Excel

1.在上一个模板的基础上,新增其它的表,在Add Reader下选择Import Feature Types...

会出现如下弹框,选择【参数】

将2020取消勾选,勾选2018、2019

2.将2018、2019读模块连接到FeatureJoiner的Left

由于我们的输入数据没有指示数据来自哪个工作表的属性,因此无法判断月份数据属于哪一年。这可以通过启用 fme_feature_type 属性轻松解决。此属性反映功能类型(工作表)的名称。

3.启用 fme_feature_type 属性

对2018、2019、2020 reader要素类中fme_feature_type

修改后,FeatureJoiner的输出结果如下

写入 Excel 数据时使用模板文件

1.添加读模块,读取CSV数据

2.添加Counter转换器,创建行ID

修改输出属性名为:_row,开始计数设为2,因为 Excel 模板中的第一行是具有属性(列名)的标题行,而数据从第 2 行开始。

3.添加AttributeManager转换器,创建累积公式

我们将创建一个公式来计算每年的累积降水量。

使用AttributeManager转换器创建一个名为 CUMULATIVE 的新属性和另一个名为 CUMULATIVE.formula 的属性,此属性将保存公式计算的值。.formula 很重要,因为它告诉 FME 将公式值放在后端而不是直接写入。如果您忘记了 .formula,则该公式将写入字符串。

=SUM(C@Value(_row):N@Value(_row))

4.写模块写出

添加Excel写模块,然后将其命名为 WeatherDataOutput.xlsx。打开写入器参数。将“覆盖现有文件”设置为“是”;这将确保数据被覆盖,并且不会追加到现有文件(如果文件已存在)。接下来,将“模板文件”参数设置为“WeatherDataTemplate.xlsx”。

在要素类型对话框中,将工作表名称更改为 RawData/WeatherTable。这意味着将写入 RawData 工作表中名为 WeatherTable 的命名范围。可以写入同一工作表中的多个命名区域。
然后展开“删除/截断”部分,并将“截断现有图纸/命名范围”参数设置为“是”。FME 将删除 Raw Data WeatherTable 命名范围,并使用新数据重新创建它。单击“确定”完成添加编写器。

5.输出结果

将图像写入 Microsoft Excel 电子表格

1.添加读模块,OGC GML格式,选择FireHalls文件路径

2.添加Reprojector转换器,进行坐标转换

将坐标从UTM83 Zone 10 转换为 LL-WGS84 , 这样图像获取器就可以在地图 API 中使用正确的坐标

3.添加 AttributeManager 转换器,设置以下属性

使用 FME 将图像写入 Excel 时,必须首先指定行 ID。@Count() 功能函数(用于xlsx_row_id)会将计数器名称设置为:row_id,并设置计数开始。我们从第 2 行开始,因为字段标题将写在第一行。

xlsx_col_id用于定义将图像写入哪一列。由于我们的列计数从“0”开始,我们设置值为4,其实是将图像放在输出 Excel 文件中的第 5 列中。

使用 AttributeManager 构造映射 API 的 URL。图像大小值基于您创建的xlsx_raster_width/height属性。图像位置和标记是使用 @YValue() 和 @XValue() FME 特征函数从 FireHall X 和 Y 值派生的,这些函数从特征几何中提取值。以下是完整的 URL:

http://maps.googleapis.com/maps/api/staticmap?size=@Value(xlsx_raster_width)x@Value(xlsx_raster_height)&&sensor=false&markers=color:red|size:mid|label:F|@YValue(),@XValue()

4.添加 ImageFetcher 转换器。

ImageFetcher 通过对指定的 URL 执行 HTTP GET 操作来获取图像。将图像 URL 参数设置为您在 AttributeManager 中创建的“_imageURL”属性。

5.添加写模块,将文件以Excel写出

在“Writer 参数”对话框中,设置 覆盖现有文件 = 是。将模板文件设置为FireHallsTemplate.xlsx。我们使用具有行高预设的模板文件。否则,图像将重叠。

编辑 Excel 编写器要素类型格式参数选项卡,并设置行 ID 属性 = xlsx_row_id

存在url访问超时的情况。

如何将 Microsoft Excel 转换为 Esri Shapefile  

1.添加读模块,读取Excel格式的PublicArt.xlsx文件,已知坐标系为LL84,可在坐标系处进行定义

点击【参数】,在“属性”部分下,确保“经度”设置为“x_coordinate”,将“纬度”设置为“y_coordinate”。较新版本的 FME 会自动执行此操作,但检查始终是一个好主意。

2.对数据进行预览

3.添加写模块,将数据以esri shapefile的文件格式进行写出

点击【OK】后,在弹出的“选择要素类型”对话框。选择任何一种功能类型,选择哪一种并不重要,因为它们都具有相同的架构。

4.结果预览

动态读取多个 Excel 文件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值