李娜,張永玉,王波,王金貴,賈華峰
(山東正元地理信息工程有限責任公司,山東濟南 250101)
隨著城市建設的不斷發展,城市規劃數據將不斷更新,數據庫的時效性是系統保持活力的保障,利用版本進行數據更新審批操作,能夠保證數據庫不被隨意改動,且能夠完成數據審批未通過時的更新回滾。
版本是整個數據庫的副本,但不是數據庫的復制,能夠保存數據庫的更新變化,在ArcSDE的數據庫中,通過存儲數據庫的變化內容,實現數據庫多版本并存。一個Geodatabase能夠有很多Version,但數據庫中只保存一套 Tables 和 Feature Classes[1]。
Versioning使得多個用戶能夠同時編輯一個Geodatabase,不用去復制數據庫或者鎖定數據庫;用戶在選定的版本中可對數據進行長時間的編輯,不影響其他用戶的操作,可解決多用戶并發操作和長事務處理問題。
ArcSDE版本按樹狀結構組織,最高版本是“Defatllt”版本,反映數據庫當前狀態,其他版本均為其子版本,各子版本只保存對數據庫的修改,且更新修改必須向Default版本提交后才能生效。
城市規劃數據需要更新的數據主要包括:
(1)規劃圖庫
規劃圖庫是指規劃數據成圖,主要包括總體規劃圖、控制規劃圖、修建規劃圖等。
(2)紅線圖庫
紅線圖庫是指各種紅線數據,主要包括用地紅線、范圍紅線、建筑紅線、道路紅線、市政紅線等[2]。
規劃管理部門所擁有的規劃及基礎地形數據,均為按照標準制定的CAD數據,針對個別不規范CAD數據需進行預先處理。規劃數據主要包括控制性規劃、修建性規劃以及總體性規劃的線、面數據,地形數據主要是測繪外業形成的地形圖。
3.2.1 CAD數據檢查
(1)圖形數據分層正確性檢查:確保圖層劃分標準化。
(2)圖層命名規范性檢查。
(3)圖形拓撲檢查。
在圖中包含了幾種需要糾正的圖形情況:線交叉、節點未閉合的情況是屬于幾何裂縫;中間無節點的情況是指兩線交叉但沒有交點,稱為T形線;懸掛線是指不屬于某個實體的多條線。對于較小的幾何裂縫只要用捕捉方式連接節點即可[4]。邏輯裂縫是指某一空間實體的組成元素位于不同圖層,看似一個整體,實際存在邏輯錯誤,這種情況通過分層查看的方法可以檢查出來。

圖1 圖層拓撲錯誤示意
3.2.2 數據預處理
(1)圖層轉換
轉換CAD中存放錯誤圖層的數據。
(2)圖層篩選
刪除無用圖層,只留下需要更新的圖層。主要包括:道路中線、道路紅線、道路緣石線、道路綠化帶、規劃范圍線等線層數據和規劃用地地塊線圖層。
(3)根據填充圖層生成地塊邊界線
有些CAD數據只有圖案填充,沒有邊界線,這時就需要重新生成邊界線,利用CAD重新創建邊界。
(4)圖形閉合處理
利用AutoCAD的Pedit命令,將選擇的待合并的多條線段(或全選)進行閉合處理。
(5)T形線處理
打斷線并添加交點。
城市規劃數據更新入庫操作,即將經過拓撲檢查后的外業CAD數據,導入數據庫的過程。數據入庫的過程[3]一般需要經過如下步驟:
(1)版本的選定
為了保護原有數據庫不被隨意改動,有效控制城市規劃數據審批流程,只有經過領導審批通過的數據,才最終更新到現有數據庫中,在數據更新操作之前,定義權限版本,負責更新數據的工作人員,僅限于在選定版本中修改數據庫,對于現有數據即最高級Default版本數據不能直接修改。
(2)更新范圍確定
更新由規劃管理部門提供或根據給定的CAD圖劃定,一般采用閉合曲線的形式,將其以Feature形式保存到數據庫或存儲到公共變量,以便作為原圖裁剪的邊界線。
(3)原數據庫數據的裁剪和刪除
城市規劃數據分為點、線、面數據,點數據最簡單,這里詳細介紹線、面的裁剪。在規劃更新的范圍內,一般較少涉及面被裁斷的情況,但線數據一般指道路中線、道路紅線數據,一般都會有裁斷,可以根據實際情況選擇是否將Feature裁斷。裁剪和刪除的主要功能代碼如下:


