畢業設計——第二章 系統總體設計(1)

孤劍發表於2006-06-25
如前所述,“排水GIS地理資訊系統”屬於專業系統,與公眾系統相比而言,公眾GIS系統使用者友好性是關鍵,而專業系統注重是專業只是的系統體現。專業系統設計時,必須考慮使用者的心理。比如:(1)操作簡單。雖說是專業軟體,但是主要使用物件是非計算機專業的人員操作,所以必須考慮軟體的操作簡潔、方便,並具有一定的趣味性,使使用者對該系統有信心和興趣;(2)在GIS原理和功能表達上,某些計算機術語應該通俗化,易於接受;(3)系統應該實時對使用者的操作做出響應,儘量縮短等待時間等等。因此,系統必須從介面設計、輔助幫助、螢幕動畫、資訊的動感表現、操作風格等方面滿足使用者的要求。
2.1系統功能要求
該系統要求的功能如下:
(1) 能夠在地圖上,分類、分割槽載入顯示排水管線及各種管件的電子地圖;
(2) 在地圖上完成對各站點和各種管線資訊的顯示、修改、增加、刪除;
(3) 實施輔助決策的管理功能系統實現[2]
2.2系統平臺選擇
2.2.1硬體平臺
由於本系統是屬於專業GIS系統,面對的使用者是非計算機專業的使用者使用,因此係統的硬體平臺的要求不應該太高,越低越好。
2.2.2系統操作平臺
考慮到目前使用的作業系統的廣泛性,一般個人使用者使用的是Microsoft的Windows系列,因此本系統操作平臺選擇Windows的NT以上的平臺作為系統平臺。測試平臺:Windows 2003 Server.
2.2.3資料庫平臺
目前的資料庫系統Oracle,Sybase,Informix,DB2,Sql Server等,各有千秋,根據本系統對資料量處理要求,無須採用大型資料庫管理系統,因此本系統使用 Microsoft 的 SQL Server 2000。
2.3 系統開發模式和GIS元件選擇
2.3.1開發模式選擇
當前地理資訊系統的開發模式主要有三種方法[1]
(1) 自主設計空間資料的資料結構和資料庫,利用VC、VB、Delphi 等高階程式語言開發地理資訊系統軟體。
(2) 引進國外的先進的地理資訊系統軟體(如ARC/INFO),利用其提供的二次開發工具,結合自己的應用目標開發。
(3) 利用支援物件導向技術的高階語言和GIS 廠商提供的控制元件構成面向終端使用者的可執行應用程式,稱為嵌入式GIS。
其中,方法1 要求具備雄厚的科研力量和鉅額的開發費用,並且必須隨著研究的不斷深入而不斷更新系統,主要適用於開發商品化的地理資訊系統平臺軟體,對開發一些小型應用系統而言,投入過高而不一定實用。
方法2 比較簡便易行,主要的缺點是移植性差,並且受開發工具的限制,不能脫離原系統軟體環境而獨立執行;
方法3 特點是開發週期短,成本低,可以脫離大型商業GIS 軟體平臺獨立執行,為不熟悉GIS 技術的團體和個人提供使用上的便利,是未來GIS 開發的重要方向。
2.3.2開發工具選擇
Visual Studio .Net 2003是Microsoft 公司於2002年推出的符合工業標準的高階程式開發語言,它全面支援物件導向技術。Visual Studio .NET幾乎包含了當前最流行的開發語言,它包括Visual Basic .NET 2003、Visual Studio .NET C#[3] 、 Visual C++ 2003、Visual J# 2003 等流行程式語言的全部的功能,其特點主要表現在:
(1) 物件導向的程式設計:.NET Framework 和C# 從一開始就完全是基於物件導向的。
(2) 優秀的設計:一個基礎庫,它是一個一種非常直觀的方式設計出來的。
(3) 語言的無關性:在.NET 中,VB.NET,C#、J#和Managed C++等語言都可以編譯成通用的中間語言(Intermediate Language),這說明,語言可以用以前沒有的方式互動操作。
(4) 對動態Web頁面的支援:ASP具有很大的靈活性,但效率不是很高,這是因為它使用瞭解釋性指令碼語言,但缺乏物件導向的設計,從而導致ASP程式碼比較凌亂。.NET使用了一種新的技術ASP.NET,它為Web頁面提供了一種整合式的支援。使用ASP.NET,可以編譯頁面中的程式碼,這些程式碼還可以使用.NET高階語言來編寫,例如:C#、J#或VB.NET。
(5) 高效的資料訪問:一組.NET元件,總稱為ADO.NET,提供了對關聯式資料庫和各種資料來源的高效訪問。這些元件可以訪問檔案系統和目錄。.NET內建了XML支援,可以處理非Windows平臺匯入匯出的資料。
(6) 程式碼共享:.NET 引入了程式集的概念,替代了傳統的DLL,可以完美無暇的修補程式碼在應用程式之間的共享方式,程式集有解決版本衝突的正式系統,程式集的不同版本可以同時存在。
(7) 增強的安全性:每個程式集還可以包含內建的安全資訊,這些可以準確地指出誰或那種型別的使用者或程式可以呼叫什麼類的哪些方法,這樣就可以非常準確地控制程式集的使用方式。
(8) 對安裝沒有任何影響:有兩種型別的程式集,分別是共享程式集和私有程式集。共享程式集是可用於所有軟體的公共庫,私有程式集只用於某個軟體。私有程式集功能完備,所以安裝過程非常簡單,沒有登錄檔項,只有八相應的檔案放在檔案系統的相應資料夾中即可。
(9) Web服務的支援:.NET整合了對開發Web服務的完全支援,使用者可以開發出任何型別的應用程式。
Visual Studio .Net 2003:.NET 附帶了一個開發環境Visual Studio .NET ,它可以很好地利用C++、C#、J#、VB.NET和ASP.NET進行程式碼編寫。Visual Studio .NET整合了Visual Studio 6.0 環境中各種語言專用的所有最佳效能。其中,Visual Studio C# 2003 (以下簡稱:C#)更是微軟公司主推的新型語言,它是一種最新的、物件導向的程式語言。它使得程式設計師可以快速地編寫各種基於Microsoft .NET平臺的應用程式,Microsoft .NET提供了一系列的工具和服務來最大程度地開發利用計算與通訊領域。其重要性體現在:
(1) 它是專門為Microsoft的.NET Framework一起使用而設計的。
(2) 它是一種基於現代物件導向設計方法的語言,在設計它時,Microsoft還吸取了其他類似語言的經驗,這些語言是20年來物件導向規則得到廣泛應用後才開發出來的。
(3) 是使用.NET 的一種物件導向的新語言。
(4) 完全支援類和麵向物件程式設計,包括介面和繼承、虛擬函式和運算子過載的處理。
(5) 定義完整、一致的基本型別集。
(6) 對自動生成XML的文件說明的內建支援。
(7) 自動清理動態分配的記憶體。
(8) 可以用使用者定義的特性來標記類或方法。這可以用於文件說明,對編譯有一定的影響(例如:把方法標記成只在除錯時編譯)。
(9) 對.NET 基類庫的完全訪問權,並易於訪問Windows API。
(10)可以使用指標和直接記憶體訪問,但C# 語言可以在沒有他們的條件下訪問記憶體。
(11)以VB 的風格支援屬性和事件。
(12)改變編譯器選項,可以把程式編譯為可執行檔案或.NET 元件庫,該元件庫可以用於Active X(COM元件)相同的方式由其他程式碼呼叫。
(13)C# 可以用於編寫ASP.NET 動態Web頁面和XML Web服務。
  Microsoft在正式場合把C#描述為一種簡單、現代、物件導向、型別非常安全、派生於C和C++的程式語言。正是由於C#物件導向的卓越設計,使它成為構建各類元件的理想之選,無論是高階的商業物件還是系統級的應用程式。
