地圖符號化實(shí)現(xiàn)方法_第1頁
地圖符號化實(shí)現(xiàn)方法_第2頁
地圖符號化實(shí)現(xiàn)方法_第3頁
地圖符號化實(shí)現(xiàn)方法_第4頁
地圖符號化實(shí)現(xiàn)方法_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、地圖符號化實(shí)現(xiàn)方法 地理信息符號化是地理信息生產(chǎn)和應(yīng)用時(shí)必須要實(shí)現(xiàn)的技術(shù),對地理信息處理和應(yīng)用有較大的幫助作用。地理信息的符號化通常是指它的二維屏幕表達(dá)。利用豐富的地圖符號和視覺變量,在計(jì)算機(jī)屏幕上對各種地理信息進(jìn)行直觀和清晰的顯示一直是數(shù)字制圖和GIS的核心技術(shù)之一。本文就這方面的主要方法和實(shí)現(xiàn)技術(shù)進(jìn)行深入討論。 2 地理信息符號化方法 地理信息符號化的主要方法采用地圖圖形和符號對地理信息進(jìn)行表示。眾所周知,地圖圖形是地圖的語言,它既表示了地理實(shí)體的形狀、位置、結(jié)構(gòu)和大小信息,也表示了實(shí)體的類型、等級以及其他數(shù)量和質(zhì)量特征。地圖圖形符號的設(shè)計(jì)和建立主要有三種方法,即編程法、信息塊法和交互設(shè)計(jì)

2、法。 2.1 編程法 編程法是將地圖符號分解為圖元(特定的幾何要素,如直線、三角形、矩形、圓、弧等,稱為圖元),然后通過程序的方法相繼調(diào)用繪制這些圖元的函數(shù),由圖元的組合來實(shí)現(xiàn)地圖符號的繪制。如圖1所示。在調(diào)用繪制圖元的函數(shù)時(shí),根據(jù)符號的特點(diǎn)和定位關(guān)系輸入適當(dāng)?shù)膮?shù)。 對于大多數(shù)點(diǎn)狀符號,它們的定位點(diǎn)是固定的,符號中各組成部分相對于定位點(diǎn)的關(guān)系也是固定的,因此對于這些符號,以后在使用時(shí)只要給出定位點(diǎn)坐標(biāo)和符號的繪制比例即可。有些點(diǎn)狀符號的定位點(diǎn)可能不止一個(gè),如半依比例尺橋梁符號,它的定位點(diǎn)有二個(gè),一個(gè)是橋梁的中心點(diǎn),另一個(gè)是橋梁的方向點(diǎn),橋梁符號的其他點(diǎn)位坐標(biāo)是靠這二個(gè)點(diǎn)計(jì)算出來的。 對于線狀

3、符號,只要給定線狀符號中心線上的點(diǎn)位坐標(biāo)就能生成線狀符號。在采用編程方法時(shí),符號一般都是固定的,所給的定位點(diǎn)也是少量的,利用這些少量的信息根據(jù)符號內(nèi)在的相互關(guān)系就可以形成相應(yīng)的符號。 采用編程法來實(shí)現(xiàn)地圖符號的繪制其最大的缺點(diǎn)是不便于修改,每一個(gè)符號的修改和調(diào)整都要改動(dòng)相應(yīng)的程序,較為費(fèi)事。它的優(yōu)點(diǎn)在于能將大量的地理信息自動(dòng)地進(jìn)行符號化,不需要太多的人工干預(yù)。只要按照地理信息的屬性編碼,檢索出相應(yīng)的符號名稱,然后調(diào)用繪制這些符號的程序,即可得到各種不同地圖符號的輸出。符號信息及各種處理和底層接口調(diào)用都由計(jì)算機(jī)獨(dú)立完成。目前,這種符號的實(shí)現(xiàn)方法較為成熟,在實(shí)際應(yīng)用中仍有廣泛的應(yīng)用。 2.2 信息

4、塊法 信息塊法是用人工的方法將要繪制的符號離散成數(shù)字信息,用統(tǒng)一的結(jié)構(gòu)和方法進(jìn)行描述,這些描述信息存放在數(shù)據(jù)文件中,一個(gè)符號構(gòu)成一個(gè)信息塊。繪圖時(shí)只要通過程序處理數(shù)據(jù)文件中的信息塊,即可完成符號的繪制。如圖2所示。要修改的話也只是修改數(shù)據(jù)文件,而繪制地圖符號的軟件保持不變。 交互設(shè)計(jì)法2.3 交互設(shè)計(jì)法是在一定的圖形設(shè)計(jì)軟件中,有一系列的圖形元素繪制工具供用戶選擇和使用,用戶采用精確輸入的方法把構(gòu)成符號的各個(gè)圖元按照相互之間確定的關(guān)系有機(jī)地把它們組合在一起,并選擇一個(gè)定位點(diǎn)。繪制好的符號起個(gè)名字存放在相應(yīng)的符號庫中,這些符號可以是點(diǎn)狀符號,也可以是線狀符號和面狀符號。 當(dāng)是點(diǎn)狀符號時(shí),調(diào)用時(shí)只

