繼續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中這個類做了擴充套件。思想如下 通過這種方式,實現類靈活的型別轉換...