FME入门

FME简介

FME有时被归类为ETL应用程序。ETL代表Extract,Transform和Load。它是一个数据仓库工 具,可以从多个源(此处为A和B)提取数据,对其进行转换以满足用户的需求并将其加载到 目标(C)中 :

1686885423163

FME 2018较为稳定,其他版本没用过

FME中定义转换和变换时,可以将它们保存在.fmw文件中

FME面板

常用:FME Workbench

1686117261653

Generate相当于**FME Quick Translator **工具,可以直接进行相关数据的简单转换,但不能在转换过程中对数据进行清洗、增删等处理

创建一个新的工作空间

1686117471568

工具栏

读模块

1686118039961

将数据读入工作空间

1686118700570

数据属性

1686120540075

连接一个浏览器 进行查看读模块中的数据

1686120903361

可以过滤列进行查看

1686121051311

写模块

1686118073342

将数据写入某个文件

1686118972437

可以直接在浏览器中查看写模块中的数据

1686121193724

同样可以过滤列进行查看

1686121235587

有几个写模块参数可用于减少GeoJSON文件大小

设置格式化类型为线性,坐标精度为6

1686888097357

最简单的一个模型 (模型名.fmw) —— esrishape2xlsxw

1686119084376

运行模型

1686119284459

运行日志(模型名.log)会自动生成在模型同目录下

复位

1686120102384

FME Data Inspector

过滤数据

Data Inspector中的过滤应用于所有可见数据,因此我们还必须添加一个子句以使其他数据保留在屏幕上

1686887766575

Data Inspector中的背景地图

背景可默认成Stamen Maps

1686215114958

必须使用有效坐标系引用源数据才能使用背景地图查看它。如果坐标系未记录在数据集本身 中,则可以在打开数据集时将其输入到字段中。

即使存在多个不同坐标系的源数据集,FME也可以根据背景地图显示源数据。FME通过将数据重新投影到背景地图使用的坐标系来完成此操作。因此,建议您在想要检查原始形式的数据时关闭背景地图。

数据转换

数据转换类型

数据转换可以细分为两种不同的类型: 结构转换 和 内容转换.

结构转换

结构转换可能更好地称为“重组”。它指的是FME在几乎无限数量的安排中将数据从源传送到目标的能力。 这包括合并数据的能力,划分数据,重新排序数据和定义自定义数据结构。 通过处理其模式来执行变换数据集的结构。

转换数据集的结构需要使用FME来操作模式。FME使用术语“模式”,但您可能将其视为数据模型。

模式概念

模式定义了一个数据集的结构。每个数据集都有其独特的模式; 它包括定义或限制其内容的图层,属性和其他规则。

模式表示

创建新工作空间时,FME会扫描源数据集。它创建了一个读模块,其图层显示在工作空间画布的左侧,而一个写模块的图层显示在工作空间画布的右侧:

1686897439099

技巧:此图中的每个对象表示源数据集中的细分。在FME术语中,这些对象称为要素类型。多个要素类型表示源数据集中有多个图层。

读模块模式

对于读模块,通过单击每个要素类型对象上的齿轮图标,可以显示有关模式的更多信息:

1686897550738

此“要素类型”对话框有许多选项卡。在“参数”选项卡下面是一组常规参数,例如要素类型的名称(在本例中为“库”),允许的几何类型以及父数据集的名称 :

1686897667571

“用户属性”选项卡显示属性列表。每个属性由其名称,数据类型,宽度和小数位数定义:

1686897729852

每个图层都有不同的名称,也可以有一组完全不同的属性。所有这些信息都构成了读模块模式。字面意思是**_“我们拥有的”_**。

写模块模式

与读模块一样,每个写模块都有一组详细的模式信息,可通过打开要素类型的对话框来访问:

1686897953603

默认情况下,写模块模式(“我们想要的”)是源的镜像,因此转换的输出将是输入的副 本。此要素允许用户无需进一步编辑即可从格式转换为格式(快速转换)。

如果“我们想要的”与默认模式定义不同,我们必须使用称为模式编辑的技术来更改它。

技巧:FME支持400多种格式,数据细分的方式几乎一样多。最常见的术语是图层,表,类,类别,级别或对象。 虽然这些细分的一般FME术语是要素类型,但FME Workbench中的所有对话框都使用特定格式的术语,其中正确的术语适用。

模式编辑

模式编辑是更改写模块模式以自定义输出数据结构的过程。一个很好的例子是重命名属性字段。 在编辑之后,源模式仍然代表“我们拥有的”,但目标模式现在确实代表“我们想要的”。

可编辑的组件

可以执行许多编辑,包括但不限于以下内容:

**属性重命名 **

可以重命名目标模式上的属性,例如将POSTALCODE重命名为PSTLCODE。

