FME2011中自定義轉換器的迴圈問題(二)

2021-08-21 07:20:08 字數 2589 閱讀 5819

繼續fme2011中自定義轉換器的迴圈問題(一)

中所述,再舉乙個帶自定義轉換器的例子。

資料如下圖,現在每隔五百公尺向左生成與垂直的線平行等長的線,直到不再與曲線相交。求出每條直線與曲線的沒出的交點。

要解決這一問題,只要對直線像左做乙個500公尺的緩衝,計算這個生成的直線與曲線是否有交點,把交點輸出,然後再對緩衝後生成的這條直線再次在緩衝……直到沒有交點為止。

我所做的第乙個自定義迴圈轉換器如圖:

發現迴圈只執行了一次。經過檢查發現問題在於variablesetter和variableretriever這對轉換器。下面先簡要介紹下這兩個轉換器:

variablesetter

建立並設定乙個指定的變數到指定的值。

這個變數稍後會取回到乙個使用

variableretriever

轉換器設定的屬性中。

'variable scope'

引數指定這個變數的範圍是全域性的還是區域性的。

globally-scoped

變數可以通過轉換器

variableretriever

在工作空間的任何位置獲取,而

locally-scoped

變數只能在建立它們的自定義轉換器中獲取。

variableretriever

(之前這個轉換器被稱作

variablerasterclassifier

)讀取指定的變數,把它放入指定的屬性中。

這個變數之前必須使用

variablesetter

轉換器進行了設定。對這對轉換器沒有深入研究,不過發現對於從同一資料來源或同一轉換器流出的兩個要素流,之後的處理是有順序的(具體的規則還沒有找到),如圖:

creator後面連線的三個轉換器從上到下依次為:attributecreator、areaonareaoverlayer和dissolver,attributecreator後面的variablesetter轉換器設定_value值為1,areaonareaoverlayer後面的variablesetter轉換器設定_value值為2,則執行後發現dissolver後面的variableretriever轉換器讀取的_value值為1;而交換

areaonareaoverlayer和dissolver後面的轉換器,即把variableretriever連線到

areaonareaoverlayer,把variablesetter連線到dissolver後,則發現variableretriever轉換器讀取的_value值為1;如果把

attributecreator和dissolver後的轉換器再交換,即把variableretriever連線到

attributecreator,把variablesetter連線到dissolver後,則發現variableretriever轉換器則發現沒有讀取到_value值。這說明要素流路線的優先順序從高到低為:

attributecreator、areaonareaoverlayer和dissolver。

上面我的工作空間中沒有進行迴圈就是因為沒有獲取到_value。

另外要素流的優先順序可能還跟要素之間的連線的早晚有關,如圖:

兩個自定義轉換器一模一樣,不過最後連線要素間的線不同(用紅色標識的線)。最後乙個tester的passed埠表示獲取到了_value,而failed埠則表示沒有獲取到_value。

繼續上面的例子:工作空間修改為後則可以完成迴圈:

我們可以看到找到了所有交點。

不過我在自定義迴圈的轉換器中新增visualizer後會報錯(其中取交點是自定義轉換器的名稱):

個人感覺,能用其它轉換器來替代阻塞轉換器會更好,如下圖,使用兩個bound***tractor轉換器,根據x的範圍來做迴圈更高效方便。免去了設定迴圈次數的麻煩(設定的次數太多浪費時間,次數太少會有遺漏)。

自定義轉換器

1.匯入轉換器基類 在 flask 中,所有的路由的匹配規則都是使用轉換器物件進行記錄 2.自定義轉換器 自定義類繼承於轉換器基類 3.新增轉換器到預設的轉換器字典中 4.使用自定義轉換器實現自定義匹配規則 from flask import flask 1.匯入轉換器基類 在 flask 中,所有...

自定義轉換器

自定義轉換器 from werkzeug.routing import baseconverter 自定義正則轉換器 class regexconverter baseconverter def init self,url map,args super regexconverter,self ini...

hutool 中自定義轉換器

hutool中型別轉換最早只是乙個工具類,叫做 convert 對於每一種型別轉換都是用乙個靜態方法表示,但是這種方式有乙個潛在問題,那就是擴充套件性不足,這導致hutool只能滿足部分型別轉換的需求。為了解決這些問題,對hutool中這個類做了擴充套件。思想如下 通過這種方式,實現類靈活的型別轉換...