戴相喜,施一軍,陳磊
(南京市測繪勘察研究院有限公司,江蘇 南京 210019)
?
CorelDRAW地圖制圖數(shù)據(jù)質(zhì)量自動化檢查方法研究
戴相喜*,施一軍,陳磊
(南京市測繪勘察研究院有限公司,江蘇 南京210019)
摘要:面向CorelDRAW地圖制圖數(shù)據(jù)檢查需求,在規(guī)范化地圖制圖基礎(chǔ)上,設(shè)計地圖數(shù)據(jù)檢查模板,用戶在該模板中設(shè)置各圖層數(shù)據(jù)制圖表達參數(shù),由程序自動讀取該參數(shù)對地圖制圖數(shù)據(jù)批量進行檢查,從而達到對制圖數(shù)據(jù)標準化檢查的目的,可以很大程度上減少制圖數(shù)據(jù)檢查工作量,提高檢查效率和準確性。
關(guān)鍵詞:CorelDRAW;質(zhì)檢;模板;二次開發(fā)
1引言
目前國內(nèi)地圖制圖領(lǐng)域較常見的軟件有CorelDRAW、ArcGIS、MapInfo等。ArcGIS和MapInfo是傳統(tǒng)的GIS軟件,擅長空間數(shù)據(jù)的查詢與分析,制圖功能是其在后續(xù)工作中不斷增加完善的,不是主推功能。CorelDRAW是專為制圖設(shè)計,以其豐富的制圖功能、精細的制圖效果占領(lǐng)了大部分的制圖市場,是目前國內(nèi)使用最廣泛的專業(yè)矢量圖形設(shè)計軟件[1,2]。
因地圖制圖要素種類、數(shù)量眾多,制圖人員在制作制圖數(shù)據(jù)過程中難免由于疏忽、誤操作等原因?qū)⒁胤皱e層、設(shè)置錯顏色等。傳統(tǒng)的地圖制圖數(shù)據(jù)質(zhì)量檢查通常由人工進行,由檢查人員根據(jù)地圖設(shè)計方案中預(yù)定的分層、顏色、線寬等,對制圖成果數(shù)據(jù)進行仔細檢查。這些錯誤若全由人工來檢查,一方面由于很多錯誤不能十分直觀地發(fā)現(xiàn),不能完全確定通過檢查能否將此類錯誤悉數(shù)查出;另一方面檢查工作量很大,會花費不小的人力成本,同時也會影響項目周期。
鑒于上述原因,本文設(shè)計一套軟件對地圖制圖數(shù)據(jù)進行標準化檢查,查看其是否按照制圖方案的分層、色彩等進行操作,對這部分工作自動化檢查,解放檢查人員的勞動力,讓他們更加專注于地圖自身圖面表達、效果等方面,力求做出更優(yōu)秀的地圖。
經(jīng)資料查閱,目前尚沒有見到基于CorelDRAW的地圖制圖數(shù)據(jù)質(zhì)檢程序方面科技論文或文獻發(fā)表。
2設(shè)計思路
本文設(shè)計的思路是首先由地圖設(shè)計人員根據(jù)地圖內(nèi)容對地圖的分層、顏色、線寬、字體等進行設(shè)計,設(shè)計時注意一般不同幾何類型放置在不同圖層,如有填充的面和普通的線不放在一個圖層,因為在CorelDRAW中這些類型不是嚴格意義上的幾何類型,只是通過填充、描邊等來控制其表現(xiàn)形式,很難通過幾何類型區(qū)分,通過圖層細分可以減少程序判斷的難度,表1為推薦的可以在同一圖層出現(xiàn)的常見類型。
在此基礎(chǔ)上設(shè)計數(shù)據(jù)檢查的模板,模板是基于微軟Access數(shù)據(jù)庫,其中定義了每個圖層的制圖表達參數(shù),如填充顏色、描邊顏色、色塊顏色、字體大小等。
基于檢查模板,設(shè)計了幾個主要的檢查功能如下:
(1)層名規(guī)范檢查
該檢查項檢查數(shù)據(jù)中圖層的層名是否都是模板中層名字段規(guī)定的名稱。由于模板中所有參數(shù)設(shè)置均與層名相關(guān)聯(lián),若被檢查數(shù)據(jù)中層名不正確,即無法使用正確的參數(shù)對該層進行檢查,因此層名檢查應(yīng)該是首先要被檢查的內(nèi)容。
(2)填充顏色檢查
該檢查項檢查幾何圖形和文字的填充顏色是否符合模板中填充顏色字段要求。在CorelDRAW中,文字不同于其他常見軟件,如AutoCAD、ArcGIS等,這里的文字如同幾何圖形一樣處理,有描邊和填充,因此將文字和幾何圖形放在一起做填充顏色檢查。如果模板中填充顏色字段設(shè)置了填充顏色值,則需檢查該層幾何圖形和文字填充顏色是否符合要求,如果沒有設(shè)置填充顏色值,則該圖層內(nèi)要素不允許有填充存在。
(3)描邊顏色檢查
該檢查項檢查幾何圖形和文字的描邊顏色是否符合模板中描邊顏色字段要求。如果模板中描邊顏色字段設(shè)置了值,則需檢查該層幾何圖形和文字的描邊是否符合要求,如果沒有設(shè)置值,則該層內(nèi)幾何圖形和文字不允許有描邊存在。
(4)描邊粗細檢查
該檢查項檢查幾何圖形和文字的描邊粗細和后臺描邊是否符合模板設(shè)置的描邊粗細及后臺描邊要求。
(5)色塊檢查
色塊是指為突出顯示某些文字而專門在其下放置的圖形。如果模板中色塊顏色設(shè)置了值,則一方面檢查該層內(nèi)的文字注記下是否有色塊存在,另一方面檢查該色塊的顏色、描邊是否與模板中色塊顏色、色塊描邊顏色、色塊描邊粗細中所設(shè)置值符合。
(6)注記字體檢查
該檢查項檢查文字注記所使用的字體是否符合模板中字體字段要求。如果模板中該層沒有設(shè)置字體,則該層中不應(yīng)有文字注記出現(xiàn),如果設(shè)置了字體,則檢查注記的字體是否與設(shè)置要求一致。
(7)注記大小檢查
該檢查項檢查文字注記的字體大小是否符合模板中字大字段要求。
(8)線型檢查
該檢查項檢查線類型幾何圖形的線型是否符合模板中線型字段要求。如果模板中該圖層未設(shè)置線型值,則該圖層中圖形不應(yīng)有線型,若設(shè)置了值,則應(yīng)符合所設(shè)值要求。
(9)符號圖層一致性檢查
該檢查項檢查符號是否放錯圖層。在模板的符號列表層中設(shè)置該圖層允許放置的符號名稱,圖層中只允許放置列表中列出的符號。
3關(guān)鍵技術(shù)及程序?qū)崿F(xiàn)
3.1關(guān)鍵技術(shù)
CorelDRAW軟件二次開發(fā)目前可查閱到的資料較少,這里將二次開發(fā)過程中關(guān)鍵知識點和注意事項列出。
(1)尺寸換算
檢查描邊粗細、字高時需要獲取對應(yīng)對象的尺寸數(shù)值,CorelDRAW程序在互操作界面上提供了字體的字高、圖形的描邊粗細等數(shù)值供用戶設(shè)置,這些數(shù)值的單位是我們常用的磅、米、毫米等,但是在程序開發(fā)時不能直接使用這些值來設(shè)置相應(yīng)的參數(shù),因為CorelDRAW維護了一套內(nèi)部尺寸標準,各互操作界面上的尺寸大小均需轉(zhuǎn)換為內(nèi)部尺寸標準方可使用。開發(fā)人員可以使用Document.ToUnits(double Value,cdrUnit FromUnit)函數(shù)來對界面上數(shù)值進行轉(zhuǎn)換。
(2)注記參數(shù)獲取
注記檢查時需獲取注記的字體、字高等參數(shù),獲取參數(shù)時需注意CorelDRAW中多段文字,多段文字每段均可使用不同的字體、字高參數(shù),而如果檢查時只檢查了第一段的參數(shù),未檢查后續(xù)段落參數(shù),則可能檢查不完全,開發(fā)人員可以使用Shape.Text.Story.Paragraphs.All屬性來獲取所有段落的參數(shù)。
(3)空間搜索
CorelDRAW作為矢量制圖軟件,未能像GIS軟件一樣提供靈活、強大的空間搜索函數(shù)供開發(fā)人員調(diào)用,但是也提供了一些簡單的空間搜索函數(shù),這里將其列出,開發(fā)檢查程序時如需做空間判斷,如搜索注記是否有色塊襯底,可使用這些函數(shù)。
Page.SelectShapesAtPoint(double x,double y,bool SelectUnfilled,double HotArea=-1);
Page.SelectShapesFromRectangle(double x1,double y1,double x2,double y2,bool Touch);
這兩個函數(shù)分別提供了點選和框選的功能,開發(fā)人員開發(fā)時可以合理加以利用。
(4)線型獲取
CorelDRAW中可以使用編輯線條樣式工具編輯制作線型,一般是使用黑白相間的樣式,黑白相間樣式可以單組重復(fù)或多組重復(fù)。開發(fā)人員可以通過Shape.Outline.Style.DashLength[i]和Shape.Outline.Style.GapLength[i]兩個屬性來分別獲取第i組黑、白顏色的長度。3.2程序?qū)崿F(xiàn)
(1)開發(fā)語言選擇
本程序選用C#語言,采用COM互操作的方式添加對CorelDRAW的引用,從而實現(xiàn)對其訪問和控制。
(2)模板設(shè)計
基于以上設(shè)計思路,設(shè)計Access數(shù)據(jù)庫模板屬性檢查表結(jié)構(gòu),如圖1所示,其中定義了層名、填充顏色、描邊顏色、描邊粗細、是否后臺描邊、色塊顏色、色塊描邊顏色、色塊描邊粗細、字體、是否粗體、符號列表、線型等字段,用來填寫各個圖層中圖形表達的參數(shù)。
圖1圖層參數(shù)設(shè)置
(3)檢查流程
檢查模板配置好之后即可進行制圖數(shù)據(jù)的程序自動檢查了,檢查的流程如圖2所示:
(4)程序界面
檢查程序界面圖3所示,檢查功能可批量對多文件執(zhí)行。
(5)檢查結(jié)果驗證
檢查程序主要工作是按圖層和幾何類型對數(shù)據(jù)進行遍歷,將遍歷出來的要素與模板設(shè)置參數(shù)進行對比,所需進行的邏輯判斷較簡單,其耗時主要集中在數(shù)據(jù)遍歷階段。
此處以一幅1∶8 000比例尺的制圖數(shù)據(jù)為例(如圖4所示),圖中共有注記435個,點對象192個,線對象 5 826個,進行描邊粗細、描邊顏色、注記字體、注記大小4項檢查,分別耗時: 249 min、 322 min、 141 min、 80 min,共耗時 772 min,檢查結(jié)果見圖5,圖中所示錯誤為城市次干道上層中線描邊粗細應(yīng)該為 3.2 mm,而圖中該線描邊粗細為 2 mm,故報錯。
4結(jié)語
本文設(shè)計并實現(xiàn)了一種基于數(shù)據(jù)庫模板的可定制的地圖制圖數(shù)據(jù)檢查程序,用戶可以在數(shù)據(jù)庫模板中設(shè)置各個圖層的制圖參數(shù),由程序自動讀取該參數(shù)對圖層中要素進行檢查,具有很大的靈活性。程序主要實現(xiàn)了對制圖數(shù)據(jù)的層名、填充顏色、描邊顏色、描邊粗細、字體名稱、字體大小等制圖表達參數(shù)的檢查,極大提高數(shù)據(jù)檢查的效率和準確性。本成果成功應(yīng)用于《中國城市地圖集系列之南京城市地圖集》中,取得了良好的效果。本文設(shè)計的程序不能完全代替人工檢查,如圖面內(nèi)容合理性等,這部分還需制圖檢查人員人工檢查,另外本程序?qū)ψ煮w檢查部分尚有不足,如缺少對文字拉伸、壓縮方面的檢查,需進一步加以研究完善。
參考文獻
[1]王瑞璋. 基于CorelDRAW的二次開發(fā)技術(shù)在地圖制圖中的應(yīng)用[J]. 測繪與空間地理信息,2013,36(3):173~175.
[2]高小明,湯青慧,溫俊麗. CorelDRAW中基于VBA的二次開發(fā)[J]. 測繪與空間地理信息,2006,29(6):54~56.
[3]張?zhí)旒? 使用CorelDRAW圖形軟件編制專題地圖集[J]. 城市勘測,2003(1):37~41.
[4]王昌翰,徐占華. 圖形軟件在重慶市地圖集中的應(yīng)用[J]. 城市勘測,2008(2): 102~104.
[5]梁建國,徐占華,顏宇. CorelDRAW VBA在地圖制圖中的應(yīng)用[J]. 測繪科學(xué),2009,34(10):218~219.
Research on Automatic Check Method for CorelDRAW Mapping Data
Dai Xiangxi,Shi Yijun,Chen Lei
(Nanjing Institute of Surveying,Mapping & Geotechnical Investigation,Co.,Ltd,Nanjing 210019,China)
Key words:CorelDRAW;check;template;secondary development
Abstract:This paper designed a Mapping data check template based on Standardization cartography method oriented to the demand of checking for CorelDraw Mapping data,user can set mapping parameters for each layer in this template,then the check program read parameters for the using of batch checking mapping data automatically,thus can achieve the goal of Checking for Mapping data Standardization,reduce the workload of checking mapping data to a great extent,improve Efficiency and Accuracy of checking.
文章編號:1672-8262(2016)03-59-04
中圖分類號:P208.1
文獻標識碼:B
*收稿日期:2016—03—09
作者簡介:戴相喜(1984—),男,碩士,工程師,主要從事地圖與GIS方面的研究工作。
基金項目:四川省地理國情監(jiān)測工程技術(shù)研究中心資助項目(GC201502)