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