要重命名属性,请打开“要素类型”对话框,然后单击“用户属性”选项卡。单击要重命名的属性并输入新名称。

1686898550433

属性类型更改

写模块模式的任何属性都可以更改类型; 例如,从整数字段更改为字符字段。 要更改属性类型,请打开“用户属性”选项卡,并将“类型”字段设置为新类型:

1686898890751

技巧:属性的“类型”列仅显示与该数据格式的允许类型匹配的值。例如,Oracle模式允许varchar 或clob的属性类型。MapInfo不支持这些数据类型,因此它们永远不会出现在MapInfo模式 中。上面的屏幕截图显示了GML格式的数据类型。

要素类型重命名

要重命名写模块要素类型,请打开“参数”选项卡,单击“要素类型名称”字段(标签可能因格式 类型而异)并根据需要编辑名称:

1686899753224

您还可以通过在Workbench画布中单击某个要素类型并按F2键来重命名该要素类型。

几何类型更改

要更改要素类型的允许几何对象(例如,将允许的几何对象从线条更改为点),请打开“参数”选项卡并更改允许的几何对象类型:

1686900136092

此字段仅在格式要求严格决定几何类型时可用。如果格式允许在单个要素类型中混合几何对象,则不会显示此设置。

一旦用户对写模块模式进行了所有必需的更改,工作空间就会反映“我们想要的” - 但它尚未指定读模块模式应如何连接在一起。这是下一个任务,它被称为模式映射。

技巧:您可能想知道“如果我编辑了读模块模式而不是写模块,会发生什么”? 好吧,默认情况下你是不能的!读模块的模式字段是灰色的以防止这种情况,因为更改会使模式定义与源数据集不同步:有一些罕见的用例 - 但它们超出了本培训课程的范围!

1686900319662

模式映射

模式映射是FME数据重组的第二个关键部分。

在FME Workbench中,工作空间的一侧显示读模块模式(“我们拥有的”),另一侧显示写模 块模式(“我们想要的”)。最初,创建工作空间时会自动连接这两个模式,但是在编辑时,这 些连接通常会丢失。

模式映射是将读模块模式连接到写模块模式的过程,其方式是确保将正确的读模块要素发送 到正确的写模块要素类型,并将正确的读模块属性发送到正确的写模块属性。

FME允许以任何所需的布置从源到目的地的映射。可以映射哪些要素类型或属性没有限制。 、

模式编辑和模式映射是重组数据的 一种手段。 一个很好的类比是衣柜里装满了衣服。当衣柜重新组织时,你扔掉你不再需 要的东西,为你计划得到的新衣服预留空间,并将现有物品移至更有用的布置中。 空间 数据重组也是如此:它是重组数据以使其更有用的行为。

要素映射

要素映射是将源要素类型连接到目标要素类型的过程。 通过单击读模块要素类型的输出端口,将箭头拖动到写模块要素类型的输入端口,然后释放 鼠标按钮来执行要素映射。粗黑线表示连接。 这里,通过将箭头从源拖动到目标,创建从源到目标要素类型的连接线:

1686901105282

允许合并和拆分数据:

1686901121492

在这里,用户要求Parks,TransitStation和Libraries都在输出中的单个图层上,因此将这三种读模块要素类型合并为一个写模块要素类型(PublicFacilities)。

属性映射

属性映射是将读模块属性连接到写模块属性的过程。

通过单击读模块属性的输出端口,将箭头拖动到写模块属性的输入端口,然后释放鼠标按钮来执行属性映射。属性连接显示为更细的灰线。

这里已经进行了要素映射,并且正在进行属性连接:

1686901207765

请注意绿色,黄色和红色颜色编码,指示连接了哪些属性。

绿色端口表示已连接的属性。黄色端口表示未与写模块连接的读模块属性。红色端口表示未与读模块连接的写模块属性。

读模块和写模块要素类型中具有相同名称的属性会自动连接,即使连接线可能不可见; 端口颜色是关键:

1686901352037

==警告==:名称区分大小写,因此ROADS与roads,Roads或rOADS不同。 知道您是否依赖自动属性连接,这一点很重要!

内容转换

内容转换可能更好地称为“修订”。它指的是改变数据集内容的能力。 操纵要素的几何或计算新的属性值是FME如何转换内容的最佳示例。 内容转换可以独立进行,也可以与结构转换同时进行。

内容转换是对要素组件进行操作的内容转换。

要素?

在FME中,一个要素相当于单个项目。对于空间数据,要素通常是几何对象(具有或不具有一组相关属性)。

对于表格数据,要素通常是数据库中的记录,电子表格中的行或文本文件中的行。每个列或单元称为属性。

