張陳意,王山東,韋洛毅,韋 磊
(1.河海大學 地球科學與工程學院,江蘇 南京 211100)
航道圖生產過程主要包括數據預處理、CAD 數據轉換為GIS 數據、數據入庫前的產品質量檢查、數據入庫、最終質檢無誤后發布電子航道圖。在數據生產過程中由于外界因素、儀器限差、人工操作錯誤等都會影響電子航道圖數據的質量。數據質量是數字測繪產品的核心,在傳統的地圖質量檢查過程中,大多數通過人工目視判讀來檢查,不僅費時費力,檢查效率低下,而且有些細節錯誤無法通過人工檢查直接得到,另一方面,航道圖信息采集、圖形繪制、屬性錄入依托的平臺是CAD,所以保障CAD 數據質量將直接決定了GIS 數據質量[1]。綜上所述,基于CAD 平臺二次開實現數據質量自動化檢察成為航道圖數據質量控制的重要手段。
內河電子航道圖技術規范(JTS195-3-2019)[2]中規定了電子航道圖數據所有需要進行檢查的內容,有效性檢驗列表包括物標、屬性、數據結構等相關的詳細檢驗內容及其特殊物標屬性值的檢驗,檢驗結果分為錯誤和警告兩類:錯誤用E 表示,警告用W 表示。檢驗中發現的錯誤應處理,不影響數據整體質量的警告可不處理。對于不符合質檢要求的實體在做出相應修改后,應再次檢查,直至航道圖中無錯誤實體為止。
基礎地理信息要素數據字典第1 部分:1∶500、1∶1 000、 1∶2 000 比例尺(GB/T20258.1-2019)[3]中詳細闡述了各類地物與相關要素之間的關系,比如橋梁與橋墩之間的要素關系為連接、包含。
基于這兩個標準,結合內河電子航道圖普查數據,根據實際需求,確定所有需要檢查的內容。根據檢查的不同方面共分為6 個大類,分別為屬性檢查、層內拓撲、層間拓撲、接邊檢查、數據組織結構檢查、特殊地物屬性值檢查,部分質量檢查規則如表1 所示。程序的檢查內容主要為物標的屬性檢查與拓撲檢查[4]。

表1 質量檢查規則表(部分)
CAD 圖形文件作為制作內河電子航道圖的主要初始數據,可以準確地獲得工程相關基礎數據和信息[5]。而現有航道圖外業數據采集以及屬性錄入大多數依托CAD 平臺進行,因此本文基于AutoCAD 平臺結合ObjectARX 利用C#語言進行質檢軟件的開發[6],質檢流程圖如圖1 所示。

圖1 質檢流程圖
1)易用和實用性原則。將所有質檢的數據參數全部放在質檢規則庫中,并直接后臺調用。質檢人員可在質檢過程中對不符合質檢規則的實體進行定位并做出相應修改。
2)可擴展性原則。軟件動態讀取所有的質檢規則類與需要進行質檢的內容參數,并留有接口,以便后期對質檢代碼進行更新與擴展
3)界面友好。質檢界面整潔、實用,與CAD 交互性好,質檢功能可以得到很好的展示,并可進行對物標定位。
質量檢查規則庫主要由三張表構成,分別為質檢規則表、實例主表、實例表。
其中質檢規則表中存放的是各個檢查規則類,如屬性檢查中的屬性值不為空、字段值值域符合規則、多屬性約束等,層內拓撲中的點與點不能重疊、線段不能自相交、面與面不能重疊等,層間拓撲中的點與點不能重疊、面與面不能重疊等,每一個規則都對應著一個相應的功能函數,質檢規則表結構如表2所示。
實例主表中存放的是對應于質檢規則表中每一個規則檢查項所對應的詳細檢查規則項,如層內拓撲檢查中的點與點不能重疊包含4 個具體的檢查規則項,包括檢查水深點不重合、高程基準不重疊、深度基準不重疊、檢查相連結點或孤立結點不重合[7],實例主表通過SortCode 與質檢規則表進行關聯,從而確定每一個具體的檢查實例進行質檢時所要調用的函數名,具體表結構如表3 所示。
實例表中存放著實例主表中詳細檢查規則項對應的參數,如檢查具有中文名稱(NOBJNM)的物標的英文名稱(OBJNAM)不為空缺,而在內河的物標數據庫中,具有NOBJNM 屬性的物標有很多類,因此通過SortCode 與ExNo 兩個字段與實例主表進行關聯,可以實現對多個不同類別的物標進行同一個質檢規則的檢查,具體表結構如表4 所示。
通過構建的質量檢查規則庫可以實現跟質檢有關的所有數據全部后臺處理,在進行質檢時只需要進行選擇質檢哪一項然后即可調用相關功能算法與質檢參數,因此可以使程序具有較高的可定制性與可擴展性。

