戴相喜,施一軍,陳磊
(南京市測繪勘察研究院有限公司,江蘇 南京 210019)
?
CorelDRAW地圖制圖數(shù)據(jù)質(zhì)量自動(dòng)化檢查方法研究
戴相喜*,施一軍,陳磊
(南京市測繪勘察研究院有限公司,江蘇 南京210019)
摘要:面向CorelDRAW地圖制圖數(shù)據(jù)檢查需求,在規(guī)范化地圖制圖基礎(chǔ)上,設(shè)計(jì)地圖數(shù)據(jù)檢查模板,用戶在該模板中設(shè)置各圖層數(shù)據(jù)制圖表達(dá)參數(shù),由程序自動(dòng)讀取該參數(shù)對(duì)地圖制圖數(shù)據(jù)批量進(jìn)行檢查,從而達(dá)到對(duì)制圖數(shù)據(jù)標(biāo)準(zhǔn)化檢查的目的,可以很大程度上減少制圖數(shù)據(jù)檢查工作量,提高檢查效率和準(zhǔn)確性。
關(guān)鍵詞:CorelDRAW;質(zhì)檢;模板;二次開發(fā)
1引言
目前國內(nèi)地圖制圖領(lǐng)域較常見的軟件有CorelDRAW、ArcGIS、MapInfo等。ArcGIS和MapInfo是傳統(tǒng)的GIS軟件,擅長空間數(shù)據(jù)的查詢與分析,制圖功能是其在后續(xù)工作中不斷增加完善的,不是主推功能。CorelDRAW是專為制圖設(shè)計(jì),以其豐富的制圖功能、精細(xì)的制圖效果占領(lǐng)了大部分的制圖市場,是目前國內(nèi)使用最廣泛的專業(yè)矢量圖形設(shè)計(jì)軟件[1,2]。
因地圖制圖要素種類、數(shù)量眾多,制圖人員在制作制圖數(shù)據(jù)過程中難免由于疏忽、誤操作等原因?qū)⒁胤皱e(cuò)層、設(shè)置錯(cuò)顏色等。傳統(tǒng)的地圖制圖數(shù)據(jù)質(zhì)量檢查通常由人工進(jìn)行,由檢查人員根據(jù)地圖設(shè)計(jì)方案中預(yù)定的分層、顏色、線寬等,對(duì)制圖成果數(shù)據(jù)進(jìn)行仔細(xì)檢查。這些錯(cuò)誤若全由人工來檢查,一方面由于很多錯(cuò)誤不能十分直觀地發(fā)現(xiàn),不能完全確定通過檢查能否將此類錯(cuò)誤悉數(shù)查出;另一方面檢查工作量很大,會(huì)花費(fèi)不小的人力成本,同時(shí)也會(huì)影響項(xiàng)目周期。
鑒于上述原因,本文設(shè)計(jì)一套軟件對(duì)地圖制圖數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化檢查,查看其是否按照制圖方案的分層、色彩等進(jìn)行操作,對(duì)這部分工作自動(dòng)化檢查,解放檢查人員的勞動(dòng)力,讓他們更加專注于地圖自身圖面表達(dá)、效果等方面,力求做出更優(yōu)秀的地圖。
經(jīng)資料查閱,目前尚沒有見到基于CorelDRAW的地圖制圖數(shù)據(jù)質(zhì)檢程序方面科技論文或文獻(xiàn)發(fā)表。
2設(shè)計(jì)思路
本文設(shè)計(jì)的思路是首先由地圖設(shè)計(jì)人員根據(jù)地圖內(nèi)容對(duì)地圖的分層、顏色、線寬、字體等進(jìn)行設(shè)計(jì),設(shè)計(jì)時(shí)注意一般不同幾何類型放置在不同圖層,如有填充的面和普通的線不放在一個(gè)圖層,因?yàn)樵贑orelDRAW中這些類型不是嚴(yán)格意義上的幾何類型,只是通過填充、描邊等來控制其表現(xiàn)形式,很難通過幾何類型區(qū)分,通過圖層細(xì)分可以減少程序判斷的難度,表1為推薦的可以在同一圖層出現(xiàn)的常見類型。
在此基礎(chǔ)上設(shè)計(jì)數(shù)據(jù)檢查的模板,模板是基于微軟Access數(shù)據(jù)庫,其中定義了每個(gè)圖層的制圖表達(dá)參數(shù),如填充顏色、描邊顏色、色塊顏色、字體大小等。
基于檢查模板,設(shè)計(jì)了幾個(gè)主要的檢查功能如下:
(1)層名規(guī)范檢查
該檢查項(xiàng)檢查數(shù)據(jù)中圖層的層名是否都是模板中層名字段規(guī)定的名稱。由于模板中所有參數(shù)設(shè)置均與層名相關(guān)聯(lián),若被檢查數(shù)據(jù)中層名不正確,即無法使用正確的參數(shù)對(duì)該層進(jìn)行檢查,因此層名檢查應(yīng)該是首先要被檢查的內(nèi)容。
(2)填充顏色檢查
該檢查項(xiàng)檢查幾何圖形和文字的填充顏色是否符合模板中填充顏色字段要求。在CorelDRAW中,文字不同于其他常見軟件,如AutoCAD、ArcGIS等,這里的文字如同幾何圖形一樣處理,有描邊和填充,因此將文字和幾何圖形放在一起做填充顏色檢查。如果模板中填充顏色字段設(shè)置了填充顏色值,則需檢查該層幾何圖形和文字填充顏色是否符合要求,如果沒有設(shè)置填充顏色值,則該圖層內(nèi)要素不允許有填充存在。
(3)描邊顏色檢查
該檢查項(xiàng)檢查幾何圖形和文字的描邊顏色是否符合模板中描邊顏色字段要求。如果模板中描邊顏色字段設(shè)置了值,則需檢查該層幾何圖形和文字的描邊是否符合要求,如果沒有設(shè)置值,則該層內(nèi)幾何圖形和文字不允許有描邊存在。
(4)描邊粗細(xì)檢查
該檢查項(xiàng)檢查幾何圖形和文字的描邊粗細(xì)和后臺(tái)描邊是否符合模板設(shè)置的描邊粗細(xì)及后臺(tái)描邊要求。
(5)色塊檢查
色塊是指為突出顯示某些文字而專門在其下放置的圖形。如果模板中色塊顏色設(shè)置了值,則一方面檢查該層內(nèi)的文字注記下是否有色塊存在,另一方面檢查該色塊的顏色、描邊是否與模板中色塊顏色、色塊描邊顏色、色塊描邊粗細(xì)中所設(shè)置值符合。
(6)注記字體檢查
該檢查項(xiàng)檢查文字注記所使用的字體是否符合模板中字體字段要求。如果模板中該層沒有設(shè)置字體,則該層中不應(yīng)有文字注記出現(xiàn),如果設(shè)置了字體,則檢查注記的字體是否與設(shè)置要求一致。
(7)注記大小檢查
該檢查項(xiàng)檢查文字注記的字體大小是否符合模板中字大字段要求。
(8)線型檢查
該檢查項(xiàng)檢查線類型幾何圖形的線型是否符合模板中線型字段要求。如果模板中該圖層未設(shè)置線型值,則該圖層中圖形不應(yīng)有線型,若設(shè)置了值,則應(yīng)符合所設(shè)值要求。
(9)符號(hào)圖層一致性檢查
該檢查項(xiàng)檢查符號(hào)是否放錯(cuò)圖層。在模板的符號(hào)列表層中設(shè)置該圖層允許放置的符號(hào)名稱,圖層中只允許放置列表中列出的符號(hào)。
3關(guān)鍵技術(shù)及程序?qū)崿F(xiàn)
3.1關(guān)鍵技術(shù)
CorelDRAW軟件二次開發(fā)目前可查閱到的資料較少,這里將二次開發(fā)過程中關(guān)鍵知識(shí)點(diǎn)和注意事項(xiàng)列出。
(1)尺寸換算
檢查描邊粗細(xì)、字高時(shí)需要獲取對(duì)應(yīng)對(duì)象的尺寸數(shù)值,CorelDRAW程序在互操作界面上提供了字體的字高、圖形的描邊粗細(xì)等數(shù)值供用戶設(shè)置,這些數(shù)值的單位是我們常用的磅、米、毫米等,但是在程序開發(fā)時(shí)不能直接使用這些值來設(shè)置相應(yīng)的參數(shù),因?yàn)镃orelDRAW維護(hù)了一套內(nèi)部尺寸標(biāo)準(zhǔn),各互操作界面上的尺寸大小均需轉(zhuǎn)換為內(nèi)部尺寸標(biāo)準(zhǔn)方可使用。開發(fā)人員可以使用Document.ToUnits(double Value,cdrUnit FromUnit)函數(shù)來對(duì)界面上數(shù)值進(jìn)行轉(zhuǎn)換。
(2)注記參數(shù)獲取
注記檢查時(shí)需獲取注記的字體、字高等參數(shù),獲取參數(shù)時(shí)需注意CorelDRAW中多段文字,多段文字每段均可使用不同的字體、字高參數(shù),而如果檢查時(shí)只檢查了第一段的參數(shù),未檢查后續(xù)段落參數(shù),則可能檢查不完全,開發(fā)人員可以使用Shape.Text.Story.Paragraphs.All屬性來獲取所有段落的參數(shù)。
(3)空間搜索
CorelDRAW作為矢量制圖軟件,未能像GIS軟件一樣提供靈活、強(qiáng)大的空間搜索函數(shù)供開發(fā)人員調(diào)用,但是也提供了一些簡單的空間搜索函數(shù),這里將其列出,開發(fā)檢查程序時(shí)如需做空間判斷,如搜索注記是否有色塊襯底,可使用這些函數(shù)。
Page.SelectShapesAtPoint(double x,double y,bool SelectUnfilled,double HotArea=-1);
Page.SelectShapesFromRectangle(double x1,double y1,double x2,double y2,bool Touch);
這兩個(gè)函數(shù)分別提供了點(diǎn)選和框選的功能,開發(fā)人員開發(fā)時(shí)可以合理加以利用。
(4)線型獲取
CorelDRAW中可以使用編輯線條樣式工具編輯制作線型,一般是使用黑白相間的樣式,黑白相間樣式可以單組重復(fù)或多組重復(fù)。開發(fā)人員可以通過Shape.Outline.Style.DashLength[i]和Shape.Outline.Style.GapLength[i]兩個(gè)屬性來分別獲取第i組黑、白顏色的長度。3.2程序?qū)崿F(xiàn)
(1)開發(fā)語言選擇
本程序選用C#語言,采用COM互操作的方式添加對(duì)CorelDRAW的引用,從而實(shí)現(xiàn)對(duì)其訪問和控制。
(2)模板設(shè)計(jì)
基于以上設(shè)計(jì)思路,設(shè)計(jì)Access數(shù)據(jù)庫模板屬性檢查表結(jié)構(gòu),如圖1所示,其中定義了層名、填充顏色、描邊顏色、描邊粗細(xì)、是否后臺(tái)描邊、色塊顏色、色塊描邊顏色、色塊描邊粗細(xì)、字體、是否粗體、符號(hào)列表、線型等字段,用來填寫各個(gè)圖層中圖形表達(dá)的參數(shù)。