2.3.3 GIS控制元件選擇
GIS(Geography Information System,簡稱:GIS系統)眾多的廠商也推出了大量的面向各個行業的控制元件,在GIS 領域中,也有不少的控制元件可供選用,其代表為美國環境研究所(ESRI)推出的MapObjects2[4],MapInfo 公司推出的MapX 以及Intergraph 公司推出的Geomedia。MapObjects2 和MapX 在對地圖的常用操作、圖層控制、屬性資料繫結、地圖資訊查詢、地圖符號方面功能相同,在實時事件跟蹤(與GPS 整合)、控制元件資料分析等方面有一定的優勢。MapObjects[5]與MapInfo的主要功能對比見表2-1。
MapObjects 是提供製圖與空間分析功能的ActiveX 控制元件,包含了35 個可程式設計物件,可以用於大量開發框架中,包括流行的像VB、Delphi、Visual C++等之類的程式設計環境。
雖然MapObjects 不是為終端使用者而是專門為開發人員提供的,但與其它的地理資訊系統軟體ARC/INFO、ArcView 、ArcCAD、SDE 等組成建立了地理資訊系統的工業標準。
通常在MapObjects 中使用的都是Shapefile 格式的向量圖層,這是一種用非拓撲關係的形式來儲存幾何位置和地理特徵的屬性資訊的格式,使用儲存在同一工作區的5 個不同副檔名的檔案來表示[6],分別是:
.shp――儲存幾何特徵;
.shx――儲存幾何特徵的索引;
.dbf――資料庫檔案,它儲存特徵的屬性資訊;
.sbn 和.sbx――儲存特徵的空間資料索引;
.ain 和.aih――這些檔案儲存資料庫中或ArcViewGIS 中專題的屬性表中被啟用欄位的索引。
 
