• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    C#.Net平臺下制圖系統(tǒng)的底層開發(fā)

    2010-09-15 03:39:20臺曉楠
    武漢紡織大學學報 2010年4期
    關(guān)鍵詞:圖層制圖組件

    臺曉楠,楊 懿

    (武漢大學 資源與環(huán)境科學學院,湖北 武漢 430079)

    C#.Net平臺下制圖系統(tǒng)的底層開發(fā)

    臺曉楠,楊 懿

    (武漢大學 資源與環(huán)境科學學院,湖北 武漢 430079)

    簡要分析制圖系統(tǒng)所應具備的基本系統(tǒng)功能,并采用組件式構(gòu)架的思想,在C#.N ET環(huán)境下組織計算機制圖系統(tǒng)的底層開發(fā),實現(xiàn)計算機制圖系統(tǒng)的基本功能。對系統(tǒng)開發(fā)的核心問題如系統(tǒng)框架設(shè)計,系統(tǒng)結(jié)構(gòu)設(shè)計等內(nèi)容進行探討。系統(tǒng)采用組件式開發(fā)的思想,與當今主流的軟件開發(fā)方式接軌。

    計算機制圖系統(tǒng);組件式;底層開發(fā);C#.N ET

    1 計算機制圖系統(tǒng)

    計算機制圖又稱機助地圖制圖或數(shù)字地圖制圖,以傳統(tǒng)的制圖原理為基礎(chǔ),以計算機及一些外圍設(shè)備為工具,進行地圖信息的采集,存儲,處理和顯示的過程。計算機制圖包括兩個核心處理,即將原始地圖表達去符號化形成存儲在計算機中的地圖數(shù)據(jù),與將地圖數(shù)據(jù)符號化,輸出機制地圖的過程。計算機制圖系統(tǒng)則是支持計算機制圖的軟件系統(tǒng)。

    計算機制圖系統(tǒng)的數(shù)據(jù)處理的基本過程如圖1所示:

    圖1 制圖系統(tǒng)數(shù)據(jù)處理過程

    計算機制圖系統(tǒng)所應具有的功能如下:

    (1)數(shù)據(jù)接收功能。一個良好的制圖系統(tǒng)應當具有數(shù)據(jù)開放性,既能夠處理內(nèi)部格式的文件,也要能接收外部通用交換格式的文件,如DXF文件。

    (2)圖形編輯功能。制圖系統(tǒng)應當具有交互式圖形屏幕繪制功能,圖形的添加,選中,刪除功能。

    (3)符號配置功能。制圖系統(tǒng)應具有完善的符號庫,能夠進行多種地圖表示符號的繪制,并支持用戶自定義符號。

    (4)地圖輸出功能。能夠?qū)⒅瞥傻牡貓D以軟拷貝和硬拷貝的方式輸出,即屏幕顯示或者保存數(shù)據(jù)打印輸出。此外,地圖的屏幕顯示功能中還應當支持簡單的地圖放大,縮小,漫游等功能,便于用戶對地圖進行檢查。

    2 系統(tǒng)的實現(xiàn)過程

    2.1 系統(tǒng)功能模塊設(shè)計

    根據(jù)第一部分闡述的制圖系統(tǒng)所應具備的功能,設(shè)計本制圖系統(tǒng)的功能如圖2所示:

    圖2 制圖系統(tǒng)功能結(jié)構(gòu)圖

    2.2 系統(tǒng)框架設(shè)計

    系統(tǒng)開發(fā)采用組件式的開發(fā)思想,所以在搭建系統(tǒng)主程序之前需要首先編寫系統(tǒng)中所要用到的組件,有地圖控件CMyControl,各個功能按鈕控件Tools或者Commands(見圖3)。

    圖3 系統(tǒng)框架設(shè)計圖

    Application是系統(tǒng)主程序所在的工程,其中將會調(diào)用到如圖所示7個命名空間中的元素。其中CSGL是針對C#提供的OpenGL組件庫,提供強大的二維和三維圖形的繪制函數(shù)接口,System是開發(fā)環(huán)境本身所封裝的命名空間,Janus是第三方組件庫,用于設(shè)計友好的用戶界面。

    此外,本系統(tǒng)自定義了4個命名空間,提供系統(tǒng)搭建所需要的組件和類。ControlLibrary是控件庫,內(nèi)有顯示二維圖形和三維圖形的兩個控件。ClassLibrary是系統(tǒng)的類庫,包含系統(tǒng)所要用到的類型。InterfaceLibrary中定義了系統(tǒng)所提供的接口,Tools則是系統(tǒng)工具按鈕組件庫,內(nèi)部封裝了執(zhí)行各種地圖功能所需要的按鈕,有針對二維圖形和三維圖形的兩套按鈕。

    程序開發(fā)過程中,首先編寫ControlLibrary,InterfaceLibrary,ClassLibrary,Tools這四個工程,并生成動態(tài)鏈接文件后,在主程序中添加相應的.dll文件和引用就可以直接使用這些工程中定義的接口和方法。

    2.3 系統(tǒng)類結(jié)構(gòu)設(shè)計

    根據(jù)制圖數(shù)據(jù)的分層組織的關(guān)系,設(shè)計出地圖類,管理地圖中的各圖層信息;圖層類,管理圖層中的所有圖形要素;以及點,線,面類。具體的類的結(jié)構(gòu)和關(guān)系如圖4所示。

    圖4 系統(tǒng)類結(jié)構(gòu)設(shè)計圖

    2.4 符號庫設(shè)計

    計算機地圖制圖的兩個核心的處理過程是去符號化與符號化的過程。以鐵路為例,在紙質(zhì)地圖中,鐵路通常表示為黑白相間的雙線路,而在去符號化過程中,則只提取鐵路的中軸線數(shù)據(jù)存儲在地圖數(shù)據(jù)庫中。地圖數(shù)據(jù)輸入制圖系統(tǒng)中的一個主要目的就是符號化,通過制圖系統(tǒng)提供的符號庫,將符號配置到地圖數(shù)據(jù)中,并將制圖結(jié)果輸出。

    通常,符號庫有矢量繪圖法和柵格圖法。矢量繪圖指在指定位置處用程序臨時繪制符號,柵格圖法則是將預先存儲的柵格符號繪制在指定位置處。而矢量繪圖法又分為直接信息法,和間接信息法。直接信息法存儲繪制圖形的坐標點序列,并同時記錄抬筆與落筆的動作,所有的符號都可以通過一段程序來繪制。間接信息法只存儲圖形的關(guān)鍵參數(shù),但是每一個符號都必須編寫對應的符號繪制程序。

    本次系統(tǒng)開發(fā)中,使用直接信息法在地圖控件中直接繪制矢量符號,地圖符號繪制結(jié)果如圖5所示。而在符號選擇框中,則使用柵格圖像顯示作為示意圖,以提高程序運行效率。符號選擇對話框如圖6所示。

    圖5 符號繪制結(jié)果

    圖6 系統(tǒng)符號選擇窗口

    2.5 數(shù)據(jù)存儲方式設(shè)計

    本系統(tǒng)采用SQL Server2000關(guān)系型數(shù)據(jù)庫來存儲地圖的幾何圖形數(shù)據(jù),雖然幾何圖形數(shù)據(jù)具有坐標串長度不確定的特點,不便于使用傳統(tǒng)關(guān)系數(shù)據(jù)庫進行存儲,但是目前隨著關(guān)系數(shù)據(jù)庫的發(fā)展,通過二進制流的形式,可以將變長的坐標串作為二進制塊寫入數(shù)據(jù)庫,這樣的結(jié)構(gòu)便于數(shù)據(jù)的存取控制。

    其中地圖文件是一張表,表內(nèi)記錄此地圖文檔中包含的所有的圖層的基本類型及符號顯示信息。每個圖層分別對應一張表,圖層表的名稱是圖層名。所以必須保證地圖數(shù)據(jù)庫中不同圖層具有不同的名稱。

    地圖表的具體字段如下:

    L a y e r N a m e L a y e r I n d e x L a y e r T y p e S y m b o l I D S y m b o l C o l o r

    LayerName表示圖層的名稱,在數(shù)據(jù)庫中以圖層的名稱作為區(qū)別不同圖層的ID號。LayerIndex表示在地圖中圖層的顯示順序,即圖層的上下位置順序。LayerType表示圖層的類型,分為POINT點圖層,LINE線圖層,POLYGON多邊形圖層,和ANNOTATION注記層。SymbolID表示不同的圖層顯示的符號的編號。SymbolColor記錄地圖中每一圖層顯示的顏色,在系統(tǒng)用戶使用系統(tǒng)為地圖數(shù)據(jù)符號化和設(shè)計符號顏色后,將相關(guān)信息記錄在圖層中。

    圖層表的表名為該圖層的名稱,表內(nèi)記錄此圖層中包含的全部要素的要素的系統(tǒng)ID號,要素類型和坐標串序列。

    I D T Y P E C O O R D I N A T E

    2.6 系統(tǒng)界面設(shè)計

    本系統(tǒng)使用介紹JanusWinforms Controls插件,這是由Janus Systems 公司開發(fā)的一套控件組合,可以創(chuàng)建出具有Outlook風格的應用程序界面,并可以實現(xiàn)主程序界面中各部分位置的自由拖拽,隱藏與???。提供對Visual Studio Developer最新的樣式控制。所有的控制將使.NET應用程序更加強大,并易于控制編程,節(jié)省開發(fā)時間。

    3 系統(tǒng)的特點

    相比于傳統(tǒng)基于VC6的制圖系統(tǒng)底層開發(fā)方式,本系統(tǒng)采用組件化開發(fā)的方法,具有以下特點:

    (1)較好的開放性

    組件化的思想是指將復雜的系統(tǒng)功能按照對象、功能、應用等層次分解為可以互操作和自我管理的組件。通過編譯產(chǎn)生二進制文件,可以在多種開發(fā)平臺和語言環(huán)境中使用。

    (2)良好的可擴展性

    系統(tǒng)的擴展性表現(xiàn)在系統(tǒng)組成的組件功能上,通過對組件的擴展就可以實現(xiàn)更多的功能,而不需要對系統(tǒng)本身進行過多的修改。

    (3)便于多個程序員的分工合作

    將系統(tǒng)分成不同的模塊,各個模塊之間相互獨立。可以將不同的模塊分配給不同的程序員編寫。

    4 總結(jié)

    本系統(tǒng)從底層實現(xiàn)了制圖系統(tǒng)的基本功能,并結(jié)合了當今軟件開發(fā)的主流技術(shù)如組件技術(shù),空間數(shù)據(jù)庫技術(shù)等內(nèi)容,能夠較好的管理圖形數(shù)據(jù)和系統(tǒng)制圖功能。在系統(tǒng)實現(xiàn)中,首先編寫所需要的組件庫,然后在主系統(tǒng)中加載,這樣的開發(fā)方法就系統(tǒng)開發(fā)本身而言,雖然開發(fā)任務較重,但是便于功能的組合和進一步擴展。

    [1] 艾自興, 龍毅. 計算機地圖制圖[M]. 武漢:武漢大學出版社, 2005.

    [2] 宋關(guān)福,鐘耳順. 組件式地理信息系統(tǒng)研究與開發(fā)[J]. 信息技術(shù), 2006, 30(1).

    [3] Martin L. Shoemaker. UML實戰(zhàn)教程[M]. 北京: 清華大學出版社, 2006.

    The Base Development of Cartography System Using C#.NET

    TAI Xiao-nan, YANG Yi

    (School of Resource and Environment, Wuhan University, Wuhan Hubei 430079, China)

    An innovative method of developing cartography system from base is introduced using the C#.NET platform and COM technique. This paper gives details pertaining to the problems involving the system framework and structure design, as well as the result of this development. This method is proved to be successful and effective.

    cartography system; base development; COM technique; C#.NET

    TP391.41

    A

    1009-5160(2010)04-0038-03

    臺曉楠(1689-),女,研究方向:地理信息系統(tǒng).

    猜你喜歡
    圖層制圖組件
    無人機智能巡檢在光伏電站組件診斷中的應用
    能源工程(2022年2期)2022-05-23 13:51:50
    無聲手槍如何消音?
    新型碎邊剪刀盤組件
    重型機械(2020年2期)2020-07-24 08:16:16
    U盾外殼組件注塑模具設(shè)計
    巧用混合圖層 制作抽象動感森林
    二向反射模型在土地覆被制圖中的應用
    圖層法在地理區(qū)域圖讀圖中的應用
    地理教學(2015年18期)2016-01-06 12:00:38
    風起新一代光伏組件膜層:SSG納米自清潔膜層
    太陽能(2015年11期)2015-04-10 12:53:04
    工程制圖課程教學改革探析
    淺析“遞層優(yōu)化法”在礦井制圖中的應用
    河南科技(2014年6期)2014-04-04 08:00:42
    巴楚县| 怀仁县| 大关县| 洪湖市| 名山县| 丹江口市| 西乌| 连城县| 商水县| 临海市| 福建省| 荆州市| 腾冲县| 乌拉特中旗| 聊城市| 涞源县| 锡林浩特市| 江达县| 永善县| 中牟县| 襄汾县| 博湖县| 葫芦岛市| 新竹市| 澄城县| 新巴尔虎右旗| 马边| 宜兰市| 锡林浩特市| 青川县| 常州市| 和龙市| 明星| 东安县| 苏尼特左旗| 贵州省| 沛县| 紫金县| 平湖市| 阳春市| 犍为县|