原文链接:
https://knowledge.safe.com/articles/1469/batch-processing-using-the-workspacerunner-1.html?smartspace=chaining-workspaces
WorkspaceRunner转换器从一个工作空间中运行另一个工作空间。结合Directory and File Pathname读模块,它可以用于批处理。
使用FMEServerJobmitter替换WorkspaceRunner,可以在FME Server中实现同样的功能。不推荐向FME Server发布包含WorkspaceRunner转换器的工作空间。该转换器将试图在FME Server外启动一个FME实例运行工作空间,这个FME实例需要额外的许可。
在这个示例中,用户有一个构建多边形的工作空间,该工作空间需要在存储在包含多个MIF/MID数据集的单个文件夹上使用。可以通过创建一个包含WorkspaceRunner转换器的工作空间来完成。
BatchProcessingData.zip (包含 MapInfo MIF 文件和一个输出文件夹)
PolygonBuilder.fmw (工作空间1 从MapInfo MIF 文件中构建多边形)
WorkspaceRunner.fmw (工作空间2使用WorkspaceRunner运行工作空间1)
注意: 确保你把PolygonBuilder.fmw和WorkspaceRunner.fmw中读模块/写模块数据集的位置更改为你解压后的BatchProcessingData目录。同样更改WorkspaceRunner转换器。
1. 添加一个 MapInfo MIF/MID 读模块
在空白工作空间中添加一个MapInfo MIF/MID 读模块,对于数据集,选择文件夹中的任意一个你打算批处理的文件。例如,添加数据集parcel_k24.mif。在添加读模块时,确保你在“Workflow选项”那里选择了“Single Merged Feature Type(合并要素类)”,这样可以确保文件夹中的所有数据集被处理。添加读模块在画布中后,再打开参数对话框,在Format Attributes标签栏,勾选fme_basename。
MapInfo MIF/MID 读模块,设置Workflow Options 为 Single Merged Feature Type
MapInfo MIF/MID 读模块参数,在Format Attributes 栏,勾选fme_basename
2. (可选) 添加GeometryFilter转换器
MapInfo MIF文件可以包含多种几何类型,在该示例中,我们只需要线。在画布中添加一个GeometryFilter转换器,在参数框中设置Geometry Types to Filter为Line(线)。
3. (可选) 创建多边形
现在过滤出了线,我们需要把线连接起来创建多边形。添加一个AreaBuilder转换器,在参数框中设置Group By为fme_basename,其他参数保留默认。
通过 fme_basename分组创建多边形
4. 写出到 Shapefile
添加一个Shapefile写模块,设置Dataset为你输出文件夹的位置。设置Shapefile Definition(Shapefile定义)为Automatic。当出现Feature Type(要素类)对话框时,点击ok。将写模块连接到AreaBuilder。连接后再次打开写模块参数对话框,更改Shapefile Name为fme_basename并设置Geometry为Shape_Polygon。
为了扇出数据集,设置Shapefile Name 为 fme_basename
5. 保存并关闭工作空间
你可用测试工作空间的运行结果是否正确。我们将使用另外一个工作空间来运行此工作空间。所以,现在你只需要把它保存到你指定的位置,然后关闭它。接着创建工作空间2。
工作空间PolygonBuilder.fmw,将使用WorkspaceRunner运行该工作空间
1. 添加Directory and File Pathnames 读模块
在空白工作空间中,添加Directory and File Pathnames 读模块,设置dataset为包含待批处理的所有MapInfo MIF文件的目录,该示例中设置为Data文件夹。
使用Directory and File Pathnames读模块,读取包含所有MIF文件的文件夹
2. 添加WorkspaceRunner 转换器
在画布中添加WorkspaceRunner。WorkspaceRunner将运行另外一个工作空间。在参数框中,设置FME Workspace为你工作空间1中创建的工作空间,在这个示例中为PolygonBuilder.fmw。一旦你选择了工作空间,底部的参数将填充,我们需要更改参数值确保它们正确。更改Source MapInfo MIF/MID File(s)为属性path_windows(注意:确保WorkspaceRunner连接到Directory and File Pathnames 读模块,这样才能看到参数)。然后更改Destination Esri Shapefile文件夹为你的输出文件夹。
设置FME Workspace为 PolygonBuilder.fmw,更改 Source MIF File为 path_windows
3. 连接转换器Loggers
为了记录批处理中可能出现的错误,在WorkspaceRunner右键点击Connect Loggers。运行工作空间,然后在输出文件夹中确保文件处理完毕。
WorkspaceRunner.fmw, Logger连接到 WorkspaceRunner
WorkspaceRunner.fmw转换日志,显示PolygonBuilder.fmw工作空间中正在转换一个MIF文件。
当WorkspaceRunner在进行转换时,启动了多个FME进程——每个文件一个进程。WorkspaceRunner可以设置为等待每个进程完成后再开启下一个进程,这样每次只有一个新的进程。在WorkspaceRunner中有一个设置最大并发进程数(Maximum Number of Concurrent Processes)的参数。这将限制并发执行的工作空间数量为指定的值。如果进行指定,这个值必须为1-7的整数。指定的值包括执行WorkspaceRunner的进程。例如,如果值被设置为7,WorkspaceRunner只会启动6个额外的FME并发进程。可以通过任务管理器中显示的fme.exe进程进行确认。
当运行WorkspaceRunner.fmw工作空间时,Windows 任务管理器显示运行了3个 fme.exe 实例
带有已转换Shapefiles的输出文件夹