日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

64位FME Server 与32位FME Desktop协同处理MDB格式数据

發布時間:2023/12/20 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 64位FME Server 与32位FME Desktop协同处理MDB格式数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:ZJ

在FME所支持的數據格式中,部分數據格式受限于軟件位數,例如常見的GIS數據格式包含SHP(Esri Shapefile)、GDB(File Geodatabase)、MDB(Personal Geodatabase),其中SHP和GDB格式數據采用32位FME和64位FME都可以讀寫,但是MDB格式只能通過32位的FME進行讀寫。

那么,當用戶提供的格式是MDB格式數據,輸出的結果也需要是MDB格式數據時,用傳統的32位程序對大量數據進行空間計算時,內存的使用效率不高,FME運行過程中出現MDB內存超限的錯誤情況,因為在大量數據處理時,32位程序對內存的使用最大只能到4G,但是64位程序對內存的使用遠大于32位程序。

針對以上情況,我們在實際運行過程中發現,讀寫MDB格式的數據所需要的內存并不多,但是MDB數據讀取后,在任務過程中進行大量空間計算等操作時,所需要的內存就會增加。因此我們可以考慮用在通過64位的FME去調用32位的FME把MDB數據轉為GDB數據,再由64位FME讀取GDB數據,數據處理完成后輸出到GDB格式再由32位的FME轉為MDB格式。文字有點兒繞,看下圖:

?

簡而言之,主要分為以下幾步:

1、用64位FME軟件調用32位FME軟件將MDB轉為GDB數據;

2、用64位FME軟件讀取GDB數據進行數據處理,最后輸出GDB數據;

3、用64位FME軟件調用32位FME軟件將GDB轉為MDB數據。

以上過程在只通過FME Desktop產品進行數據處理時,則不需要這么復雜,直接安裝不同位數的FME軟件即可分步執行;但當使用FME Server來提供服務又不能在同一臺計算機中同時安裝不同位數的FME Server時,如何來實現以上步驟呢?

第一步:軟件環境準備

  • 安裝ArcGIS軟件,FME讀寫MDB需要安裝ArcGIS軟件;

  • 安裝64位FME Server,本文示例安裝版本FME Server 2019.1.3.1 Build 19643-win64

  • 安裝32位FME Desktop,本文示例安裝版本FME(R) 2019.1.3.1 (20191019 - Build 19643 - WIN32)

  • 第二步:制作模板

    1、制作MDB轉GDB模板

    利用32位FME Desktop制作一個通用型的MDB轉GDB模板,這個模板只需要做數據的讀取和數據的寫出操作,不進行任何空間或者屬性的處理。如下圖:

    ?

    同時,設置改模板的數據輸入參數和數據輸出參數,參數名可自行命名,本文如下:

    ?

    S_MDB參數為輸入源MDB數據;

    D_GDB參數為輸出臨時GDB數據。

    將該模板存放在某個目錄中,如“D:\Workspace\MDB2GDB.fmw” ,存放路徑可以自行指定,但最好不要有中文路徑,同時模板名稱最好不要用中文命名。

    2、制作GDB轉MDB模板

    利用32位FME Desktop制作一個通用型的GDB轉MDB模板,這個模板只需要做數據的讀取和數據的寫出操作,不進行任何空間或者屬性的處理。如下圖:

    同時,設置改模板的數據輸入參數和數據輸出參數,參數名可自行命名,本文如下:

    S_GDB參數為輸入源GDB數據;

    D_MDB參數為輸出臨時MDB數據。

    將該模板存放在某個目錄中,如“D:\Workspace\GDB2MDB.fmw”,存放路徑可以自行指定,但最好不要有中文路徑,同時模板名稱最好不要用中文命名。

    3、制作64位程序主模板

    根據程序的需要,我們設置一下參數內容,如下圖:

    “FME_EXE”為本機32位FME Desktop程序安裝路徑下的“fme.exe”,如“C:\apps\FME2019643\fme.exe”

    “GDB2MDB”為制作的GDB轉MDB模板本機存放路徑,如“D:\Workspace\GDB2MDB.fmw”

    “MDB2GDB”為制作的MDB轉GDB模板本機存放路徑,如“D:\Workspace\MDB2GDB.fmw”

    同時,在主模板中通過“SystemCaller”轉換器的來實現32位FME Desktop程序的調用,在“SystemCaller”轉換器中設置好執行語句,本文中調用模板的語法結構如下:“程序路徑<空格>模板路徑<空格>--參數名1<空格>參數值1<空格>--參數名2<空格>參數值2”,

    MDB轉GDB過程如下:

    “C:\apps\FME2019643\fme.exe D:\Workspace\MDB2GDB.fmw --S_MDB D:\Workspace\Data\SourceMDB.mdb --D_GDB D:\Workspace\Data\TempMDB2GDB.gdb”

    其中程序路徑,模板路徑,參數值均可通過參數傳遞,如下:

    “$(FME_EXE) $(MDB2GDB) --S_MDB @Value(_S_MDB) --D_GDB @Value(_D_TempMDB2GDB)”

    GDB轉MDB過程如下:

    “C:\apps\FME2019643\fme.exe D:\Workspace\GDB2MDB.fmw --S_GDB D:\Workspace\Data\TempGDB.gdb --D_MDB D:\Workspace\Data\Result_MDB.mdb”

    其中程序路徑,模板路徑,參數值均可通過參數傳遞,如下:

    “$(FME_EXE) $(GDB2MDB) --S_GDB @Value(_D_TempGDB) --D_MDB @Value(_D_MDB)”

    ?

    第三步:發布主模板服務并運行

    將制作的主模板發布到64位FME Server中運行,即可在一個任務中實現MDB數據在只有64位FME Server中處理的需求。

    注意,在利用“SystemCaller”轉換器的來實現32位FME Desktop程序的調用的過程中,如果“SystemCaller”轉換器中的“Exit Code Attribute”參數如果沒有設置,當調用失敗的情況下,后續的流程中是無法判斷“SystemCaller”轉換器是否執行成功,因此我們需要設置“Exit Code Attribute”參數,以便后續利用Tester等參數來進行過濾是否執行成功。

    根據幫助文檔,在“Exit Code Attribute”設置的屬性字段中如果屬性值為0,則“SystemCaller”轉換器執行成功,屬性字段中為非0時,則“SystemCaller”轉換器執行失敗。

    最后,大家在使用“SystemCaller”轉換器來執行模板時,如果被執行模板中的參數過多,不知道具體怎么寫執行語句時,可在主模板中通過“WorkspaceRunner”來調用模板,運行程序后可以在日志中查看到對應的“SystemCaller”執行語句,如下圖,然后根據具體的參數進行修改即可。

    ?

    ?

    總結

    以上是生活随笔為你收集整理的64位FME Server 与32位FME Desktop协同处理MDB格式数据的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。