(4)CAD數據導入SDE數據庫
為了防止將CAD中的閉合線數據作為面數據入庫,將城市規劃數據分為線數據和面數據分別入庫,線數據入庫時,線層上的閉合數據將被自動讀取為面,需要轉換為線,如下面代碼所示:

對于面數據,只需要讀取CAD數據的Polygon即可,數據入庫的同時,將所在圖層及分類信息存儲到數據庫,以方便數據的符號化顯示。

圖2 裁切原圖后的效果

圖3 CAD更新入庫后的效果
(5)Feature類拓撲關系處理及數據接邊處理
數據在導入數據庫時先放任拓撲錯誤的產生,然后再對導入的數據進行拓撲檢查,常見的拓撲錯誤有地物重疊、壓蓋、交叉等,采用ArcGIS的空間分析接口esriSpatialRelEnum中的拓撲類型對數據進行拓撲處理。
esriSpatialRelEnum接口中空間關系的類型主要有esriSpatialRelContains、esriSpatialRelCrosses、esriSpatial-RelEnvelopeIntersects、esriSpatialRelIntersects、esriSpatialRelOverlaps、esriSpatialRelRelation、esriSpatialRelTouches、esriSpatialRelWithin;利用這些關系的判斷,使用IToplogicalOperator接口分別對不同的拓撲錯誤進行處理,如進行Difference運算,可以實現圖形的求差,進行Intersect運算實現求交集,進行Union運算對圖形合并,進行Clip運算對圖形進行裁剪。
對于多圖形壓蓋的拓撲錯誤,采用按照面積大小依次摳除的方式,對面進行裁剪。對于線拓撲錯誤,程序處理僅能夠實現容差內數據的裁剪。

圖形接邊也是數據入庫后的一個重要組成部分,對圖形邊界兩側的數據,程序設定容差,對于相同屬性的地物進行合并運算,并相應添加和修改節點,但不能處理所有接邊問題,對于較復雜的接邊,需要人工干預,實現屬性的對接及圖形接邊。
在特定版本上更新的數據不能直接更新到現勢庫,必須通過提交審批通過后,通過版本壓縮提交實現現勢數據更新。
需要修改數據的人員可以建立Default版本的子版本,或者由管理員賦予權限的版本列表中選定。版本列表顯示版本的父子關系,版本壓縮提交時,均將更新提交到其父版本。
為實現城市規劃數據的更新審批,對于審批流程中的不同角色,需要設置不同的操作權限,如版本數據的查看、編輯、提交、審批等操作,均需要授權才能夠行使。操作者只能在權限范圍內操作版本數據[5]。
規劃局數據更新審批的流程一般定義為:數據更新人員→科長審批→分管局長審批→局長審批→確認入庫。

圖4 數據更新流程定義
更新流程定義好后,就可以啟動流程,進行數據更新審批操作。數據更新至工作庫后,即自動添加到代辦箱的待提交數據中,提交了的數據即進入待審批數據中,審批通過了的數據進入待正式入庫數據中,審批未通過的,進入待重新入庫數據中。
用戶在某版本上所做的修改工作,經過各項審批后,可以通過提交到Default版本后生效,這就完成了數據更新及審批入庫的操作。
多用戶并發操作時,如果多個用戶對同一空間要素進行了不同的更新,則會使得版本更新提交時產生沖突。版本協調和提交使用的方法為:IVersionEdit下的 Reconcile("SDE.DEFAULT")和 Post("SDE.DEFAULT");版本提交沖突的獲取接口為:IConflictClass,系統中將所有版本修改提交到Default版本[6]。
文章將數據更新版本與流程相結合,詳細闡述了城市規劃數據基于版本的更新及審批過程,為數據的更新入庫、接邊以及審批流程提供了一種新的操作手段。
[1]鄒時林,陳紅華,謝剛生等.基于ArcSDE的版本管理與歷史回溯設計與實現[J].東華理工大學學報(自然科學版),200812,31(4):357 ~360
[2]劉俊亮,劉傳立.城市規劃地理信息系統的設計與開發[J].科技情報開發與經,2006,16(10):236 ~237
[3]陸劍峰,張浩.數據倉庫數據更新的研究及基于Oracle數據庫的開發與應用[J].計算機工程與應用,2006.26:168~172
[4]朱宏斌,陸海英等.城市基礎地理信息數據庫更新方案研究[J].測繪通報,2011(1):25~27
[5]都玉水,周剛等.拓撲自動發現中數據更新策略的研究[J].北京航空航天大學學報,2004,30(1):35 ~39
[6]操震洲,李清泉.基于ArcSDE和ArcGIS Engine的版本管理系統的設計和實現[J].測繪與空間地理信息,2006,2(1):77 ~78