FME中的要素具有灵活的通用表示,与其源自的格式无关。这意味着任何转换器都可以在任 何FME要素上运行,无论其源格式如何。有时内容转换在单个要素上运行,有时在多个要素上运行。

注:可以将内容转换视为更改或编辑数据。

衣柜类比仍然适用于此。您可以将衣服从衣柜 中取出来进行清洁,或改变它们,或修理它们,或将它们染成新的颜色或各种其他任务,然后再将它们送回原位。 对于空间数据转换也是如此:它是将您的数据修复为更干净且符合您真正想要的风格的行为。

几何转换

几何转换是重构FME要素的空间组件的行为。换句话说,要素的几何形状经历某种形式的改变以产生不同的输出。

几何转换包括:

  • 泛化 - 一种重构数据的制图过程,因此可以在给定的地图比例下轻松显示
  • 变形 - 调整一组要素的大小和形状,以更接近地匹配一组参考数据
  • 拓扑计算 - 将一组线性要素转换为节点/线结构
  • 线交叉 - 计算线要素之间的交点

1687145892268

例如:在这里,道路与河流相交,产生了标志着桥梁位置的点。

属性转化

属性转换是重构FME要素的表格组件的行为。换句话说,属性经历某种形式的改变以产生不同的输出。

属性转换包括:

  • 连接 - 将两个或多个属性连接在一起
  • 拆分 - 将一个属性拆分为多个,这与连接相反 测量
  • 测量要素的长度或面积以创建新属性
  • ID创建 - 为特定要素创建唯一的ID号

Address1 Suite 2017,+

Address2 7445-132nd Street,+

City Surrey,+

Province British Columbia,+

PostalCode V3W 1J8

= Address Suite 2017, 7445-132nd Street, Surrey, British Columbia, V3W 1J8

例如:地址的每一行被连接起来以返回单行地址。

转换器

除了模式编辑和模式映射之外,还可以使用称为转换器的对象进行转换。

什么是转换器?

顾名思义,转换器是一个FME Workbench对象,用于执行要素转换。有许多FME转换器,每个转换器执行许多不同的操作。

与电路中的一组元件非常相似,可以连接一系列Workbench转换器,以对一组要素产生累积效应。

转换器连接在读模块和写模块要素类型之间,以便数据从读模块,转换过程流向写模块。

转换器通常在画布窗口中显示为矩形浅蓝色物体。

链接转换器

即使在FME中有大量的转换器,用户也经常需要一个组合或一个转换器链,而不是一个单一的转换器。

一串以图形方式表示整个工作流的转换器是FME的一个关键概念:

1687146476277

在此示例中,DuplicateFilter转换器删除重复的多边形要素。Dissolver转换器将每个剩余(唯 一)多边形与其邻居合并,其中存在公共边界。最后,每个合并区域从Counter转换器获得一 个ID号。

要素计数显示

1687153999724

最后一项要素显示,有80个要素被读取,73个通过Tester,7个失败(作为Dog Park)并继续使用Logger。

“日志”窗口确认已写入的要素数,并列出Tester未通过的要素。 这些数字有助于分析工作空间的结果,并在输出与预期不同时提供调试参考。

转换器参数

每个转换器可能有许多参数(设置)。单击齿轮图标可以访问参数(如要素类型):

1686903724956

或者,如果参数编辑器窗口打开,只需单击转换器(或任何其他画布对象)即可在此处找到参数:

1686903876836

颜色编码的参数按钮

转换器上的参数按钮采用颜色编码,以反映设置的状态。

蓝色参数按钮表示已根据需要检查和修改转换器参数,并且转换器已准备就绪。

1686904452441

黄色参数按钮表示尚未检查默认参数。转换器可以在这种状态下使用,但结果可能无法预测。

1686904510682

技巧:如果参数编辑器窗口打开,那么很少会看到黄色图标,因为转换器的参数会自动打开并假 定要进行检查。如果该窗口打开,您应该确保检查它以确保您不会错过设置所需的参数。

红色参数按钮表示至少有一个参数,FME无法提供默认值。在使用转换器之前,必须为参数提供一个值。

1686904677017

转换器端口

转换器不仅没有单个输入和输出,还可以有多个输入端口,多个输出端口或两者。 此2DForcer转换器具有单个输入和输出端口。

1686904817969

此Clipper具有多个输入和输出端口。请注意,并非所有这些都是 - 或需要 - 连接。

1686904848528

这个Inspector只有一个输入端口……

1686904866185

…而这个Creator只有一个输出端口!

1686904880912

转换器属性

单击转换器输出端口的下拉箭头以查看退出转换器的所有属性。此列表包括转换器中应用的所有更改。

1686904993794

此要素可以显示在转换器中创建的,丢失的或以其他方式转换的属性。

转换器并行

