李娜,張永玉,王波,王金貴,賈華峰
(山東正元地理信息工程有限責(zé)任公司,山東濟南 250101)
隨著城市建設(shè)的不斷發(fā)展,城市規(guī)劃數(shù)據(jù)將不斷更新,數(shù)據(jù)庫的時效性是系統(tǒng)保持活力的保障,利用版本進行數(shù)據(jù)更新審批操作,能夠保證數(shù)據(jù)庫不被隨意改動,且能夠完成數(shù)據(jù)審批未通過時的更新回滾。
版本是整個數(shù)據(jù)庫的副本,但不是數(shù)據(jù)庫的復(fù)制,能夠保存數(shù)據(jù)庫的更新變化,在ArcSDE的數(shù)據(jù)庫中,通過存儲數(shù)據(jù)庫的變化內(nèi)容,實現(xiàn)數(shù)據(jù)庫多版本并存。一個Geodatabase能夠有很多Version,但數(shù)據(jù)庫中只保存一套 Tables 和 Feature Classes[1]。
Versioning使得多個用戶能夠同時編輯一個Geodatabase,不用去復(fù)制數(shù)據(jù)庫或者鎖定數(shù)據(jù)庫;用戶在選定的版本中可對數(shù)據(jù)進行長時間的編輯,不影響其他用戶的操作,可解決多用戶并發(fā)操作和長事務(wù)處理問題。
ArcSDE版本按樹狀結(jié)構(gòu)組織,最高版本是“Defatllt”版本,反映數(shù)據(jù)庫當(dāng)前狀態(tài),其他版本均為其子版本,各子版本只保存對數(shù)據(jù)庫的修改,且更新修改必須向Default版本提交后才能生效。
城市規(guī)劃數(shù)據(jù)需要更新的數(shù)據(jù)主要包括:
(1)規(guī)劃圖庫
規(guī)劃圖庫是指規(guī)劃數(shù)據(jù)成圖,主要包括總體規(guī)劃圖、控制規(guī)劃圖、修建規(guī)劃圖等。
(2)紅線圖庫
紅線圖庫是指各種紅線數(shù)據(jù),主要包括用地紅線、范圍紅線、建筑紅線、道路紅線、市政紅線等[2]。
規(guī)劃管理部門所擁有的規(guī)劃及基礎(chǔ)地形數(shù)據(jù),均為按照標準制定的CAD數(shù)據(jù),針對個別不規(guī)范CAD數(shù)據(jù)需進行預(yù)先處理。規(guī)劃數(shù)據(jù)主要包括控制性規(guī)劃、修建性規(guī)劃以及總體性規(guī)劃的線、面數(shù)據(jù),地形數(shù)據(jù)主要是測繪外業(yè)形成的地形圖。
3.2.1 CAD數(shù)據(jù)檢查
(1)圖形數(shù)據(jù)分層正確性檢查:確保圖層劃分標準化。
(2)圖層命名規(guī)范性檢查。
(3)圖形拓撲檢查。
在圖中包含了幾種需要糾正的圖形情況:線交叉、節(jié)點未閉合的情況是屬于幾何裂縫;中間無節(jié)點的情況是指兩線交叉但沒有交點,稱為T形線;懸掛線是指不屬于某個實體的多條線。對于較小的幾何裂縫只要用捕捉方式連接節(jié)點即可[4]。邏輯裂縫是指某一空間實體的組成元素位于不同圖層,看似一個整體,實際存在邏輯錯誤,這種情況通過分層查看的方法可以檢查出來。
圖1 圖層拓撲錯誤示意
3.2.2 數(shù)據(jù)預(yù)處理
(1)圖層轉(zhuǎn)換
轉(zhuǎn)換CAD中存放錯誤圖層的數(shù)據(jù)。
(2)圖層篩選
刪除無用圖層,只留下需要更新的圖層。主要包括:道路中線、道路紅線、道路緣石線、道路綠化帶、規(guī)劃范圍線等線層數(shù)據(jù)和規(guī)劃用地地塊線圖層。
(3)根據(jù)填充圖層生成地塊邊界線
有些CAD數(shù)據(jù)只有圖案填充,沒有邊界線,這時就需要重新生成邊界線,利用CAD重新創(chuàng)建邊界。
(4)圖形閉合處理
利用AutoCAD的Pedit命令,將選擇的待合并的多條線段(或全選)進行閉合處理。
(5)T形線處理
打斷線并添加交點。
城市規(guī)劃數(shù)據(jù)更新入庫操作,即將經(jīng)過拓撲檢查后的外業(yè)CAD數(shù)據(jù),導(dǎo)入數(shù)據(jù)庫的過程。數(shù)據(jù)入庫的過程[3]一般需要經(jīng)過如下步驟:
(1)版本的選定
為了保護原有數(shù)據(jù)庫不被隨意改動,有效控制城市規(guī)劃數(shù)據(jù)審批流程,只有經(jīng)過領(lǐng)導(dǎo)審批通過的數(shù)據(jù),才最終更新到現(xiàn)有數(shù)據(jù)庫中,在數(shù)據(jù)更新操作之前,定義權(quán)限版本,負責(zé)更新數(shù)據(jù)的工作人員,僅限于在選定版本中修改數(shù)據(jù)庫,對于現(xiàn)有數(shù)據(jù)即最高級Default版本數(shù)據(jù)不能直接修改。
(2)更新范圍確定
更新由規(guī)劃管理部門提供或根據(jù)給定的CAD圖劃定,一般采用閉合曲線的形式,將其以Feature形式保存到數(shù)據(jù)庫或存儲到公共變量,以便作為原圖裁剪的邊界線。
(3)原數(shù)據(jù)庫數(shù)據(jù)的裁剪和刪除
城市規(guī)劃數(shù)據(jù)分為點、線、面數(shù)據(jù),點數(shù)據(jù)最簡單,這里詳細介紹線、面的裁剪。在規(guī)劃更新的范圍內(nèi),一般較少涉及面被裁斷的情況,但線數(shù)據(jù)一般指道路中線、道路紅線數(shù)據(jù),一般都會有裁斷,可以根據(jù)實際情況選擇是否將Feature裁斷。裁剪和刪除的主要功能代碼如下:
(4)CAD數(shù)據(jù)導(dǎo)入SDE數(shù)據(jù)庫
為了防止將CAD中的閉合線數(shù)據(jù)作為面數(shù)據(jù)入庫,將城市規(guī)劃數(shù)據(jù)分為線數(shù)據(jù)和面數(shù)據(jù)分別入庫,線數(shù)據(jù)入庫時,線層上的閉合數(shù)據(jù)將被自動讀取為面,需要轉(zhuǎn)換為線,如下面代碼所示:
對于面數(shù)據(jù),只需要讀取CAD數(shù)據(jù)的Polygon即可,數(shù)據(jù)入庫的同時,將所在圖層及分類信息存儲到數(shù)據(jù)庫,以方便數(shù)據(jù)的符號化顯示。
圖2 裁切原圖后的效果
圖3 CAD更新入庫后的效果
(5)Feature類拓撲關(guān)系處理及數(shù)據(jù)接邊處理
數(shù)據(jù)在導(dǎo)入數(shù)據(jù)庫時先放任拓撲錯誤的產(chǎn)生,然后再對導(dǎo)入的數(shù)據(jù)進行拓撲檢查,常見的拓撲錯誤有地物重疊、壓蓋、交叉等,采用ArcGIS的空間分析接口esriSpatialRelEnum中的拓撲類型對數(shù)據(jù)進行拓撲處理。
esriSpatialRelEnum接口中空間關(guān)系的類型主要有esriSpatialRelContains、esriSpatialRelCrosses、esriSpatial-RelEnvelopeIntersects、esriSpatialRelIntersects、esriSpatialRelOverlaps、esriSpatialRelRelation、esriSpatialRelTouches、esriSpatialRelWithin;利用這些關(guān)系的判斷,使用IToplogicalOperator接口分別對不同的拓撲錯誤進行處理,如進行Difference運算,可以實現(xiàn)圖形的求差,進行Intersect運算實現(xiàn)求交集,進行Union運算對圖形合并,進行Clip運算對圖形進行裁剪。
對于多圖形壓蓋的拓撲錯誤,采用按照面積大小依次摳除的方式,對面進行裁剪。對于線拓撲錯誤,程序處理僅能夠?qū)崿F(xiàn)容差內(nèi)數(shù)據(jù)的裁剪。
圖形接邊也是數(shù)據(jù)入庫后的一個重要組成部分,對圖形邊界兩側(cè)的數(shù)據(jù),程序設(shè)定容差,對于相同屬性的地物進行合并運算,并相應(yīng)添加和修改節(jié)點,但不能處理所有接邊問題,對于較復(fù)雜的接邊,需要人工干預(yù),實現(xiàn)屬性的對接及圖形接邊。
在特定版本上更新的數(shù)據(jù)不能直接更新到現(xiàn)勢庫,必須通過提交審批通過后,通過版本壓縮提交實現(xiàn)現(xiàn)勢數(shù)據(jù)更新。
需要修改數(shù)據(jù)的人員可以建立Default版本的子版本,或者由管理員賦予權(quán)限的版本列表中選定。版本列表顯示版本的父子關(guān)系,版本壓縮提交時,均將更新提交到其父版本。
為實現(xiàn)城市規(guī)劃數(shù)據(jù)的更新審批,對于審批流程中的不同角色,需要設(shè)置不同的操作權(quán)限,如版本數(shù)據(jù)的查看、編輯、提交、審批等操作,均需要授權(quán)才能夠行使。操作者只能在權(quán)限范圍內(nèi)操作版本數(shù)據(jù)[5]。
規(guī)劃局數(shù)據(jù)更新審批的流程一般定義為:數(shù)據(jù)更新人員→科長審批→分管局長審批→局長審批→確認入庫。
圖4 數(shù)據(jù)更新流程定義
更新流程定義好后,就可以啟動流程,進行數(shù)據(jù)更新審批操作。數(shù)據(jù)更新至工作庫后,即自動添加到代辦箱的待提交數(shù)據(jù)中,提交了的數(shù)據(jù)即進入待審批數(shù)據(jù)中,審批通過了的數(shù)據(jù)進入待正式入庫數(shù)據(jù)中,審批未通過的,進入待重新入庫數(shù)據(jù)中。
用戶在某版本上所做的修改工作,經(jīng)過各項審批后,可以通過提交到Default版本后生效,這就完成了數(shù)據(jù)更新及審批入庫的操作。
多用戶并發(fā)操作時,如果多個用戶對同一空間要素進行了不同的更新,則會使得版本更新提交時產(chǎn)生沖突。版本協(xié)調(diào)和提交使用的方法為:IVersionEdit下的 Reconcile("SDE.DEFAULT")和 Post("SDE.DEFAULT");版本提交沖突的獲取接口為:IConflictClass,系統(tǒng)中將所有版本修改提交到Default版本[6]。
文章將數(shù)據(jù)更新版本與流程相結(jié)合,詳細闡述了城市規(guī)劃數(shù)據(jù)基于版本的更新及審批過程,為數(shù)據(jù)的更新入庫、接邊以及審批流程提供了一種新的操作手段。
[1]鄒時林,陳紅華,謝剛生等.基于ArcSDE的版本管理與歷史回溯設(shè)計與實現(xiàn)[J].東華理工大學(xué)學(xué)報(自然科學(xué)版),200812,31(4):357 ~360
[2]劉俊亮,劉傳立.城市規(guī)劃地理信息系統(tǒng)的設(shè)計與開發(fā)[J].科技情報開發(fā)與經(jīng),2006,16(10):236 ~237
[3]陸劍峰,張浩.數(shù)據(jù)倉庫數(shù)據(jù)更新的研究及基于Oracle數(shù)據(jù)庫的開發(fā)與應(yīng)用[J].計算機工程與應(yīng)用,2006.26:168~172
[4]朱宏斌,陸海英等.城市基礎(chǔ)地理信息數(shù)據(jù)庫更新方案研究[J].測繪通報,2011(1):25~27
[5]都玉水,周剛等.拓撲自動發(fā)現(xiàn)中數(shù)據(jù)更新策略的研究[J].北京航空航天大學(xué)學(xué)報,2004,30(1):35 ~39
[6]操震洲,李清泉.基于ArcSDE和ArcGIS Engine的版本管理系統(tǒng)的設(shè)計和實現(xiàn)[J].測繪與空間地理信息,2006,2(1):77 ~78