表2 質檢規則表

表3 實例主表

表4 實例表
首先選擇需要進行質檢規則的大類,可進行一鍵式全部選擇,也可自由選擇,界面如圖2 所示,每一個規則大類都對應若干詳細的質檢規則項,若選擇了質檢規則的大類,則與其相對應的所有質檢規則項默認全部選擇,并且可自由選擇是否需要對具體的質檢規則項質檢,其中層內拓撲中點與點不重疊的相關質檢規則項如圖3 所示。若不需要進行質檢,則取消勾選相應的檢查項即可。選擇完所有要進行的質檢規則大類與質檢規則項以后,點擊檢查,即可在后臺調動相應的質檢函數與質檢項的參數,并將不符合的結果首先輸出在質檢結果集中,如圖4 所示。質檢過程方便,操作簡單,用戶不需要在質檢過程中設置任何參數,只需要按需求進行選擇質檢項即可。質檢界面如圖2 中所示。

圖2 質量規則類

圖3 質檢規則項

圖4 質檢結果集
2.3.1 屬性檢查
對于屬性的檢查,在質檢結果集中雙擊有錯誤的那一列即可利用物標的ObjectID 進行定位,實體高亮并以一定的大小顯示在界面的中心,并自動彈出屬性的錄入界面,直接對不符合質檢要求的屬性值進行修改。如檢查河流的物標名稱不為空,可以在屬性錄入界面對河流的物標名稱屬性值進行修改,如圖5 所示。操作簡單直觀,將大量減少質檢人員的任務量,簡化借助質檢報告去確定物標再去修改屬性的操作過程。

圖5 河流屬性修改界面
2.3.2 拓撲檢查
拓撲檢查包括層間檢查與層內檢查,為了降低程序的復雜性,提高程序的重復使用度,很多算法對層間檢查與層內檢查皆適用,如層內點重疊與層間點重疊、層內面重疊與層間面重疊等的質檢算法基本一致,不同之處在于層間檢查傳入的參數屬于兩個不同的圖層,而層內檢查傳入的參數是兩個相同的圖層,然后在質檢過程中進行判斷,如果是同一個物標則不再進行兩者關系判斷,但其核心的算法都是一樣的[8]。
在質檢界面中,可根據用戶勾選的檢查內容進行質檢,將不符合拓撲規則的實體輸出在質檢結果集中,再雙擊錯誤項可根據ObjectID 進行自動定位,使錯誤實體高亮以一定大小顯示在CAD 中心,初步判斷實體的拓撲情況,并對實體進行相應修改。
2.3.3 打印質檢報告
根據質檢結果集中的信息,打印質檢報告,打印內容為對應的質檢規則大類的編碼、具體的檢查項內容、實體的句柄,以及每一個大類中不符合質檢規則的實體百分比。根據質檢報告可以對實體的標準化與規范進行初步結果判斷。輸出實體句柄的原因在于CAD 中每一次打開物體的ObjectID 都會改變,因此可以根據句柄的唯一性確定實體。具體流程如下:首先根據句柄獲取實體最新的ObjectID,然后根據ObjectID 對物標進行定位,最后根據檢查項的內容可再次對實體進行相關修改。
該質檢程序首先將應用于京杭運河蘇北段(試驗段)電子航道圖生產過程中的質量檢查,相較于以往的傳統人工質檢模式,將會大大提高質量檢查效率,縮短電子航道圖的生產周期,降低人工成本和時間成本。本程序將會進一步與PostGIS 空間關系數據庫想結合[9],將CAD 質量檢查與GIS 質量檢查合并為同一類檢查,最后根據錯誤報告將錯誤圖形在源CAD 中進行定位,保持CAD 與GIS 圖形的同步修改,實現電子航道圖跨平臺使用與發布。