自定義轉換器1
自定義轉換器2
自定義轉換器1對自定義轉換器進行了基礎內容的介紹,自定義轉換器2介紹了fme中自定義轉換器內部屬性和外部工作空間屬性的關聯。
本文主要介紹fme中自定義轉換器的迴圈和擴充套件。
功能:實現數字累加
圖1 自定義轉換器迴圈
思路是建立兩個屬性變數:1)i用來記錄當前累加到哪乙個數字2)leijia 用來記錄當前累加結果,然後以條件i<50來進行迴圈,最終得到結果。
圖2 使用自定義轉換器
會用到fme的工具有:
圖3 用到的fme選單項
其中transformer input是為自定義轉換器增加乙個入口,如我們圖1 的input_2就是通過該選單項新增的;tranformer loop則是為轉換器新增乙個迴圈出口,該出口需要指定乙個入口即迴圈到那個位置,此處我們設定為input_2。
本文將轉換器的擴充套件主要是使用已有的轉換器pythoncaller來製作的自定義轉換器,當然更高階的開發可以通過c#或者plugin,這種方式我從未嘗試過也未見到過別人嘗試過,所以此處無法作介紹。
fme提供了對指令碼語言python和tcl的支援,主要通過pythoncaller和tclcaller來執行指令碼,我們可以通過指令碼語言來製作自定義轉換器,擴充套件fme的功能,本文也只是介紹使用python作為指令碼語言。
圖4 pythoncaller類庫
比如我們在indices下搜尋「getattributee」
圖5 類庫搜尋
就可以找到獲取要素屬性的方法getattribute()。
下面仍以累加的例子使用指令碼實現:用while迴圈做累加,更加簡單,當然中間用到兩個fmeobject的方法分別是getattribute()獲取屬性值setattribute()新建屬性並指定值。
指令碼如下:紅色斜體是我新增的。
import fmeobjects
# template function inte***ce:
def processfeature(feature):
pass
# template class inte***ce:
class featureprocessor(object):
def __init__(self):
pass
def input(self,feature):
_max = feature.getattribute('_max')
i = 0
leijia = 0
while i <= int(_max):
leijia += i
i += 1
feature.setattribute('leijia',leijia)
self.pyoutput(feature)
def close(self):
pass
自定製轉換器如下:
圖6 自定義轉換器
自定義轉換器的使用同上:
圖7 使用自定義轉化器
fme本身的功能以足夠強大,其實使用迴圈和指令碼擴充套件的時候並不多,但fmeobjects提供了大量的方法,當大家在使用過程中感覺遇到瓶頸的時候不妨看下這些方法,或許會有幫助。
最近關於fme自定義轉換器的總結就到這結束了,當然還會有很多未曾提到的地方,畢竟作者水平有限,大家可盡情補充。
自定義轉換器
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...
Flask自定義轉換器
flask框架中自帶的轉換器 default converters flask框架中的轉換器的自定義,具體流程如下 匯入轉換器基類 在 flask 中,所有的路由的匹配規則都是使用轉換器物件進行記錄 自定義轉換器 自定義類繼承於轉換器基類 新增轉換器到預設的轉換器字典中 使用自定義轉換器實現自定義匹...