自定義轉換器3

2021-08-21 12:41:25 字數 2139 閱讀 6442

自定義轉換器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 中,所有的路由的匹配規則都是使用轉換器物件進行記錄 自定義轉換器 自定義類繼承於轉換器基類 新增轉換器到預設的轉換器字典中 使用自定義轉換器實現自定義匹...