1. 程式人生 > >在 Workbench中提取和使用日誌資訊

在 Workbench中提取和使用日誌資訊

原文地址:

https://knowledge.safe.com/articles/849/how-to-extract-and-use-log-information-in-workbenc.html?smartspace=debugging-tips

一、下載

二、使用Python FMELogFile 物件

在啟動和關閉Python(位於Workbench中工作空間引數-Advanced中)中可以使用FMEObjects Python API

,與PythonCallerPythonCreator 一樣。其中一個可用的物件是FMELogFile,它提供了訪問Workbench日誌的功能。多數FMELogFile方法用於在日誌中新增資訊,但是setCallBack方法允許你傳送所有日誌資訊的副本到你的函式中。這使你可以在建立日誌資訊時對其進行解析,並在允許時將這些訊息中的資訊傳遞給工作空間中的要素。

下面三個例子展示了在工作空間執行期間日誌資訊的一些可能的用途。
 

三、應用案例

3.1 促進對失敗的警告

一個使用者發現他的一些Microstation DGN檔案被中斷。通常,FME遇到中斷檔案只會在日誌中釋出警告,但不會轉換失敗。使用者希望截斷的檔案發生失敗,以便與正確的檔案區分開

  • FailTruncated工作空間中的Startup Python對每個日誌檔案搜尋截斷的DGN檔案警告,找到後設置一個標記。
  • 所有DGN要素讀取完成後, Creator轉換器在流程結束時,建立一個新的要素,
  • 把新要素髮送到PythonCaller,通過程式碼檢查是否設定了中斷標記。如果有標記,工作空間終止。
  • PythonCaller輸出連線到NULL寫模組,該寫模組設定為與工作空間中的第一個寫模組。
  • 第二個DGN寫模組直到工作空間完成才進行寫出,所以如果工作空間終止則不會有檔案寫出。

3.2 提取檔案或表的元資料

Workbench讀模組通常在日誌中包括檔案或表的元資料,但是不會把資訊新增到從檔案中讀取的要素中。

DGNMetadata示例從資料夾中的所有Microstation DGN檔案中提取Global OriginMasterSub單元名稱和比例,並將此資訊輸出到Excel檔案。

  • 工作空間中的Startup Python使用正則表示式從讀模組日誌資訊中提取Global Prigin和工作空間單位引數,並把它們儲存到global列表中。
  • 每個DGN檔案只讀取一個要素(把讀模組引數- Advanced - Max Features to Read 設定為 1)。
  • 使用FeatureHolder確保後續處理之前,讀取了所有DGN檔案。
  • PythonCaller使用multi_reader_id 通用屬性把每個要素連線到它的元資料。這個屬性包含了每個檔案的讀取順序,並對應於元資料Python列表的索引。
  • 重新命名屬性,然後將要素寫出到Excel

 

輸出:

3.3 儲存中間轉換器的引數

AffineWarper轉換器通過輸入的控制向量要素計算了一個最佳擬合的仿射變換,然後將它們應用到observed埠的要素中並輸出。計算的引數在日誌中被記錄,但是沒有儲存在轉換的要素上。GetAffineParameters示例提取這些引數到CSV檔案中供選擇使用。

  • CSV檔案中讀取資料並轉換為向量
  • 向量傳送到AffineWareper並用於轉換虛擬點
  • 工作空間中的Startup Python使用正則表示式從AffineWarper日誌資訊中提取仿射變換引數
  • 仿射變換完成後,在程序後使用Creator_2 轉換器建立一個新的要素
  • PythonCaller將仿射引數新增到要素,然後寫入到CSV