“流”是通过在工作空间中的连接表示的数据的流程。FME中的一个关键概念是能够在工作空间内拥有多个并行流。

多个流

当用户需要以多种不同方式处理相同数据时,多个流非常有用。工作空间作者可以根据需要 将一个流转换为多个,或将多个数据流合并为一个:

1687154208931

在这里,创建三个数据流,每个数据流分别处理,然后组合回一个流。

创建多个流

可以以多种方式创建多个数据流。有时,具有多个输出端口的转换器(Tester转换器就是一个 很好的例证)将使用几种可能的输出流来划分(或过滤)数据:

1687154541738

这里数据分为两个流,其中一个流与任何东西都没有连接。

此外,只需从单个输出端口进行多个连接即可复制完整的数据流。实际上,它为每个连接创建一组数据:

1687154614173

这里FME读取8个要素,但由于存在多个连接,因此会创建多个数据副本

将多个流组合在一起

当多个流连接到同一输入端口时,不会发生合并。数据简单地聚合到单个流中。这通常被称为联合。

这里,三个数据流汇聚成一个写模块要素类型:

1687154793664

没有合并发生; 数据只会聚合到输出数据集中的12个不同要素中。可以把它想象成三管水排入一个容器。

要进行实际的数据合并,需要使用特定的转换器,例如FeatureMerger或FeatureJoiner。

常用转换器

属性重命名 —— AttributeManager/AttributeRenamer

通过添加、重命名、复制、删除和重新排序来更改多个属性。将新属性、现有属性和已修改属性的值设置为常量、属性值、条件、表达式和参数的任意组合。

1686906426310

技巧:如果先编写了写模块,相关属性名会出现在列表中,因为它已存在于写模块模式中。如果在编辑写模块模式之前完成了此步骤,则必须在此对话框中手动输入新的属性名称。

测试 —— Tester

在这个要素上评估一个或多个测试,并根据测试结果路由到该要素

1687143817976

设置过滤参数

1687143836799

技巧:测试是针对DogParks = N因为我们想要保留这些要素,并且它是连接的Passed端口。如 果测试是DogParks = Y,那么Failed端口将是连接的端口。

过滤的要素可以输出到日志 —— Logger转换器

1687143664323

Logger转换器将添加到工作空间。此转换器将所有传入要素记录到日志窗口:

1687144200039

通过此方法插入的Loggers以以下方式命名 - 并在日志中报告 - 它们连接的输出端口,此处为 Tester_Failed。

1687145034262

计算面积 —— AreaCalculator

计算多边形区域,并将值储存到一个属性当中

1687153216261

StatisticsCalculator

基于传入要素的指定属性或一组属性计算统计信息

1687153239293

不需要的值直接清除掉

StringConcatenator

字符串连接器

构造一个字符串以供其他地方使用

连接任意数量的属性、用户参数和/或常量的值,并将结果存储在新属性中。

1687156596451

LabelPointReplacer

用标签点替换特征的几何图形。

1687156529128

许多参数字段(如Label Height)可以设置为常量值(通过键入)或通过单击下拉箭头并 选择属性值设置为属性。 并且 - 您很快就会看到 - 也可以直接在转换器设置中构造参数值

要素合并 —— Dissolver

Dissolver参数将使用公共属性值合并所有要素

通过删除公共边界以创建更大的面积来分解面积特征。可以合并输入属性。

1686887031986

创建转换器方式:

单击连接Reader Feature Type和Writer Feature Type的深色线。开始输入“Dissolver”一词,当您看到Dissolver转换器出现在列表中时,双击它以将其放入工作空间。

关于添加转换器的一个很好的建议,请参阅有史以来十大FME技巧列表中的#5

书签

通过选择全部转换器并单击工具栏上的“书签”或按Ctrl + B键对转换器执行相同操作。为书签指定您选择的名称,以 描述正在执行的操作 。

数据格式

Formatpostfixdescription
Esri Shapefile.shp .shx .dbf .prj这些文件必须同文件名并放在同一个目录下
MapInfo TAB(MITAB).tab就是一个数据集(.dat/.id/.map/.tab)
GeoJSON (Geographic JavaScript Object Notation).geojson/.json
Esri Geodatabase (File Geodb Open API).gdb(文件夹)注:若arcGIS不识别.gdb文件夹,是因为文件损坏,可能是.gdb文件夹内缺少gdb文件导致(这个文件是gdb的定义文件)
GML (Geography Markup Language).gml
GeoTIFF (Geo-referenced Tagged Image File Format).tif
Google KML.kml
GPS eXchange Format (GPX).gpxGPX格式不会在数据集内记录其坐标系

相关文件


FME入门
https://hanke-janson.github.io//blog/2025/05/13/FME入门/
作者
雾月山河
发布于
2025年5月13日
许可协议