秦佐,劉鵬程
(長沙市規劃勘測設計研究院,湖南 長沙 410007)
?
基于GDI+的地形圖符號庫中點符號的設計和實現
秦佐*,劉鵬程
(長沙市規劃勘測設計研究院,湖南 長沙410007)
摘要:地形圖符號庫是數字化成圖系統與地理信息處理軟件中的一個重要組成部分。符號繪制是實現地圖符號庫的關鍵,GDI+作為微軟推出的最新的圖形設備接口,與之前的GDI相比,具有更加強大的圖形圖像處理功能,給地圖符號帶來了新的繪制技術。本文在分析GDI+的基礎上,按照分層的思想歸納了點符號的構成單元,并通過組合GDI+函數繪制出符號,并在此基礎上提出了一些地圖符號繪制改進的方法。
關鍵詞:地圖符號;GDI+;點符號;算法優化
1引言
隨著新地物的不斷出現,對地形圖圖示進行相應的增添和修改是一個非常重要的工作,目前的繪圖軟件均帶有地圖符號制作功能,已經有很多文獻做了這方面的研究,比如利用.NET、SVG、ObjectARX等軟件,但僅局限于在自身軟件平臺上加以開發,通用性不強[1~4],GDI是Windows系統的重要組成部分,是與設備無關的圖形設計平臺,因此通用性更強。由于一些特殊地物或者每個單位要求會稍有區別,因此國外的軟件不適合我國的國情需要,不能自定義符號庫[5]。因此,加強地圖符號庫的管理,增進對地圖符號庫設計技術的交流,研究出一套開放式的地圖符號設計與實現方法,顯得尤為重要[6~8]。本文旨在利用VC++平臺,以GDI+圖形處理接口為基礎,開發出一套參數化的點符號制作方法[9,10]。
2點符號的設計
點符號的設計必須研究點符號的構成規律,并設計出能夠描述所有點狀符號的基本單元。
2.1點符號的組合形式
對于簡單幾何圖形的點符號,如圖1所示,均由點、線和圓構成。
對于復雜的點狀符號,有些沒有明顯的幾何規律,采用簡單符號的組成方式難以實現,則需要加入新的描述方式,如填充法,弧段等,如圖2所示。
2.2點符號的參數化基本單元
針對點符號的圖形特點,設計了一個通用的類模板。本文經過對國標地形圖圖式[10]中約172個點符號進行組合分析,設計了5種圖素及其描述參數。
(1)圓:圖素定位點為圓心
描述參數為:C,X,Y,a,b,counts,angle,filled,
penwidth,r,填充模式。
其中:C:表示該圖素類型是圓;X,Y:代表圖素定位點與符號定位點的偏移量;a,b:代表圖素旋轉點與符號定位點的偏移量,一般均采用0值,即與符號定位點一致;counts:代表圖素的個數;angle:代表圖素整體旋轉的角度,以度為單位。;filled:代表圖素是否以指定顏色填充;penwidth:代表畫筆的寬度;r:表示圓的半徑;填充模式:值取1或者0。為1時,圖素的顏色將是畫布背景色;為0時,圖素的顏色為用戶指定的顏色。參數的幾何構成如圖3所示:
(2)弧段:圖素定位點為弧段所對應的圓心
描述參數為:A,X,Y,a,b,counts,angle,filled,penwidth,r,beginangle,endangle,closed,leftCap,rig htCap,填充模式。
其中:A:表示該圖素類型是弧段;X,Y,a,b,counts,angle,filled,penwidth,r:同上;beginangle:表示弧段的起始角度,以度為單位從X軸順時針測量;endangle:表示弧段起始角度和弧線末尾之間的角度,以度為單位;closed:表示是否構成封閉的扇形區域;leftCap:表示圖素的起始線帽;rightCap:表示圖素的結束線帽;填充模式:同上。參數的幾何構成如圖4所示:
(3)拐角:定位點為拐角點
描述參數為:L,X,Y,a,b,counts,angle,filled,penwidth,LeftLength,RightLength,LeftAngle,RightAngle,closed,leftCap,rightCap,填充模式。
其中,L:表示該圖素類型是拐角;X,Y,a,b,counts,angle,filled,penwidth:同上;LeftLength:代表拐角圖素的左邊長;RightLength:代表拐角圖素的右邊長;LeftAngle:代表拐角圖素的左邊與x軸(橫軸)水平方向夾角;RightAngle:代表拐角圖素的左邊與x軸(橫軸)水平方向夾角;closed:表示該拐角是否首尾閉合,構成封閉的區域,1表示閉合,0表示不閉合;leftCap,rightCap,填充模式:同上。參數的幾何構成如圖5所示:
(4)矩形:定位點為矩形幾何中心
描述參數為:R,X,Y,a,b,counts,angle,filled,penwidth,w,h,填充模式。
其中,R:表示該圖素類型是矩形;X,Y,a,b,counts,angle,filled,penwidth:同上;w:代表矩形的寬度;h:代表矩形的高度;填充模式:同上。參數的幾何構成如圖6所示:
(5)等邊三角形:定位點為三角形的
描述參數為:T,X,Y,a,b,counts,angle,filled,penwidth,Length,填充模式。
其中:T:表示該圖素類型是等邊三角形;X,Y,a,b,counts,angle,filled,penwidth:同上;Length:代表等邊三角形的邊長;填充模式:同上。參數的幾何構成如圖7所示:
2.3點狀符號的數據組織
本文設計的點狀符號數據組織格式為:
點狀符號編碼1;圖素1;圖素2;圖素3;……#符號名稱1
點狀符號編碼2;圖素1;圖素2;圖素3;……#符號名稱2
點狀符號是由多種圖素按照一定的規律組合而成的,選擇適當的圖素類型和圖素參數,就能方便地完成點狀符號的描述。圖1和圖2中所示符號的圖素選擇情況如表1所示:
確定好圖素的類型和個數后,可設置圖素的參數值,再按照點狀符號的數據組織方式加以描述,帶有方向性質的點符號,如流向,將繪圖時設置的角度保存為屬性數據,再讀入到angle參數當中。本文以獨立天文點為例,參數描繪為:
110402;L,0,-2,0,0,1,0,0,1,1.45,1.45,-72,-72,0,16,16;A,0,0,0,0,1,0,1,1,0.3,0,360,0,16,16,0#獨立天文點
3點符號的實現
3.1點符號的繪制流程
3.2符號管理器
點符號管理器中符號即為設計出的圖例,另外,通過點符號管理器,還可以更改點符號的類型、顏色和大小設置。如圖9所示:
4改進
在對面域進行符號化時,點狀符號的填充一直是個難點。需要先計算填充的點狀符號具體位置,然后根據符號樣式繪制。本文的改進在于充分利用了GDI+的柵格圖像操作功能,提高了符號的繪制速度。
在GDI+中有圖形的拷貝函數,能夠完整復制一張在內存中已繪制完的位圖,本文利用這一功能設計的改進方法:先根據所需要填充的符號樣式,在內存中新建一張適當大小的位圖樣圖,最好是點符號尺寸的最小外接矩形大小,背景色通過Alpha值設為透明,再讀取填充符號的描述數據加以繪制;確定好填充點的屏幕位置,利用Clone函數,以內存中的樣圖為拷貝模板,復制出一張一模一樣的位圖,再將其繪制到屏幕上。令m_nWidth,m_nHeight分別為點狀符號最小外接矩形的寬和高,m_CompleteGraphics為屏幕畫板,pt為符號填充點。步驟如下:
(1)創建內存樣圖:m_MryBitmap=new Bitmap(m_nWidth,m_nHeight);
(2)創建內存樣圖畫板繪制:m_MerGap=Graphics::FromImage(m_MryBitmap);
(3)創建空白位圖:m_CopyBitmap=new Bitmap(m_nWidth,m_nHeight);
(4)復制圖形:m_CopyBitmap=m_MryBitmap.Clone();
(5)在屏幕上繪制圖形:m_CompleteGraphics->DrawImage(m_CopyBitmap,pt)。
5總結
本文提出了組成點狀符號的5類圖素:圓、拐角、弧段、矩形和等邊三角形,給出了各類圖素的參數化描述結構,同時設計了圖素的組合形式。并把所設計的地圖符號庫成功運用于村鎮增量信息更新系統(eVillageUpdateSystem)的開發中。設計改進并實現了提高面域的點狀符號填充速率的方法。
參考文獻
[1]李青元,李洪省,劉皓晨. GIS符號庫數據模型抽象及其交換格式研究[J]. 武漢大大學報.信息科學版,2008,33(6):565~568.
[2]徐擁國,錢佳智,陳榮. 基于.NET的GIS地圖符號庫的設計與實現[J]. 城市勘測,2016,1:135~137.
[3]高金鋒,陳笑蓉,陳笑媛. 基于SVG的地圖符號庫設計[J]. 貴州大學學報·自然科學版,2009,26(1):74~76.
[4]張巨林,陳兆煙,謝剛生. 基于ObjectARX的用戶地圖符號庫系統的設計與開發[J]. 測繪通報,2013(11):109~111.[5]Colavolpe,Giulio,etal. On map symbol detection for ISI channels using the underboeck observation model[J]. In IEEE communications letters,2005,9(8):720~722.
[6]楊勇,李霖,王紅. 地圖制圖軟件中符號圖形的研究[J]. 測繪信息與工程,2007,32(3):46~48.
[7]麥照秋,韓雪華. GIS數據用于CorelDRAW地圖制圖方法的研究[J]. 測繪通報,2008(2):62~64.
[8]車森,孫群,劉海硯. 線狀地圖符號設計及其制圖表達研究[J]. 測繪通報,2013(9):95~97.
[9]秦佐,周曉光,劉軍生等. 基于GDI+的復雜線狀符號優化算法[J]. 測繪科學,2011,36(4):183~185.
[10]秦佐. 基于GDI+的地圖符號庫的設計開發與優化[D]. 長沙:中南大學,2010.
[11]國家基本比例尺地圖圖式第1部分:1∶500 1∶1000 1∶2000地形圖圖式[S].
The Design and Realization of Point Symbols in the Topogrphic Map Symbol Database Base on GDI+
Qin Zuo,Liu Pengcheng
(Changsha Planning Survey & Investigation & Design Institute,Changsha 410007,China)
Key words:topograhic symbols;GDI+;point symbols;algorithm optimization
Abstract:Topographic map symbol database is an important part of the digital drawing system and geographic information processing software. Symbol drawing is the key factor of the realization of map symbol database. Compared with the previous GDI,GDI+ has a more powerful image processing function as the latest Microsoft’s graphics device Interface,bringing a new rendering technology. In the paper, the structure units of point symbols are hierarchical summarized based on analysis of GDI+,and then symbols are rendered by the combination of GDI functions. Finally,the method to improve topograhic symbols is proposed.
文章編號:1672-8262(2016)03-63-04
中圖分類號:P208.1
文獻標識碼:B
*收稿日期:2016—02—25
作者簡介:秦佐(1985—),男,工程師,主要從事城市測繪及地理信息系統研究和應用工作。