5、要給出定位點(diǎn),所要的點(diǎn)狀符號就會自動(dòng)配置上去。如果是線狀符號,光標(biāo)只要給出定位中心線的位置,就形成相應(yīng)的線狀符號。如果是面狀符號,只要給定邊界,面狀符號就會填繪上去。 這種符號繪制方法十分方便而且便于修改。不需要編寫程序,全靠數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)之間的關(guān)系起作用。采用人機(jī)交互的方法來設(shè)計(jì)和繪制地圖符號大大地方便了用戶,提高了工作效率,減輕了工作量,代表著符號設(shè)計(jì)和繪制的發(fā)展方向。 上述三種產(chǎn)生地圖符號的方法在有些情況下要結(jié)合起來使用,各自有著不同的使用場合,很難說只用一種方法就能解決所有的問題。 3 地理信息符號化控制技術(shù) 地理信息符號化控制技術(shù)是指地理信息符號化過程如何控制和實(shí)現(xiàn)的,隨著數(shù)字地圖制

6、圖技術(shù)的不斷發(fā)展,地理信息符號化控制技術(shù)也在不斷的發(fā)展和完善。目前可以通過三種方式來實(shí)現(xiàn)地理信息符號化過程的控制,即程序控制方式,基于控制文件的方式和基于關(guān)系數(shù)據(jù)庫的控制方式。 3.1 程序控制方式 程序控制方式建立在圖形符號編程法基礎(chǔ)之上,是一種內(nèi)部控制方式,它完全依賴于計(jì)算機(jī)程序,在數(shù)字制圖技術(shù)出現(xiàn)的初期被廣泛使用。但是以這種方式實(shí)現(xiàn)的符號化控制可維護(hù)性差。一旦程序編寫完畢,所有的符號化控制都固定了,當(dāng)生產(chǎn)其他類型的地圖時(shí),必須對控制符號化的源程序做出相應(yīng)的調(diào)整或者重新編寫,這顯然降低了系統(tǒng)的通用性,不利于整個(gè)系統(tǒng)推廣和應(yīng)用。針對這樣的問題,地圖工作者希望利用外部控制的方式來實(shí)現(xiàn)符號化的控

7、制,以降低對程序的依賴性,因此基于控制文件的方式便產(chǎn)生了。 3.2 基于控制文件方式 基于控制文件方式是通過計(jì)算機(jī)程序?qū)刂莆募械膬?nèi)容進(jìn)行解釋來完成對地圖符號化的控制,它是一種外部控制的方式。符號化控制文件的設(shè)計(jì)是依據(jù)地圖要素編碼的特點(diǎn),按照點(diǎn)、線、面要素歸類并設(shè)置控制項(xiàng),主要包括要素編碼對應(yīng)的地圖符號控制和相應(yīng)的說明注記控制。這種方式與完全依靠程序來實(shí)現(xiàn)地圖符號化控制相比,便于維護(hù),通用性得到提高。如果需要增加或修改一種要素的符號化效果,只需要增加或修改該要素的符號化控制項(xiàng),而不用修改源程序。針對不同類型的地圖,只需設(shè)計(jì)相應(yīng)的控制文件,就可以完成對地圖符號化效果的控制。但這種方式也存在一些

8、不足,其控制項(xiàng)較多,程序解釋起來比較困難,文件結(jié)構(gòu)復(fù)雜,在編輯符號化文件是容易出錯(cuò)等。 基于關(guān)系數(shù)據(jù)庫的控制方式3.3 運(yùn)用數(shù)據(jù)庫技術(shù)最直接的想法就是用數(shù)據(jù)庫中的表來取代控制文件,在數(shù)據(jù)入庫時(shí)通過對符號化控制表中的符號化控制信息進(jìn)行解釋來完成對地圖符號化的控制。在關(guān)系數(shù)據(jù)庫中,各種關(guān)系都是以數(shù)據(jù)庫表的形式存在,因此用數(shù)據(jù)庫表來實(shí)現(xiàn)符號化控制是非常適合的。此外,還可利用數(shù)據(jù)庫在數(shù)據(jù)管理上的優(yōu)勢,以及數(shù)據(jù)庫自身的特點(diǎn)來保證符號化控制過程的正確性。從控制表自身來看,在這種方式下,符號化控制表較少,表中的控制項(xiàng)相對簡單,共用的控制項(xiàng)均以字典表的形式出現(xiàn),控制表與字典之間利用關(guān)系數(shù)據(jù)庫的主鍵與外鍵間的約

