王 海,姚金明
(1. 濟南市勘察測繪研究院,山東 濟南 250101;2. 山東省國土測繪院,山東 濟南 250102)
地理信息智能化服務的新時代即將到來[1-2],人們對數據現勢性和內容豐富性提出了更高的要求[3]。傳統更新模式已不能滿足更新頻率和質量控制要求,迫切需要優化生產技術流程和采用更先進的更新理念[4-12]。本文在山東省地理信息公共服務平臺(以下簡稱平臺)框架數據更新工作中,探索了一種地理空間數據在線協同更新方法,以實現地理空間數據多用戶在線更新、用戶編輯權限可控和編輯操作過程可追溯。
平臺框架要素數據包括水系、道路、居民地、境界、植被等,比例尺主要為1∶10 000、1∶50 000,是在基礎地理信息數據庫的基礎上,通過要素選取、地理對象構建、數據融合等技術手段生產而成的。傳統的省級地理空間框架要素數據更新首先根據發生變化的范圍,從源數據中裁切出待更新數據;所有待更新數據更新完成后,再與原始數據中未發生變化的區域進行接邊處理;最終對地理空間框架數據進行更新。假如發生變化的范圍很多或很零散,后期數據接邊工作將耗費大量的時間和精力;且接邊操作易出現拓撲錯誤,用戶編輯權限不好控制,更新質量無法追溯[13]。因此,本文提出了一種基于編輯權限分配的地理空間數據在線協同更新方法,利用ArcSDE 版本管理機制實現多用戶、在線協同編輯操作,依托關系型數據庫的權限管理機制授予(或收回)編輯用戶框架要素數據的select、insert、update、delete 權限,研發Add-in插件記錄用戶編輯操作,控制用戶字段編輯權限。具體工作流程為[14]:①將框架要素數據中的居民地、交通、水系、境界等數據導入ArcSDE 數據庫,并注冊為版本;②通過管理端應用程序創建編輯作業小組,分別授予其數據查看、編輯權限,并為有編輯權限的作業小組,配置各要素數據的字段編輯權限,增加、刪除、修改作業員用戶(用戶名以作業員漢語拼音全拼命名,重名用戶在全拼后加01、02 進行區分);③在作業員機器安裝地理空間框架要素數據更新插件;④作業員在ArcMap 中加載現勢性好的WMTS影像地圖服務,作為地理空間框架要素數據更新的參考底圖;⑤作業員及時保存更新成果,若出現沖突,先協調沖突再提交;⑥定期對地理空間框架要素數據庫進行版本壓縮、更新統計信息和重建索引等操作,以提高數據庫性能(圖1)。

圖1 多用戶在線協同更新工作流程圖
ArcSDE 采用版本管理機制為長事務處理提供了底層支持,并結合ArcMap 等可視化編輯工具,為多用戶編輯并發控制提供了解決方案。本文基于ArcSDE+Oracle 數據庫實現地理空間框架要素數據的多用戶在線協同更新,將待更新的框架要素數據導入Arc-SDE數據庫,并注冊為版本,基版本為Default。假設有兩名作業員負責平臺框架要素數據更新,則兩個關系型數據庫用戶user1、user2 分別對Default 版本框架要素數據進行更新,若對同一要素進行修改,則保存編輯時會發生沖突,需經沖突協調,再將修改結果提交到Default中;若編輯操作沒有沖突,則直接提交到Default中[15]。
本文利用C#+ArcObject 類庫研發管理端應用程序,實現編輯用戶分組管理和編輯權限控制。首先對現有作業人員進行分組,依托Oracle 數據庫的庫表(要素類)權限管理能力授予/收回作業小組的數據查看(select)、數據編輯(insert、update、delete)權限,并記錄在表1 中,被授予數據編輯權限的作業小組將自動授予其數據查看權限,且管理端應用程序可按作業小組設置數據不可編輯字段,與Add-in插件配合實現作業小組成員字段級編輯權限控制;然后根據作業員分組情況,管理端應用程序可新增、更新、刪除各作業小組的作業員用戶,程序將自動按照作業員用戶所在作業小組的編輯權限分別授予或收回其數據查看、數據編輯權限,同時更新作業員用戶信息表(表2)。

表1 作業小組權限表

表2 作業員用戶信息表
ArcGIS Add-in 是為完成自定義任務而開發的插件、擴展、應用程序集或工具欄等,可用于ArcMap、ArcCatalog 等桌面應用程序[16]。本文中的Add-in 插件通過擴展ArcMap 實現作業員用戶登錄和編輯操作記錄功能[17]。首先將Add-in 插件入口函數綁定ArcMap.Events.NewDocument、ArcMap.Events.OpenDocument 事件,并在NewDocument、OpenDocument事件函數打開用戶登錄模式窗口,Add-in插件將作業員輸入的登錄信息與作業員信息進行校驗,校驗成功則進入Arc-Map,同時Add-in 插件將通過訪問表1、表2 獲取該作業員的數據編輯權限,校驗失敗則強制退出并關閉ArcMap;然后在作業員用戶編輯數據時,Add-in 插件通過監聽ArcMap 的OnCreateFeature、OnChangeFeature 和OnDeleteFeature 事件自動記錄進行編輯操作的作業員姓名、操作時間、操作類型等(如張三20200405A、李四20200406U,A 表示新增要素操作,U 表示更新要素操作),并保存到被編輯要素數據的editRecord 字段中,作業員進行刪除操作時,則從數據庫直接刪除該要素,Add-in 插件不做任何記錄,若作業員對無編輯權限的要素字段進行編輯,該要素字段值不變,Add-in 插件也不做任何記錄。
平臺框架要素數據及時更新實踐表明,該方法可顯著提升地理空間數據更新效率和質量,具有編輯用戶可增刪、編輯權限可控、質量可追溯的優點。首先,框架要素數據存儲于ArcSDE 數據庫中,可利用關系型數據庫的用戶管理機制,按需動態增刪用戶,實現多用戶、高并發實時在線編輯;其次,對入庫后的地理空間數據賦予用戶查看(select)、編輯(insert、update、delete)權限,可對同時具有查看和編輯權限的用戶設置不可編輯的字段,并借助Add-in插件實現字段級編輯權限控制,便于將作業人員分組并賦予不同編輯權限,保障數據安全;再次,利用Add-in插件技術記錄用戶編輯操作,實現編輯結果可追溯。地理空間數據離線編輯、成果在線匯交、多庫聯動更新等方法還有待于進一步研究,以提升省市數據融合、框架要素數據及時更新工作效率,保障平臺數據資源準確、鮮活。