1. 程式人生 > >批處理(一):使用WorkspaceRunner進行批處理

批處理(一):使用WorkspaceRunner進行批處理

原文連結:

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.fmwWorkspaceRunner.fmw中讀模組/寫模組資料集的位置更改為你解壓後的BatchProcessingData目錄。同樣更改WorkspaceRunner轉換器。

三、說明

3.1 工作空間1: PolygonBuilder.fmw

1. 新增一個 MapInfo MIF/MID 讀模組

在空白工作空間中新增一個MapInfo MIF/MID 讀模組,對於資料集,選擇資料夾中的任意一個你打算批處理的檔案。例如,新增資料集parcel_k24.mif

。在新增讀模組時,確保你在“Workflow選項”那裡選擇了“Single Merged Feature Type(合併要素類)”,這樣可以確保資料夾中的所有資料集被處理。新增讀模組在畫布中後,再開啟引數對話方塊,在Format Attributes標籤欄,勾選fme_basename

https://knowledge.safe.com/storage/attachments/13652-mifreader.png

MapInfo MIF/MID 讀模組,設定Workflow Options Single Merged Feature Type

https://knowledge.safe.com/storage/attachments/13653-formatattributes.png

MapInfo MIF/MID 讀模組引數,在Format Attributes 欄,勾選fme_basename

 

2. (可選) 新增GeometryFilter轉換器

MapInfo MIF檔案可以包含多種幾何型別,在該示例中,我們只需要線。在畫布中新增一個GeometryFilter轉換器,在引數框中設定Geometry Types to FilterLine(線)。

3. (可選) 建立多邊形

現在過濾出了線,我們需要把線連線起來建立多邊形。新增一個AreaBuilder轉換器,在引數框中設定Group Byfme_basename,其他引數保留預設。

https://knowledge.safe.com/storage/attachments/13654-areabuilder.png

通過 fme_basename分組建立多邊形

 

4. 寫出到 Shapefile

新增一個Shapefile寫模組,設定Dataset為你輸出資料夾的位置。設定Shapefile DefinitionShapefile定義)為Automatic。當出現Feature Type(要素類)對話方塊時,點選ok。將寫模組連線到AreaBuilder。連線後再次開啟寫模組引數對話方塊,更改Shapefile Namefme_basename並設定GeometryShape_Polygon

https://knowledge.safe.com/storage/attachments/13655-shapefilewriter.png

為了扇出資料集,設定Shapefile Name fme_basename

5. 儲存並關閉工作空間

你可用測試工作空間的執行結果是否正確。我們將使用另外一個工作空間來執行此工作空間。所以,現在你只需要把它儲存到你指定的位置,然後關閉它。接著建立工作空間2

https://knowledge.safe.com/storage/attachments/13656-polygonbuilderworkspace.png

工作空間PolygonBuilder.fmw,將使用WorkspaceRunner執行該工作空間

3.2 工作空間2: WorkspaceRunner.fmw

1. 新增Directory and File Pathnames 讀模組

在空白工作空間中,新增Directory and File Pathnames 讀模組,設定dataset為包含待批處理的所有MapInfo MIF檔案的目錄,該示例中設定為Data資料夾。

https://knowledge.safe.com/storage/attachments/13657-pathreader.png

使用Directory and File Pathnames讀模組,讀取包含所有MIF檔案的資料夾

 

2. 新增WorkspaceRunner 轉換器

在畫布中新增WorkspaceRunnerWorkspaceRunner將執行另外一個工作空間。在引數框中,設定FME Workspace為你工作空間1中建立的工作空間,在這個示例中為PolygonBuilder.fmw。一旦你選擇了工作空間,底部的引數將填充,我們需要更改引數值確保它們正確。更改Source MapInfo MIF/MID File(s)為屬性path_windows(注意:確保WorkspaceRunner連線到Directory and File Pathnames 讀模組,這樣才能看到引數)。然後更改Destination Esri Shapefile資料夾為你的輸出資料夾。

https://knowledge.safe.com/storage/attachments/13658-workspacerunner.png

設定FME Workspace PolygonBuilder.fmw,更改 Source MIF File path_windows

 

3. 連線轉換器Loggers

為了記錄批處理中可能出現的錯誤,在WorkspaceRunner右鍵點選Connect Loggers。執行工作空間,然後在輸出資料夾中確保檔案處理完畢。

https://knowledge.safe.com/storage/attachments/13659-workspacerunnerworkspace.png

WorkspaceRunner.fmw, Logger連線到 WorkspaceRunner

WorkspaceRunner.fmw轉換日誌,顯示PolygonBuilder.fmw工作空間中正在轉換一個MIF檔案。

WorkspaceRunner在進行轉換時,啟動了多個FME程序——每個檔案一個程序。WorkspaceRunner可以設定為等待每個程序完成後再開啟下一個程序,這樣每次只有一個新的程序。在WorkspaceRunner中有一個設定最大併發程序數(Maximum Number of Concurrent Processes)的引數。這將限制併發執行的工作空間數量為指定的值。如果進行指定,這個值必須為1-7的整數。指定的值包括執行WorkspaceRunner的程序。例如,如果值被設定為7WorkspaceRunner只會啟動6個額外的FME併發程序。可以通過工作管理員中顯示的fme.exe程序進行確認。

當執行WorkspaceRunner.fmw工作空間時,Windows 工作管理員顯示運行了3 fme.exe 例項

帶有已轉換Shapefiles的輸出資料夾