9、束建立關(guān)聯(lián),控制表結(jié)構(gòu)簡單明了,表與表之間的邏輯關(guān)系清楚,維護(hù)起來簡單方便。 4 地理信息符號化實(shí)現(xiàn) 點(diǎn)狀符號、線狀符號和面狀符號各有其特點(diǎn),又不失共性,它們的差異是構(gòu)成各自的基本圖素不同,而相同之處是繪制參數(shù)(符號代碼、繪圖句柄、筆的顏色、刷子的顏色等)、操作方法(繪制、刪除等)基本一致。根據(jù)面向?qū)ο蟮挠^點(diǎn),為使各類符號對象具有相對獨(dú)立性,可以將點(diǎn)狀符號(CPointSymbol)、線狀符號(CLineSymbol)、面狀符號(CAreaSymbol)定義成三種符號對象類,并將各類符號的數(shù)據(jù)成員(屬性數(shù)據(jù))及其函數(shù)成員(操作方法)封裝在各自的對象類中。同時(shí)又在這三個(gè)類的基礎(chǔ)上概括出更高層次的

10、類,即符號類(CSymbolBase)。 符號類(CSymbolBase)的定義如下: class CSymbolBase : public CObject /成員變量 public: CString m_strCurrentPath; /符號路徑 CString m_SymbolCode; /符號代碼 COLORREF m_SymbolColor; /符號顏色 /成員函數(shù) public: void DrawParral(CDC *dc, ); /繪制平行線 void DrawThickLine(CDC *pDC,); /繪制加粗線 4.1 點(diǎn)狀要素的符號化 點(diǎn)狀符號類的定義如下: class

11、 CSymbolPoint : public CSymbolBase /成員變量 public: CObList *m_polylineList; /折線圖元列表 CObList *m_ellipseList; /橢圓圖元列表 CObList *m_chordList; /圓弦圖元列表 CObList *m_rectList; /矩形圖元列表 CRect m_Boundrect; /符號的外接矩形,相對于符號的定位點(diǎn) /成員函數(shù) public: void ReadPointFile(CString m_SymbolFileName,); /讀取符號庫 CRect GetBoundrect(do

12、uble angle,double scale); /獲得符號外接矩形 void DrawPointinMap(CDC *pDC,); /繪制符號 在程序收到用戶傳給的幾何信息和屬性信息(包括定位點(diǎn)信息、顏色、角度等)后,讀取符號庫中該符號的描述信息,進(jìn)行解釋并完成圖形繪制。 點(diǎn)狀符號繪制程序的接口函數(shù): void CPointSymbol: DrawPointinMap(CString m_SymbolFileName, /符號路徑 CString m_SymbolCode, /符號名 CPoint PositionPoint, /點(diǎn)狀地物定位點(diǎn) double SymbolScale, /符

13、號比例 旋轉(zhuǎn)角度/Angle, double COLORREF SymbolColor, /符號顏色 CDC* pDC) 點(diǎn)狀符號制作及選擇如圖3所示。 4.2 線狀要素的符號化 線狀符號類的定義如下: class CSymbolLine : public CSymbolBase 在程序收到數(shù)據(jù)庫中或用戶傳給的幾何信息和屬性信息(包括定位軸線信息、顏色、結(jié)束方式等)后,讀取符號庫中該符號的描述信息,進(jìn)行解釋并完成圖形繪制。 線狀符號繪制程序的接口函數(shù): void CLineSymbol: DrawLinesinMap (CString m_SymbolFileName, /符號路徑 CStri

14、ng m_SymbolCode, /符號名 double x , double y , int n, /軸線坐標(biāo)串及坐標(biāo)點(diǎn)個(gè)數(shù) COLORREF color, /符號顏色 double m_LineScale, /繪制比例 CDC* pDC) 4.3 面狀要素的符號化 面狀符號類的定義如下: class CSymbolArea : public CSymbolBase 面狀符號的繪制最關(guān)鍵的技術(shù)是填充算法。一般分為兩種填充方法:點(diǎn)填充和線填充。線填充方法通常是按掃描線填充,點(diǎn)填充方法通常是按定位點(diǎn)填充,包括品字形填充、井字形填充以及隨機(jī)填充。填充時(shí)要用到多邊形裁剪算法,可以直接調(diào)用VC+提供的有關(guān)系統(tǒng)函數(shù)。 面狀符號繪制程序的接口函數(shù): void CAreaSymbol:DrawAreainMap(CString m_SymbolFileName, /符號路徑 符號名稱/m_AreaSymbolCode, CString double x, double y, int n, /多邊形區(qū)域點(diǎn)串及個(gè)數(shù) COLORREF m_FrontColor, /前景色 COLORREF m_BackColor, /背景色 BOOL m_IsSheer, /底色是否透明 CString m_SideLineName,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論