陳秀萍, 郭忠明,呂翠華
(1.云南省測繪產(chǎn)品檢測站,云南 昆明 650034;2.昆明冶金高等??茖W校 測繪學院,云南 昆明 650033)
本文以云南省某建制鎮(zhèn)地籍數(shù)據(jù)庫建設為例,嘗試利用Python編程語言構(gòu)建數(shù)據(jù)庫數(shù)據(jù)框架,采用ArcGIS數(shù)據(jù)導入模塊,將外業(yè)采集的CAD格式的地形、地籍數(shù)據(jù)導入數(shù)據(jù)框架中,利用SQL查詢語言對屬性賦值,完成數(shù)據(jù)庫的建設。
筆者單位地籍建庫工作可謂“一波三折”:工作初期技術(shù)路線的確定是基于建庫作業(yè)員有多年MapGIS平臺的數(shù)據(jù)編輯經(jīng)驗,擬購買MapGIS地籍管理系統(tǒng):采用南方CASS地籍成圖軟件采集數(shù)據(jù),以DXF為數(shù)據(jù)交換格式,將數(shù)據(jù)轉(zhuǎn)換為入庫要求的(*.wt、*.wl、*.wp)格式,然后建庫,輸出數(shù)據(jù)交換文件VCT。后期由于上交成果格式由最初規(guī)定的VCT或MDB改為唯一格式MDB,只能將數(shù)據(jù)重新轉(zhuǎn)換到ArcGIS的personal GDB數(shù)據(jù)庫中。由于MapGIS和ArcGIS對拓撲規(guī)則的定義不一致,兩者在數(shù)據(jù)轉(zhuǎn)換過程中產(chǎn)生了許多拓撲錯誤,無法保證數(shù)據(jù)精度。為了工作的正常進行,單位購買了一套城鎮(zhèn)地籍建庫管理軟件(南方數(shù)碼太極軟件),重新考慮建庫技術(shù)路線,之前在MapGIS平臺所做的工作都白費了,不僅浪費大量的時間,而一套城鎮(zhèn)地籍建庫管理軟件根本無法滿足10個項目的需求。在這種情況下,綜合利用多種已有的公共軟件平臺構(gòu)建地籍數(shù)據(jù)庫勢在必行。
針對以上問題,筆者經(jīng)過反復研究和實踐,利用Python編程語言構(gòu)建數(shù)據(jù)庫框架及完整屬性結(jié)構(gòu),配合ArcGIS的數(shù)據(jù)導入模塊、強大的拓撲檢測 、拓撲處理功能,結(jié)合關系數(shù)據(jù)庫的特點,利用SQL查詢語句,完成了多個數(shù)據(jù)庫的建設。
1)Python是ESRI支持的一種面向?qū)ο?、直譯式、開源腳本語言,在ArcGIS典型安裝時隨其他組件一起安裝[2],其語法簡捷而清晰,具有豐富和強大的類庫。
2)關系數(shù)據(jù)庫是當前數(shù)據(jù)庫系統(tǒng)的主流,SQL語言是關系數(shù)據(jù)庫系統(tǒng)的一種高級語言,它集數(shù)據(jù)操作、定義和控制功能于一體,具有很強的通用性,且語言簡單易學、風格統(tǒng)一,利用幾個簡單的英語單詞組合,就可以完成很多復雜的功能[3]。
地籍數(shù)據(jù)庫的主要內(nèi)容為包括[1]:定位基礎、行政區(qū)劃、地形、土地權(quán)屬、土地利用、注記等空間要素;房屋權(quán)利人擴展屬性、權(quán)屬來源證明擴展屬性等多個擴展屬性表;街坊宗地、街坊面積等面積統(tǒng)計表;地籍調(diào)查表、審批意見等宗地文檔。
根據(jù)數(shù)據(jù)庫的內(nèi)容及現(xiàn)有數(shù)據(jù)采集平臺、數(shù)據(jù)處理軟件,建庫流程如下:
2.3.1 空間數(shù)據(jù)的處理
1)數(shù)據(jù)庫數(shù)據(jù)框架的建立。采用2種方法:利用已有的南方數(shù)碼太極軟件建立數(shù)據(jù)框架;利用Python程序建立數(shù)據(jù)框架,這種方法可以完全脫離專業(yè)軟件,充分發(fā)揮作業(yè)員的主動性和創(chuàng)造性(本文重點推薦)。
①設計、建立一個空數(shù)據(jù)庫。為了便于數(shù)據(jù)的管理,在MDB數(shù)據(jù)庫中建立一個數(shù)據(jù)集,數(shù)據(jù)集中包括所有要素類,根據(jù)要求對要素類定義相應的屬性結(jié)構(gòu)。地籍數(shù)據(jù)的精度非常重要,在自動建立數(shù)據(jù)集的過程中,需要增加1段代碼,定義數(shù)據(jù)集中要素類的XYTolerance、XYResolution值,確保精度滿足要求,代碼中的A、B根據(jù)項目范圍確定。
②下載并安裝Python2.6。使用Windows的記事本建立一個新文件,輸入程序代碼,并保存為Build53XXXX.py文件。Build53XXXX.py的核心代碼如下:
…
location = sys.argv[1]
gdb = sys.argv[2]
gp.CreatePersonalGDB_management(location, gdb)
mdb = "%s\%s" % (location, gdb)
gp.XYTolerance = "0.0000000001"
gp.XYResolution = "0.00000000001"
rs = gp.CreateSpatialReference_management("", "","0 0 A B, "", "", "", "0")
ds = "DS"
gp.CreateFeatureDataset_management(mdb, ds, rs)
gp.workspace = "%s\%s\%s" % (location, gdb, ds)
fc = "DGX"
gp.CreateFeatureclass(gp.workspace, fc, "POLYLINE")
gp.AddField_management(fc,"BSM","LONG","#","#","#","標識碼", "NULLABLE", "NON_REQUIRED", "#")
gp.AddField_management(fc,"YSDM","TEXT","#","#","10"," 要素代碼 ","NULLABLE", "NON_REQUIRED", "#")
…
fc = "GCZJD"
…
print gp.getmessages()
③啟動ArcCatalog,根據(jù)項目情況定義數(shù)據(jù)集的坐標系。
2)數(shù)據(jù)的導入。利用ArcGIS的數(shù)據(jù)轉(zhuǎn)換工具將AutoCAD數(shù)據(jù)導入到personal GDB文件中,已有的地形、地籍的屬性數(shù)據(jù)均需要無損導入ArcGIS平臺[4-6]。
3)數(shù)據(jù)拓撲處理。ArcGIS拓撲檢查、拓撲編輯被廣泛應用于地籍空間數(shù)據(jù)的處理及檢查工作中,能夠確保各空間數(shù)據(jù)層內(nèi)、層間嚴格的拓撲關系的正確性。ArcGIS通過確定的拓撲規(guī)則在ArcMap和ArcCatalog中運行拓撲關系, ArcCatalog用于拓撲規(guī)則的創(chuàng)建,拓撲錯誤的檢查,在ArcMap中按照錯誤提示進行修改。
2.3.2 屬性數(shù)據(jù)的賦值
1)分析已有的3個mdb數(shù)據(jù)庫。①GENERALDATA.mdb:前期在土地部門收集地籍檔案資料,錄入并保存地籍調(diào)查表、土地證等相關信息的數(shù)據(jù)庫,表中包含了大量的擴展屬性表內(nèi)容;②DJ.mdb:外業(yè)提供的保存界址點、界址線、宗地等信息的數(shù)據(jù)庫;③53XXXX.mdb:保存地形數(shù)據(jù)、地籍數(shù)據(jù)要素類且屬性結(jié)構(gòu)完整的數(shù)據(jù)庫。
2)要素空間關系、屬性字段的關系分析。①地籍權(quán)屬要素之間的空間關系:宗地、界址線、界址點三者的空間約束關系非常緊密,界址點必然是界址線的端點,不存在沒有界址點的宗地,也不存在孤立于宗地之外的界址點。②調(diào)查區(qū)、行政區(qū)、街坊、宗地、塊地之間的關系:同一街坊的宗地加塊地形成街坊,無縫的街坊合并后形成行政區(qū),行政區(qū)面積之和等于調(diào)查區(qū)面積。分析要素類字段間的相互關系是確保屬性數(shù)據(jù)賦值正確性的重要前提和基礎。
根據(jù)云南省城鎮(zhèn)地籍數(shù)據(jù)庫建庫技術(shù)標準,城鎮(zhèn)地籍數(shù)據(jù)庫各類要素的代碼與名稱是根據(jù)《基礎地理信息要素分類與代碼》(GB/T 13923-2006)的擴展,技術(shù)標準中規(guī)定了唯一代碼[7],可以用SQL UPDATE語句直接更新。
擴展屬性的部分內(nèi)容根據(jù)土地局收集的地籍調(diào)查表、土地證、地籍申請書、權(quán)源文件等資料,錄入保存在Microsoft Office Access 2003數(shù)據(jù)庫數(shù)據(jù)總表中,使用INSERT語句復制相關內(nèi)容到相關擴展屬性表中。
3)常用的部分SQL語句。從上述建庫技術(shù)路線不難看出,屬性值僅包含少量的從已有AutoCAD轉(zhuǎn)換過來自帶的屬性值,大量的屬性字段值仍為空。我們采用ArcGIS的空間分析功能,配合SQL語句,對3個mdb中的表進行聯(lián)合操作,快速完成屬性賦值。
圖層內(nèi)字段直接賦值的語句:
update CLKZD, ZD, JZD set CLKZD.YSDM ="1000110000", ZD.YSDM = "1000110000", JZD.YSDM= "1000110000";
圖層間字段賦值的語句:
update DLTB,JF set DLTB.QSDWMC =JF.XZQMC,DLTB.ZLDWMC = JF.XZQMC where DLTB.ZLDWDM = JF.XZQDM;
按照建庫標準對某些字段值取位的語句:
Update JZD set JZDH1 = right(ZLDM,10) &left(UCa se(JZDH),1)+right("00000"+right(JZDH,len(JZDH)-1),4);
update FW set FWBH1 = right("000"+right(FWBH,le n(FWBH)),3);
update FW set ZDMJ = format(ZDMJ,"0.00");
擴展屬性表數(shù)據(jù)的復制語句:
insert into ZD_TXQLDJ ( DJH, TDZH, QLR,QLRSFZJLX, QLRSFZJH, YWR, YWRSFZJLX,YWRSFZJH, TXQLZL, TXQLFW, SDRQ, QLSX,XCQX, SQSBH, SQS, SJR, SJRQ, SJD, SPBH,CSYJ, SCR, SCRQ, SHYJ, SHR, SHRQ, SPR,SPRQ, DJKBH, DJRQ, DJJS, DJKJBR, DJKSHR,TXQLZH ) select 地籍號, 土地證號, 權(quán)利人, 證件種類, 證件編號, 土地使用者, 證件種類, 證件編號, 權(quán)利種類, 權(quán)利范圍, 權(quán)利設定日期, 權(quán)利順序, 續(xù)存期限, 申請書編號, 申請書, 收件人, 收件日期, 收件單,審批表編號, 初審意見, 初審人, 初審人日期, 審核意見, 審核人, 審核人日期, 審批人, 審批人日期, 登記卡編號, 登記日期,登記記事, 經(jīng)辦人, 審核人, 土地證號from GENERALDATA;
1)綜合利用多種公共平臺軟件構(gòu)建地籍數(shù)據(jù)庫,減少了對專業(yè)建庫軟件的依賴,降低了生產(chǎn)投入。筆者單位承擔10個地籍建庫項目,由于工期緊,由幾個作業(yè)組同時作業(yè),采用本文推薦的建庫技術(shù)路線,順利完成了工作任務。
2)在降低投入的同時,大大提高了工作效率。主要體現(xiàn)在2個方面:①SQL是對數(shù)據(jù)庫中的數(shù)據(jù)表進行操作,與某些專業(yè)軟件對屬性的操作是基于對空間數(shù)據(jù)的疊加分析相比,速度更快,可以在短時間內(nèi)更新上萬條記錄,輕松處理地籍數(shù)據(jù)庫大量的屬性內(nèi)容;②所有數(shù)據(jù)庫規(guī)模不同,結(jié)構(gòu)、要素類相同,只要適當修改數(shù)據(jù)范圍,就能生成數(shù)據(jù)庫框架,SQL查詢語句保存后可以不斷重復用于不同數(shù)據(jù)庫。
3)采用該方法建庫,作業(yè)人員都感覺自身業(yè)務能力得到較大提高,思維模式發(fā)生轉(zhuǎn)變,不再是一些工具的“奴隸”。
4)如果利用SQL語言的通用性,嵌入到如Visual Basic這樣的高級語言開發(fā)平臺上,或者結(jié)合Python腳本語言,利用高級語言開發(fā)工具的計算能力和SQL的數(shù)據(jù)庫操縱能力,快速建立數(shù)據(jù)庫應用程序,能更好地解決地籍建庫中的屬性錄入問題;同時,在數(shù)據(jù)導入階段,也可以利用Python腳本語言自動完成,進一步優(yōu)化工作方案。
[1]張耀武,余蘊祥,趙喬貴,等.云南省地籍調(diào)查實施細則[M].昆明:云南大學出版社,2007
[2]Alex Martelli ,Anna Martelli Ravenscroft. Python Cookbook[M].第2版.北京:人民郵電出版社,2010
[3]李俊民.SQL結(jié)構(gòu)化查詢語言詳解[M].北京:人民郵電出版社,2008
[4]李蘇,楊敏華.地籍數(shù)據(jù)庫動態(tài)更新機制的探討[J].測繪科學,2010,33(4):166-168
[5]蔣紹年, 閻鳳霞. 地籍數(shù)據(jù)建庫方法研究[J].測繪與空間地理信息,2010,33(5):88-90
[6]陳春華,余紅舉. GIS 數(shù)據(jù)質(zhì)量控制技術(shù)在地籍數(shù)據(jù)庫建設中的應用[J].地理空間信息,2009,7(1):31-32
[7]GB/T 13923.基礎地理信息要素分類與代碼[S].北京:中國標準出版社,2006