教程(一) Python和FME基礎

2021-10-19 23:39:46 字數 2283 閱讀 5259

python

程式語言,以及

python

在fme

中的主要應用,即啟動

python

指令碼,指令碼化引數,

pythoncaller / pythoncreator

轉換器和關閉

python

指令碼等。

而本文是五篇系列文章中的第一部分,將向您系統地介紹python程式語言,以及在

fme workbench

中使用python

的基本資訊,旨在幫助您開始接觸和使用最基本的

python

與fme

。python是一種可以在fme中使用的程式語言,它的主要功能在於可以在fme執行之前或之後完成新的任務,或在fme中執行fme工具和轉換器無法完成的任務*。例如,您可以使用python指令碼在資料進行轉換之前或之後移動該資料。

在fme中4種常見的使用python的情況:

(1)啟動python指令碼

(2)指令碼化引數

(3)pythoncaller和pythoncreator轉換器

(4)關閉python指令碼

(*注意:fme中有許多轉換器可以執行幾乎所有您可以想到的任務,而無需借助指令碼。所以您在考慮編寫python指令碼以在fme中執行某些操作前,可以先查詢是否有現成的轉換器可以直接使用。)

fme針對不同的系統將使用不同的直譯器。在windows系統環境下,除非另有說明,否則fme將安裝自己的python直譯器,供fme在windows上執行的所有python指令碼使用。而在mac和linux系統上,fme則會使用系統python直譯器。

如果您希望fme使用其他python直譯器的話,您可以在fme workbench選單中的「工具」> 「fme選項」>「轉換」下自定義選擇您的fme要使用哪個python解釋程式進行翻譯。可供選擇的直譯器(如圖)包括:fme自己的python直譯器,esri arcgis直譯器或自定**釋器等。

fme與許多版本的python均相容,您可以通過「工作台導航」視窗中的「 python相容性」引數指定對python版本的相容性級別(如圖)。例如,python 3.0中引入了對python 2.x不向後相容的重大更改,因此通過該引數為您的工作區設定最佳相容級別很重要。

值得注意的是,從fme 2019開始,python 2.7將是windows平台的可選安裝元件,需要使用者自定義是否需要安裝。

(注意:工作區「導航器」視窗中的「 python相容性」引數應優先於「 fme選項」中的「 python直譯器」設定。)

fme啟動和關閉指令碼中提供了許多與fme相關的python變數,例如,fme.status變數在轉換結束時為true或false,取決於工作空間的成功或失敗,而這些變數可在fme模組中通過語句import fme來進行訪問。

此外,「啟動」和「關閉」 python指令碼的fme變數的完整列表可以在workbench中的「啟動」和「關閉」 python指令碼的「幫助」頁面上找到。

與fme相關的變數之一,fme.macrovalues ,是關於執行工作區時已知的每個fme引數的字典。其中,字典由引數名稱進行索引並儲存引數值。

這些引數值通常會在python指令碼中被使用,例如,當您想知道讀模組或其他使用者自定義引數中使用的源資料集的檔案路徑時,您就可以通過訪問該變數fme.macrovalues 獲得。

例如,如果要獲取autocad格式讀模組的源資料集引數的值,並且該引數名為sourcedataset_acad,則可以像這樣在python中訪問此引數:

import fme

sourcedataset = fme.macrovalues['sourcedataset_acad']

我們還可以通過建立指令碼化引數,並基於指令碼的返回值來設定fme引數。當我們執行工作空間時,指令碼引數將在啟動指令碼之前按照在導航器視窗中的出現順序執行。

通過使用fme objects python api中的fme類和方法,可以在python指令碼中使用fme的許多核心功能。例如,您可以通過api訪問fme日誌檔案,fme引數或使用任何fme方法,例如getarea或reproject等。而要在python指令碼中使用fme物件,您將需要使用以下語句匯入fme物件:

import fmeobjects
您可以在這裡找到fme objects api的相關文件:

您可以參閱這裡獲取有關如何使用fme物件的指導:

您可以在這裡找到有關fme objects python api的更多資訊:

您可以在這裡檢視關於2023年6月python網路研討會的記錄:

教程(二) FME中啟動Python指令碼

1 前言 本文是五篇系列文章中的第二篇,希望幫助您開始使用基本的python和fme。在這篇文章裡我們介紹了關於如何在fme工作空間中使用 啟動python指令碼 功能,並給大家準備了兩個示例。第乙個示例是在執行轉換之前使用 啟動python指令碼 功能複製檔案 第二個示例是將自定義 使用者定義 訊...

python基礎教程筆記(一)

1.python中最基本的資料結構為序列sequence。序列中的每個元素都有編號,即其位置或索引。2.列表和元組。3.列表可以修改,元組不可以修改。4.索引 切片 相加 相乘和成員資格檢查 適用於所有序列。5.indexing 當你使用負數索引時,將從右開始往左數,因此 1是最後乙個元素的位置。6...

python基礎教程 dict和se

python內建字典 dict,全稱dictionary,在其他語言中稱為map,使用鍵值對儲存。ex d d xiaoli 95 直接定義鍵值對 ex d adm 67 d adm 67 判斷key是否存在 ex in 判斷 theme in d false get方法 d.get theme d...