我们付出一些成本,时间的或者其他,最终总能收获一些什么。
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的输出结果如下
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.输出结果
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.结果预览