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