表 2-1 MapObjects與MapInfo的主要功能對比
功能
MapObjects
MapX
顯示地圖資料格式
ArcView的SHP、ARC/INFO的
Coverage、SDE圖層
MapInfo的資料格式
疊加柵格圖層
對地圖的常用操作
放大、縮小、漫遊等
放大、縮小、漫遊等
圖層控制
增加、移走、設定當前層
增加、移走、設定當前層
屬性資料繫結
地圖資訊查詢方式
1、通過滑鼠選取特徵
1、通過滑鼠選取特徵
2、通過SQL查詢特徵
2、通過SQL查詢特徵
3、通過空間操作選取特性
3、通過空間操作選取特性
專題地圖
較弱
GPS整合
使用者繪圖圖層
生成/編輯地圖物件
較弱
較弱
地圖示註
地圖符號化
較弱
較弱
分析功能
地理編碼
可使用的開發語言
VC、VB、PowerBuilder、C++Builder、Delphi等
VC、VB、PowerBuilder、C++Builder、Delphi等
同時,MapObjects 還提供強大的地理資訊查詢與統計功能。支援通過ODBC 標準進行的外部資料庫訪問,可以用標準SQL 表示式進行特徵選擇和查詢,可以通過資料繫結而把帶有坐X、Y 標的資料庫記錄顯示在地圖中,可以按照資料的地理資訊進行多種多樣的統計與查詢,MapObjects 還可以通過投影和座標變換把實際地圖中的地理資訊數字化到電子地圖中,如果和全球定位系統GPS 相結合,MapObjects 還可以用一個事件跟蹤層來動態顯示大面積上的移動物件。
除此之外,MapObjects還具有以下優勢:
(1)小巧靈活,價格便宜。由於傳統的GIS結構的封閉性,往往使得軟體本身變得越來越大,不同系統的互動性差,系統地開發難度大。在保證功能的前提下,系統表現的小巧玲瓏,而其價格僅是傳統GIS開發工具的十分之一,甚至更少,這樣使用者便能以較好的價效比獲得或開發GIS應用系統。
(2)無須專門GIS開發語言,直接嵌入MIS(Nanage Information System,管理資訊系統)工具。MapObjects與C# 高效無縫的系統整合。在C# 程式設計環境下,MapObjects 控制元件與C# 的自帶控制元件在使用上沒有差別,而且帶有大量VB 編寫的程式碼,幫助檔案齊備,易於查詢。可見,MapObjects 和C# 的結合是快速開發面向終端使用者的可執行程式的有效工具。
(3) 強大的GIS功能。新的GIS元件都是基於32位系統平臺的,採用InProc直接呼叫形式,所以無論是管理大容量資料的能力,還是處理速度方面均不必傳統的GIS遜色。小小的GIS元件完全能夠提供拼接、裁剪、疊合、緩衝區等空間處理能力和豐富的空間查詢和分析能力。
綜上所述,本系統採用GIS元件開發模式,即:使用C# + MapObjects的元件開發模式。元件開發模式的思想就是把GIS的各大功能模組劃分成幾個控制元件,每個控制元件完成不同的功能。各個控制元件之間及GIS控制元件與其他的非GIS控制元件之間,可以方便的通過視覺化的軟體開發工具(Visual Studio .NET 2003)整合起來,形成最終的GIS應用。形象地說,控制元件如同一堆各式各樣的積木,它們分別實現不同的功能(包括GIS和非GIS功能),人們根據需要把實現各種功能的“積木”搭建起來,就構成了GIS應用系統。


相關文章