批處理(一):使用WorkspaceRunner進行批處理
原文連結:
一、介紹
WorkspaceRunner轉換器從一個工作空間中執行另一個工作空間。結合Directory and File Pathname讀模組,它可以用於批處理。
使用FMEServerJobmitter替換WorkspaceRunner,可以在FME Server中實現同樣的功能。不推薦向FME Server釋出包含WorkspaceRunner
在這個示例中,使用者有一個構建多邊形的工作空間,該工作空間需要在儲存在包含多個MIF/MID資料集的單個資料夾上使用。可以通過建立一個包含WorkspaceRunner轉換器的工作空間來完成。
二、下載
BatchProcessingData.zip (包含 MapInfo MIF 檔案和一個輸出資料夾)
PolygonBuilder.fmw (工作空間1 從MapInfo MIF 檔案中構建多邊形)
WorkspaceRunner.fmw
注意: 確保你把PolygonBuilder.fmw和WorkspaceRunner.fmw中讀模組/寫模組資料集的位置更改為你解壓後的BatchProcessingData目錄。同樣更改WorkspaceRunner轉換器。
三、說明
3.1 工作空間1: PolygonBuilder.fmw
1. 新增一個 MapInfo MIF/MID 讀模組
在空白工作空間中新增一個MapInfo MIF/MID 讀模組,對於資料集,選擇資料夾中的任意一個你打算批處理的檔案。例如,新增資料集parcel_k24.mif
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執行該工作空間
3.2 工作空間2: WorkspaceRunner.fmw
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的輸出資料夾