GISDK
GISDK
GISDK的全稱是Geographic InformationSystem Developer’s Kit (GISDK™) ,即為地理信息系統開發工具。Caliper公司的主要產品TransCAD, TransModeler和Maptitude均包含了GISDK二次開發工具。
GISDK由兩部分組成:Caliper Script編程語言和用於應用程序編譯和測試的交互開發工具。Caliper Script編程語言由編譯器、調試器和運行工具箱組成。CaliperScript既囊括了C語言的簡潔,又繼承了VB語言的通俗,是一種功能強大、使用靈活的編程語言。它提供了一條訪問Caliper主要產品程序和數據的通道,用C或 Fortran編寫的程序代碼可以混合在GISDK 代碼文件中,而且具有良好的兼容性。
為了易於學習和交流,Caliper Script語言也稱GISDK語言,本教材不再強調兩者的內在區別。GISDK語言的語法在Caliper所有產品中一致,但在不同產品中,所擁有的函數庫會略有不同。本教材以Caliper最主要的產品TransCAD為例,深入介紹GISDK的功能及函數。
TransCAD中包含了1300多個GISDK函數,其中GIS部分函數全部由Maptitude中繼承而來,其餘均為交通建模型相關函數。通過應用GISDK函數,通過指令自動重複執行TransCAD所有的交互窗口功能,也可以根據項目需要擴展和定製TransCAD中沒有的功能。運用GISDK可以對TransCAD進行多方面的二次開發,其中通過創建Add-ins嵌入方式,來擴展或自動重複執行宏命令是適合非編程專業用戶進行二次開發的常用方法。
GISDK的特點有:
(1)提供了非常完善的函數,使得開發非常方便;
(2)可利用任何文本編輯器來書寫程序代碼;
(3)通過嵌入方式可擴充TransCAD/Maptitude/TransModeler的功能;
(4)在TransCAD中提供Debug調試器,可快速定位錯誤;
(5)可以通過.NET語言訪問其Dll的函數庫;
(6)如Excel錄製宏一樣,部分批處理可以通過錄製而得到程序代碼;
(7)可建立菜單、對話框、工具條等用戶自定義界面;
(8)不能脫離Caliper的核心DLL而單獨運行。
GISDK可以建立和管理諸如表、地圖、地圖要素、窗口、選擇集以及工具、對話框、工具條等用戶界面。如果您有開篇提到的各種想法,GISDK正好可以幫助您自定義和擴展TransCAD的功能,而GISDK的主要實現功能包括:
1. 嵌入程序(Add-ins),可以擴展TransCAD的功能或者自動重複操作
利用Add-ins嵌入方式,用戶可方便地使用現有的軟體功能,可以增加 GI S引 擎的新功能,或者創建 自己 的應用程序連接器。而且Add-ins嵌入程序可以毫無限制地在 TransCAD用戶之間自由使用。Add-ins是最容易的GISDK二次開發,其本質是在TransCAD強大的功能基礎上,再加上自己定製的一些功能,其實現並非脫離TransCAD平台,而是在此平台上添加功能。此嵌入程序應用最為廣泛。
比如選擇把停車位有10個的小區選擇出來,你會覺得可以做一個選擇集,但如果停車位從1-500個的小區依次選出來,你就得做500次選擇集,這對你來說,是不是成了一個不可能完成的任務了。而在做高級交通分析的過程中,這類似的情況會經常遇到。其實,有了GISDK,只需那麼幾行代碼,就可以實現這重複的選擇集功能;而且,這個過程是可以不斷重複。
此外,TransCAD錄製得到的宏,往往也是通過Add-ins的形式進行重複操作。
2. 自定義應用程序(Custom application)
用於擴展或者替代標準用戶界面,進行自定義功能和操作。利用自定義界面功能,可以修改TransCAD的界面,增加或減少TransCAD原有的菜單或工具欄功能,使界面更為簡潔。
3. 以批處理模式
和Excel的宏錄製功能一樣,GISDK的交通模型部分代碼,也可以通過錄製獲得。在TransCAD的界面操作中,可以設定錄製宏功能,操作完成後,自動生成代碼,在批處理模式下,僅需要修改小部分代碼,即可實現模型功能的自動化。這在測試模型過程中,應用較為廣泛。
批處理模式,沒有獨立的對話框,必須依賴於TransCAD方能運行。
4. COM組件服務程序
以Automation Server的COM方式訪問TransCAD ,以在您的應用程序上添加製圖和交通運輸分析功能。
運用COM模式訪問TransCAD,在運行GISDK代碼的同時,TransCAD也在後台運行,此模式效率較低,但開發較為簡單,可以在Visual Basic等開發語言,載入COM組件即可訪問GISDK語言。
5. 通過.Net方法訪問TransCAD的GISDK函數DLL動態連接庫
利用.net語言,開發設計自己的用戶界面,包括菜單,工具欄和對話框,在需要GISDK功能的地方,通過.Net方法,靈活地訪問GISDK的函數庫,實現GIS功能和交通模型功能。這在設計更為複雜的軟體系統,交通模型僅為此軟體系統中的一部分,在這裡情況下,尤為有用。
利用.Net方法開發運用程序,是未來的發展趨勢。
6. 矩陣動態鏈接庫(Matrix DLLs)
GISDK包括了強大的矩陣運算功能,C, C++, FORTRAN,and Java等語言可以通過矩陣動態鏈接庫,來方便地訪問這些運算功能。
Caliper公司為了使其系列軟體的一致性,開發了自成體系的GISDK語言。其語言核心的一系列用於在GIS中的函數庫。這些GISDK函數庫,TransCAD,Maptitude和TransModeler均可以訪問。所以一個平台核心,多種應用程序的體系,就是這樣形成的。
GISDK工作機理
· 基礎平台,是所有Caliper軟體的基礎,包含了封裝的Geographic Information System (GIS)核心功能和資料庫管理系統;這個核心用來管理地圖和進行各種交通分析。基礎平台用一個可執行文件(如tcw.exe)和一系列的動態鏈接庫(Dlls)以及其它一些必要文件組成。
· 用戶界面,即是一整套的菜單,對話框,工具欄和工具箱組成。它是利用GISDK語言來設計的。界面與基礎平台功能的連接,也是通過GISDK的函數庫來進行的。例如TransCAD的UI database名字為gis_ui,它由下列的文件共同組成:gis_ui.dbd, gis_ui.1, gis_ui.2, gis_ui.3, gis_ui.4,gis_ui.5, and gis_ui.6
基礎平台和用戶界面相輔相成,不可分割,缺少它們之間任何一方,可執行文件均不能運行。