圖1圖層參數(shù)設(shè)置
(3)檢查流程
檢查模板配置好之后即可進(jìn)行制圖數(shù)據(jù)的程序自動(dòng)檢查了,檢查的流程如圖2所示:
(4)程序界面
檢查程序界面圖3所示,檢查功能可批量對(duì)多文件執(zhí)行。
(5)檢查結(jié)果驗(yàn)證
檢查程序主要工作是按圖層和幾何類型對(duì)數(shù)據(jù)進(jìn)行遍歷,將遍歷出來的要素與模板設(shè)置參數(shù)進(jìn)行對(duì)比,所需進(jìn)行的邏輯判斷較簡單,其耗時(shí)主要集中在數(shù)據(jù)遍歷階段。
此處以一幅1∶8 000比例尺的制圖數(shù)據(jù)為例(如圖4所示),圖中共有注記435個(gè),點(diǎn)對(duì)象192個(gè),線對(duì)象 5 826個(gè),進(jìn)行描邊粗細(xì)、描邊顏色、注記字體、注記大小4項(xiàng)檢查,分別耗時(shí): 249 min、 322 min、 141 min、 80 min,共耗時(shí) 772 min,檢查結(jié)果見圖5,圖中所示錯(cuò)誤為城市次干道上層中線描邊粗細(xì)應(yīng)該為 3.2 mm,而圖中該線描邊粗細(xì)為 2 mm,故報(bào)錯(cuò)。
4結(jié)語
本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于數(shù)據(jù)庫模板的可定制的地圖制圖數(shù)據(jù)檢查程序,用戶可以在數(shù)據(jù)庫模板中設(shè)置各個(gè)圖層的制圖參數(shù),由程序自動(dòng)讀取該參數(shù)對(duì)圖層中要素進(jìn)行檢查,具有很大的靈活性。程序主要實(shí)現(xiàn)了對(duì)制圖數(shù)據(jù)的層名、填充顏色、描邊顏色、描邊粗細(xì)、字體名稱、字體大小等制圖表達(dá)參數(shù)的檢查,極大提高數(shù)據(jù)檢查的效率和準(zhǔn)確性。本成果成功應(yīng)用于《中國城市地圖集系列之南京城市地圖集》中,取得了良好的效果。本文設(shè)計(jì)的程序不能完全代替人工檢查,如圖面內(nèi)容合理性等,這部分還需制圖檢查人員人工檢查,另外本程序?qū)ψ煮w檢查部分尚有不足,如缺少對(duì)文字拉伸、壓縮方面的檢查,需進(jìn)一步加以研究完善。
參考文獻(xiàn)
[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.
文章編號(hào):1672-8262(2016)03-59-04
中圖分類號(hào):P208.1
文獻(xiàn)標(biāo)識(shí)碼:B
*收稿日期:2016—03—09
作者簡介:戴相喜(1984—),男,碩士,工程師,主要從事地圖與GIS方面的研究工作。
基金項(xiàng)目:四川省地理國情監(jiān)測工程技術(shù)研究中心資助項(xiàng)目(GC201502)