張陳意,王山東,韋洛毅,韋 磊
(1.河海大學(xué) 地球科學(xué)與工程學(xué)院,江蘇 南京 211100)
航道圖生產(chǎn)過程主要包括數(shù)據(jù)預(yù)處理、CAD 數(shù)據(jù)轉(zhuǎn)換為GIS 數(shù)據(jù)、數(shù)據(jù)入庫前的產(chǎn)品質(zhì)量檢查、數(shù)據(jù)入庫、最終質(zhì)檢無誤后發(fā)布電子航道圖。在數(shù)據(jù)生產(chǎn)過程中由于外界因素、儀器限差、人工操作錯誤等都會影響電子航道圖數(shù)據(jù)的質(zhì)量。數(shù)據(jù)質(zhì)量是數(shù)字測繪產(chǎn)品的核心,在傳統(tǒng)的地圖質(zhì)量檢查過程中,大多數(shù)通過人工目視判讀來檢查,不僅費時費力,檢查效率低下,而且有些細(xì)節(jié)錯誤無法通過人工檢查直接得到,另一方面,航道圖信息采集、圖形繪制、屬性錄入依托的平臺是CAD,所以保障CAD 數(shù)據(jù)質(zhì)量將直接決定了GIS 數(shù)據(jù)質(zhì)量[1]。綜上所述,基于CAD 平臺二次開實現(xiàn)數(shù)據(jù)質(zhì)量自動化檢察成為航道圖數(shù)據(jù)質(zhì)量控制的重要手段。
內(nèi)河電子航道圖技術(shù)規(guī)范(JTS195-3-2019)[2]中規(guī)定了電子航道圖數(shù)據(jù)所有需要進(jìn)行檢查的內(nèi)容,有效性檢驗列表包括物標(biāo)、屬性、數(shù)據(jù)結(jié)構(gòu)等相關(guān)的詳細(xì)檢驗內(nèi)容及其特殊物標(biāo)屬性值的檢驗,檢驗結(jié)果分為錯誤和警告兩類:錯誤用E 表示,警告用W 表示。檢驗中發(fā)現(xiàn)的錯誤應(yīng)處理,不影響數(shù)據(jù)整體質(zhì)量的警告可不處理。對于不符合質(zhì)檢要求的實體在做出相應(yīng)修改后,應(yīng)再次檢查,直至航道圖中無錯誤實體為止。
基礎(chǔ)地理信息要素數(shù)據(jù)字典第1 部分:1∶500、1∶1 000、 1∶2 000 比例尺(GB/T20258.1-2019)[3]中詳細(xì)闡述了各類地物與相關(guān)要素之間的關(guān)系,比如橋梁與橋墩之間的要素關(guān)系為連接、包含。
基于這兩個標(biāo)準(zhǔn),結(jié)合內(nèi)河電子航道圖普查數(shù)據(jù),根據(jù)實際需求,確定所有需要檢查的內(nèi)容。根據(jù)檢查的不同方面共分為6 個大類,分別為屬性檢查、層內(nèi)拓?fù)?、層間拓?fù)?、接邊檢查、數(shù)據(jù)組織結(jié)構(gòu)檢查、特殊地物屬性值檢查,部分質(zhì)量檢查規(guī)則如表1 所示。程序的檢查內(nèi)容主要為物標(biāo)的屬性檢查與拓?fù)錂z查[4]。
表1 質(zhì)量檢查規(guī)則表(部分)
CAD 圖形文件作為制作內(nèi)河電子航道圖的主要初始數(shù)據(jù),可以準(zhǔn)確地獲得工程相關(guān)基礎(chǔ)數(shù)據(jù)和信息[5]。而現(xiàn)有航道圖外業(yè)數(shù)據(jù)采集以及屬性錄入大多數(shù)依托CAD 平臺進(jìn)行,因此本文基于AutoCAD 平臺結(jié)合ObjectARX 利用C#語言進(jìn)行質(zhì)檢軟件的開發(fā)[6],質(zhì)檢流程圖如圖1 所示。
圖1 質(zhì)檢流程圖
1)易用和實用性原則。將所有質(zhì)檢的數(shù)據(jù)參數(shù)全部放在質(zhì)檢規(guī)則庫中,并直接后臺調(diào)用。質(zhì)檢人員可在質(zhì)檢過程中對不符合質(zhì)檢規(guī)則的實體進(jìn)行定位并做出相應(yīng)修改。
2)可擴展性原則。軟件動態(tài)讀取所有的質(zhì)檢規(guī)則類與需要進(jìn)行質(zhì)檢的內(nèi)容參數(shù),并留有接口,以便后期對質(zhì)檢代碼進(jìn)行更新與擴展
3)界面友好。質(zhì)檢界面整潔、實用,與CAD 交互性好,質(zhì)檢功能可以得到很好的展示,并可進(jìn)行對物標(biāo)定位。
質(zhì)量檢查規(guī)則庫主要由三張表構(gòu)成,分別為質(zhì)檢規(guī)則表、實例主表、實例表。
其中質(zhì)檢規(guī)則表中存放的是各個檢查規(guī)則類,如屬性檢查中的屬性值不為空、字段值值域符合規(guī)則、多屬性約束等,層內(nèi)拓?fù)渲械狞c與點不能重疊、線段不能自相交、面與面不能重疊等,層間拓?fù)渲械狞c與點不能重疊、面與面不能重疊等,每一個規(guī)則都對應(yīng)著一個相應(yīng)的功能函數(shù),質(zhì)檢規(guī)則表結(jié)構(gòu)如表2所示。
實例主表中存放的是對應(yīng)于質(zhì)檢規(guī)則表中每一個規(guī)則檢查項所對應(yīng)的詳細(xì)檢查規(guī)則項,如層內(nèi)拓?fù)錂z查中的點與點不能重疊包含4 個具體的檢查規(guī)則項,包括檢查水深點不重合、高程基準(zhǔn)不重疊、深度基準(zhǔn)不重疊、檢查相連結(jié)點或孤立結(jié)點不重合[7],實例主表通過SortCode 與質(zhì)檢規(guī)則表進(jìn)行關(guān)聯(lián),從而確定每一個具體的檢查實例進(jìn)行質(zhì)檢時所要調(diào)用的函數(shù)名,具體表結(jié)構(gòu)如表3 所示。
實例表中存放著實例主表中詳細(xì)檢查規(guī)則項對應(yīng)的參數(shù),如檢查具有中文名稱(NOBJNM)的物標(biāo)的英文名稱(OBJNAM)不為空缺,而在內(nèi)河的物標(biāo)數(shù)據(jù)庫中,具有NOBJNM 屬性的物標(biāo)有很多類,因此通過SortCode 與ExNo 兩個字段與實例主表進(jìn)行關(guān)聯(lián),可以實現(xiàn)對多個不同類別的物標(biāo)進(jìn)行同一個質(zhì)檢規(guī)則的檢查,具體表結(jié)構(gòu)如表4 所示。
通過構(gòu)建的質(zhì)量檢查規(guī)則庫可以實現(xiàn)跟質(zhì)檢有關(guān)的所有數(shù)據(jù)全部后臺處理,在進(jìn)行質(zhì)檢時只需要進(jìn)行選擇質(zhì)檢哪一項然后即可調(diào)用相關(guān)功能算法與質(zhì)檢參數(shù),因此可以使程序具有較高的可定制性與可擴展性。
表2 質(zhì)檢規(guī)則表
表3 實例主表
表4 實例表
首先選擇需要進(jìn)行質(zhì)檢規(guī)則的大類,可進(jìn)行一鍵式全部選擇,也可自由選擇,界面如圖2 所示,每一個規(guī)則大類都對應(yīng)若干詳細(xì)的質(zhì)檢規(guī)則項,若選擇了質(zhì)檢規(guī)則的大類,則與其相對應(yīng)的所有質(zhì)檢規(guī)則項默認(rèn)全部選擇,并且可自由選擇是否需要對具體的質(zhì)檢規(guī)則項質(zhì)檢,其中層內(nèi)拓?fù)渲悬c與點不重疊的相關(guān)質(zhì)檢規(guī)則項如圖3 所示。若不需要進(jìn)行質(zhì)檢,則取消勾選相應(yīng)的檢查項即可。選擇完所有要進(jìn)行的質(zhì)檢規(guī)則大類與質(zhì)檢規(guī)則項以后,點擊檢查,即可在后臺調(diào)動相應(yīng)的質(zhì)檢函數(shù)與質(zhì)檢項的參數(shù),并將不符合的結(jié)果首先輸出在質(zhì)檢結(jié)果集中,如圖4 所示。質(zhì)檢過程方便,操作簡單,用戶不需要在質(zhì)檢過程中設(shè)置任何參數(shù),只需要按需求進(jìn)行選擇質(zhì)檢項即可。質(zhì)檢界面如圖2 中所示。
圖2 質(zhì)量規(guī)則類
圖3 質(zhì)檢規(guī)則項
圖4 質(zhì)檢結(jié)果集
2.3.1 屬性檢查
對于屬性的檢查,在質(zhì)檢結(jié)果集中雙擊有錯誤的那一列即可利用物標(biāo)的ObjectID 進(jìn)行定位,實體高亮并以一定的大小顯示在界面的中心,并自動彈出屬性的錄入界面,直接對不符合質(zhì)檢要求的屬性值進(jìn)行修改。如檢查河流的物標(biāo)名稱不為空,可以在屬性錄入界面對河流的物標(biāo)名稱屬性值進(jìn)行修改,如圖5 所示。操作簡單直觀,將大量減少質(zhì)檢人員的任務(wù)量,簡化借助質(zhì)檢報告去確定物標(biāo)再去修改屬性的操作過程。
圖5 河流屬性修改界面
2.3.2 拓?fù)錂z查
拓?fù)錂z查包括層間檢查與層內(nèi)檢查,為了降低程序的復(fù)雜性,提高程序的重復(fù)使用度,很多算法對層間檢查與層內(nèi)檢查皆適用,如層內(nèi)點重疊與層間點重疊、層內(nèi)面重疊與層間面重疊等的質(zhì)檢算法基本一致,不同之處在于層間檢查傳入的參數(shù)屬于兩個不同的圖層,而層內(nèi)檢查傳入的參數(shù)是兩個相同的圖層,然后在質(zhì)檢過程中進(jìn)行判斷,如果是同一個物標(biāo)則不再進(jìn)行兩者關(guān)系判斷,但其核心的算法都是一樣的[8]。
在質(zhì)檢界面中,可根據(jù)用戶勾選的檢查內(nèi)容進(jìn)行質(zhì)檢,將不符合拓?fù)湟?guī)則的實體輸出在質(zhì)檢結(jié)果集中,再雙擊錯誤項可根據(jù)ObjectID 進(jìn)行自動定位,使錯誤實體高亮以一定大小顯示在CAD 中心,初步判斷實體的拓?fù)淝闆r,并對實體進(jìn)行相應(yīng)修改。
2.3.3 打印質(zhì)檢報告
根據(jù)質(zhì)檢結(jié)果集中的信息,打印質(zhì)檢報告,打印內(nèi)容為對應(yīng)的質(zhì)檢規(guī)則大類的編碼、具體的檢查項內(nèi)容、實體的句柄,以及每一個大類中不符合質(zhì)檢規(guī)則的實體百分比。根據(jù)質(zhì)檢報告可以對實體的標(biāo)準(zhǔn)化與規(guī)范進(jìn)行初步結(jié)果判斷。輸出實體句柄的原因在于CAD 中每一次打開物體的ObjectID 都會改變,因此可以根據(jù)句柄的唯一性確定實體。具體流程如下:首先根據(jù)句柄獲取實體最新的ObjectID,然后根據(jù)ObjectID 對物標(biāo)進(jìn)行定位,最后根據(jù)檢查項的內(nèi)容可再次對實體進(jìn)行相關(guān)修改。
該質(zhì)檢程序首先將應(yīng)用于京杭運河蘇北段(試驗段)電子航道圖生產(chǎn)過程中的質(zhì)量檢查,相較于以往的傳統(tǒng)人工質(zhì)檢模式,將會大大提高質(zhì)量檢查效率,縮短電子航道圖的生產(chǎn)周期,降低人工成本和時間成本。本程序?qū)M(jìn)一步與PostGIS 空間關(guān)系數(shù)據(jù)庫想結(jié)合[9],將CAD 質(zhì)量檢查與GIS 質(zhì)量檢查合并為同一類檢查,最后根據(jù)錯誤報告將錯誤圖形在源CAD 中進(jìn)行定位,保持CAD 與GIS 圖形的同步修改,實現(xiàn)電子航道圖跨平臺使用與發(fā)布。