羅燦培, 陳愛梅, 單 正
(1.云南導視地理信息系統(tǒng)工程有限公司,云南 昆明 650056; 2.西南林業(yè)大學土木工程學院,云南 昆明 650224; 3.中國電建昆明勘測設計研究院有限公司,云南 昆明 650051)
2013年的中央一號文件明確指出“用5年時間基本完成農(nóng)村土地承包經(jīng)營權確權登記頒證工作,妥善解決農(nóng)戶承包地塊面積不準、四至不清等問題”[1]。以穩(wěn)定農(nóng)村集體土地二輪承包為基礎,依據(jù)農(nóng)村集體土地二輪承包合同,查清承包方所承包地塊的面積和位置相關信息,通過解決承包地塊的面積、四至、空間位置、登記簿等問題,將把承包地塊、面積、合同、權屬證書全面落實到戶[2],建立農(nóng)村土地承包經(jīng)營權登記簿和管理信息系統(tǒng),依法賦予農(nóng)民對承包土地的占有、使用和收益等權能,提升農(nóng)村土地承包管理信息化的水平,為智慧農(nóng)業(yè)提供強有力的基礎數(shù)據(jù)。農(nóng)村土地承包經(jīng)營權確權調(diào)查質量檢查是監(jiān)督農(nóng)村土地承包經(jīng)營權確權登記調(diào)查進度和成果質量的根本措施,直接關系到此項調(diào)查工作的完整性、正確性和合法性,是確保調(diào)查成果公告公示、成果簽字、頒證等一系列工作的基本前提[5]。其中,矢量數(shù)據(jù)和屬性數(shù)據(jù)成果的檢查尤為重要。
本文在闡述農(nóng)村土地承包經(jīng)營權確權調(diào)查數(shù)據(jù)庫成果質量控制過程檢查方法的基礎上,結合國家、省關于數(shù)據(jù)庫匯交要求和農(nóng)村土地承包經(jīng)營權數(shù)據(jù)庫成果質量檢查的規(guī)則,基于ArcGIS10.2.2平臺,利用Python腳本語言設計開發(fā)了屬性數(shù)據(jù)、權屬數(shù)據(jù)及其關聯(lián)信息一致性的自動檢查工具。該檢查工具的使用提高了數(shù)據(jù)庫建設的工作效率,保證了數(shù)據(jù)庫建設的質量[5]。在云南省廣南縣、富寧縣、新平縣、江城縣、永德縣等地項目的應用實踐,進一步驗證了該工具在數(shù)據(jù)庫建設生產(chǎn)上的可行性和實用性。
農(nóng)村土地承包經(jīng)營權數(shù)據(jù)庫是一個兼顧了空間矢量數(shù)據(jù)和屬性數(shù)據(jù)的一個集合庫,其中,包含了描述承包地塊空間位置信息、承包方相關的屬性信息數(shù)據(jù)及兩者間的信息關聯(lián)。一個合格、標準的農(nóng)村土地承包經(jīng)營權數(shù)據(jù)庫,其建設時的規(guī)范化、標準化、信息化等的表達極為重要。
(1)要素表達的完整性。農(nóng)村土地承包經(jīng)營權數(shù)據(jù)庫涵蓋了關于承包地塊及其界址所有矢量信息和權屬信息,滿足空間、屬性要素關聯(lián)和不重不漏等要求,可完整地表達出各類矢量圖形元素和屬性元素[7]。
(2)數(shù)據(jù)組織的規(guī)范性??h級農(nóng)村土地承包經(jīng)營權數(shù)據(jù)庫所涉及到承包地塊、界址點、界址線等矢量數(shù)據(jù)量大復雜,后期的不動產(chǎn)數(shù)據(jù)整合將對其進行分析和數(shù)據(jù)共享[7]。因此,在管理數(shù)據(jù)時采用了專業(yè)的地理信息軟件和數(shù)據(jù)庫平臺,并根據(jù)信息化建設的要求對數(shù)據(jù)格式進行了規(guī)范化,便于后期的有效利用。
(3)足夠的數(shù)學精度要求。為了后期的精細化數(shù)據(jù)管理,通過對位置、屬性來進行表達實現(xiàn),符合準確性和可靠性要求。
(4)準確無誤的矢量拓撲和屬性邏輯關系。成果表格的輸出、證書打印和對空間數(shù)據(jù)的計算查詢與分析都是以正確的拓撲關系和準確的屬性邏輯關系為基礎。
農(nóng)村土地承包經(jīng)營權數(shù)據(jù)庫成果的質量直接反應了該項調(diào)查成果數(shù)據(jù)的質量,對后期農(nóng)業(yè)主管部門對數(shù)據(jù)的管理、決策和應用有很大的決定性作用。數(shù)據(jù)成果質量檢查是一個綜合且復雜的過程,它針對不同的數(shù)據(jù)問題產(chǎn)生的過程和環(huán)節(jié)等采用相應的檢查方法進行檢查?,F(xiàn)階段測繪地理信息項目通常采用的方法主要有:常規(guī)人工檢查、質檢軟件自動檢查、人機交互綜合檢查等方法。其中,常規(guī)的人工檢查方法具有簡單易操作的優(yōu)點,但投入的成本過高、檢查效率較低;質檢軟件自動檢查方法缺乏靈活性,局限于質檢規(guī)則,檢查結果可自動輸出,相對較為規(guī)范;人機交互綜合檢查則集成了前兩種方法的優(yōu)劣,還可以加入自定義的檢查內(nèi)容和方法,也是目前應用較廣泛的方法之一。
(1)矢量數(shù)據(jù)的檢查
根據(jù)數(shù)據(jù)庫匯交的要求,主要包含承包地塊、界址點、界址線、行政區(qū)等要素間的拓撲錯誤及要素自相交、自重疊、細小縫隙、小于5°的尖銳角、節(jié)點距離應不小于0.05 m、要素多部分檢查等內(nèi)容。
(2)屬性數(shù)據(jù)的檢查
包括屬性項和屬性值的檢查。其中,屬性項檢查主要對字段定義的類型、長度、小數(shù)位數(shù)進行規(guī)范符合性的檢查。屬性值檢查主要針對屬性數(shù)據(jù)必填字段是否存在空值、是否存在非法字符、取值是否在有效范圍內(nèi)、唯一值是否存在重復等方面進行檢查[6]。
在調(diào)查成果數(shù)據(jù)正式導入農(nóng)村土地承包經(jīng)營權數(shù)據(jù)庫之前,必須要進行全面的矢量數(shù)據(jù)和屬性數(shù)據(jù)的相關項檢查,在進行自身屬性項和屬性值的檢查的同時還要進行相互間邏輯關聯(lián)一致性的檢查。
2.2.1 矢量數(shù)據(jù)的檢查
(1)不合理縫隙
在農(nóng)村土地承包經(jīng)營權數(shù)據(jù)庫中,不合理的縫隙是指界址線之間存在的狹小的不合理的隙縫。主要為相鄰圖斑的公共邊上因捕捉等原因出現(xiàn)的圖形間的微小間隙、矢量上圖過程中因圖形繪制時的抖動而導致圖斑位移、不同村組數(shù)據(jù)接邊導致出現(xiàn)縫隙等。在該數(shù)據(jù)庫中,此類錯誤容易引發(fā)拓撲、面積等錯誤,在質量檢查軟件中作為嚴重缺陷項進行檢查。其檢查思路如下:首先提取待檢查承包地塊DK并導入新建立的GDB格式數(shù)據(jù)庫,圖層命名為DK_FX;其次創(chuàng)建容差為0.000 1的拓撲并加入拓撲要素DK,設置檢查縫隙的拓撲規(guī)則生成拓撲;然后設置限值并導出要素為DK_FXJC。如圖1所示。
(2)多部分
多部分是指存在一條屬性記錄對應多個矢量圖形。該類錯誤主要原因是內(nèi)業(yè)人員矢量化時分割合并出錯,它不滿足地塊代碼唯一性的要求。檢查思路如下:遍歷待檢查的要素圖層,導入GDB數(shù)據(jù)庫,通過Part Count函數(shù)計算并通過其值是否大于零來判斷記錄對應的信息,完成后導出記錄。
(3)小銳角
小銳角是指地塊及地塊界址線之間存在的不合理的角度小于5°或者大于355°的尖銳角。在實際過程中,通常存在以下兩種:一種是同一地塊界址線之間形成的尖角,另一種是相鄰地塊之間構成的尖角[6]。主要是因為內(nèi)業(yè)上圖技術人員矢量化時粗心或者對兩個不同作業(yè)人員數(shù)據(jù)接邊時因對重疊部分的疊加分析造成。在數(shù)據(jù)庫建設時拓撲檢查是難以發(fā)現(xiàn)該類錯誤的。其檢查的思路如下:將DK導入新建的GDB數(shù)據(jù)庫,依次逐個獲取每個要素DK的頂點DK_D,連續(xù)的三個DK_D構成三角形,同時獲取DK_D的坐標值及其邊長,依據(jù)余弦定理可計算角度值;根據(jù)角度值來判讀是否小于規(guī)定值5°,然后輸出錯誤位置為DK_JD。如圖2所示。
圖1 不合理縫隙檢查流程
圖2 小銳角檢查流程
主要代碼如下:
#######角點數(shù)量及角度判斷
angle_rj = 0
angle_cf = 0
num = 0
while row:
num += 1
shapeName= gp.Describe(input_poly).shapeFieldName
geom = row.getValue(shapeName)
part_count = geom.partCount
count = 0
while count < part_count:
p = geom.getPart(count)
p_b = p.next()
p_S = p_b
p1 = p_b
p2 = p.next()
p3 = p.next()
p_2 = p2
while p3:
x1 = round(p1.X,3)
####類似獲取角點坐標
y1 = round(p3.Y,3)
####獲得兩角點間的線段長度
if (math.fabs(x1-x2)<0.5 and math.fabs(x2-x3)<0.5) or (math.fabs(y1-y2)<0.5 and math.fabs(y2-y3)<0.5):
jiao = -1
else:
l1 = math.sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3))
l2 = math.sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3))
l3 = math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
if l1==0 or l2==0 or l3==0:
angle_cf += 1
else:
cj = (l1*l1+l3*l3-l2*l2)/(2*l1*l3)
jiao = math.cos(angle_min*3.1415926/180)
if cj >= jiao:
angle_rj += 1
count = count+1
#####同上原理處理其他情況的角度,然后判定結果:當計算角度小于設定值時即可認為角度存在問題。
if angle_cf >0 :
str_Err = "存在"+str(angle_cf)+"個重復點 "
if angle_rj >0 :
str_Err = "存在"+str(angle_rj)+"個尖角"
str_Err = str_Err.strip()
if len(str_Err)!=0:
row.setValue("Angle_chk",str_Err)
cur.updateRow(row)
str_Err = ""
row = cur.next()
(4)自相交和過近點
自相交在數(shù)據(jù)庫建設過程中較為常見,主要是在進行地塊圖形編輯時采集要素節(jié)點時反復添加某一點位會產(chǎn)生自相交錯誤,或者是作圖人員誤操作拖動了節(jié)點引起圖形產(chǎn)生自相交[6]。該類錯誤在質檢規(guī)則中屬于嚴重缺陷,應及時處理以滿足地塊面積計算和入庫的需要。
根據(jù)農(nóng)村土地確權數(shù)據(jù)庫建設質量要求,矢量數(shù)據(jù)地塊界址線兩節(jié)點間的圖上距離小于0.05 m時,應該實際核實界址線的真實性[3-4]。
自相交檢查思路如下:遍歷圖層要素將DK導入新建的GDB數(shù)據(jù)庫,把面要素DK轉成內(nèi)部點(Inner_Point)作為接下來線轉面(New_DK)的標記要素;其次,通過地塊界址點分割面要素DK轉成線要素DK_L,再由線DK_L和Inner_Point轉成面DK_LP,提取Join_Count為0的可疑地塊,將面相交后轉內(nèi)部點,關聯(lián)新點與原有地塊面,輸出錯誤SHP。另一種方法是將面轉成線要素后,通過建立拓撲Must Not Self-Intersect (Line)進行檢查。
近節(jié)點檢查思路:遍歷圖層要素,地塊面狀要素在節(jié)點處分割線,篩選線長小于等于0.05 m的線段,輸出錯誤SHP。
2.2.2 屬性數(shù)據(jù)的檢查
該項檢查主要是按照以下步驟進行:(1)收集相關標準規(guī)范資料,分析數(shù)據(jù)庫標準;(2)分析數(shù)據(jù),對待檢查的數(shù)據(jù)進行分析,按標準要求制作檢查模板。(3)判斷檢查項。根據(jù)質檢軟件檢查規(guī)則及相關技術規(guī)范要求,列出如下自定義的檢查項:
表1 部分自定義檢查項
(4)制作檢查記錄模板。根據(jù)列出的檢查項,編制檢查模板。
部分主要代碼如下:
# 關聯(lián)性檢查條件設置
for row in cbf_list:
cbf_bm14_xm.append(row.CBFBM[:14]+row.CBFMC)
cbf_bm.append(row.CBFBM)
for row in jtcy_list:
jtcy_cur.append(row.CBFBM+row.CYXM)
jtcydict[row.CBFBM+row.CYXM]=row.JTCYDM
for row in dk_list:
if row.CBFMC[-2:] != "31":
dk_cur.append(row.DKBM[:14]+row.CBFMC)
with arcpy.da.UpdateCursor(cbf) as cbf_list:
for row in cbf_list:
if row.CBFBM not in cbf_bmcf:
cbf_bmcf.append(row[0])
cw0=""
else:cw0="承包方編碼{0}重復".format(row[0])
if (row.CBFBM+row.CBFMC) not in jtcy_cur:
cw1="承包方?jīng)]有在成員表中"
elif jtcydict.get((row[0]+row[1]))[:1]!="0":
cw1="承包方在成員表中不是本人或戶主"
else:cw1=""
if row[0][:14]+row[1] not in dk_cur:
cw2="該承包方?jīng)]有地塊,"
else:cw2=""
cbf_list.updateRow(row)
with arcpy.da.UpdateCursor(jtcy) as jtcy_list:
for row in jtcy_list:
if row[0] not in cbf_bm:
row[2]="沒有在承包方內(nèi),"
else:row[2]=""
jtcy_list.updateRow(row)
with arcpy.da.UpdateCursor(dk) as dk_list:
for row in dk_list:
if row.DKBM not in dk_bm:
dk_bm.append(row[0])
cw0=""
else:cw0="地塊編碼{0}重復".format(row.DKBM)
if "{0}{1}".format(row.DKBM[:14],row[ZJRXM]) not in cbf_bm14_xm:
cw1="權利人沒有在承包方內(nèi)"
else:cw1=""
dk_list.updateRow(row)
為了保障農(nóng)村土地承包經(jīng)營權確權登記頒證成果數(shù)據(jù)庫的質量,在項目啟動后,結合農(nóng)業(yè)農(nóng)村部數(shù)據(jù)庫質量建設要求和農(nóng)村土地承包經(jīng)營權數(shù)據(jù)庫成果質量檢查規(guī)則等相關文件,建立了縣級土地確權數(shù)據(jù)庫檢查的模型,基于Python語言構建了屬性數(shù)據(jù)、權屬數(shù)據(jù)及其兩者關聯(lián)一致性的自動檢查模型。
為了方便建庫人員調(diào)用,引入Add-In插件,通過Add-In創(chuàng)建按鈕加載項,完成項目設置與定義要創(chuàng)建的多種加載項,并在加載項內(nèi)容選項卡中設置工具條,將相關腳本與加載項對應的腳本相結合,安裝加載項以后在ArcGIS10.2.2中可直接調(diào)用自定義的工具條[10]。軟件配置及界面如圖4和圖5所示。
其中,config.xml定義存儲了軟件的作者、版本、幫助、描述等相關信息;Install文件存放了軟件腳本調(diào)取的相關邏輯信息;Images存儲了軟件按鈕圖標等相關圖像數(shù)據(jù);makeaddin.py用于打包和壓縮成“土地確權數(shù)據(jù)檢查.esriaddin”。
前期在各縣土地確權數(shù)據(jù)生產(chǎn)的過程中,傳統(tǒng)的檢查方式存在檢查效率低、漏查誤查、檢查結果不規(guī)范、投入成本多等問題。后期,通過對形成的矢量數(shù)據(jù)、權屬數(shù)據(jù)等成果的差錯率進行統(tǒng)計分析,結合數(shù)據(jù)庫建設標準和匯交要求,構建了成果數(shù)據(jù)質量檢查模型,對矢量數(shù)據(jù)、權屬數(shù)據(jù)以及兩者的邏輯關聯(lián)性設計了針對性的檢查算法,采用Python制定檢查工具腳本,引入Add-In創(chuàng)建定義了工具條。該檢查工具實現(xiàn)了質檢方案靈活、可定制、可實現(xiàn)“一次定制、反復使用”,在云南省廣南縣、富寧縣、新平縣、江城縣、永德縣等地的農(nóng)村土地承包經(jīng)營權確權登記項目中的應用取得了良好的效果。
圖3 工具使用界面
圖4 軟件配置
圖5 軟件Add-In界面
以農(nóng)業(yè)農(nóng)村部農(nóng)村土地承包經(jīng)營權確權數(shù)據(jù)庫建設質量要求和數(shù)據(jù)庫質量檢查規(guī)則為標準,以農(nóng)村土地承包經(jīng)營權確權調(diào)查數(shù)據(jù)庫成果質量檢查為切入點,通過分析數(shù)據(jù)庫中矢量數(shù)據(jù)和權屬數(shù)據(jù)的質量要求,針對矢量數(shù)據(jù)、屬性數(shù)據(jù)及兩者間的邏輯關聯(lián)關系進行全面的質量檢查,基于ArcGIS10.2.2平臺,采用Python腳本語言設計并實現(xiàn)了矢量數(shù)據(jù)、權屬數(shù)據(jù)及兩者關聯(lián)一致性的自動檢查模型,最后通過對廣南等縣農(nóng)村土地承包經(jīng)營權確權數(shù)據(jù)庫成果質量檢查的實際應用驗證了可行性。
(1)利用Python腳本語言構建自動檢查模型,能夠快速實現(xiàn)矢量數(shù)據(jù)、屬性數(shù)據(jù)及兩者關聯(lián)一致性的自動檢查,保證了數(shù)據(jù)成果質量。
(2)針對農(nóng)村土地確權矢量數(shù)據(jù)的問題,主要研究了要素自相交等錯誤的解決辦法,充分發(fā)揮了Python腳本語言在農(nóng)村土地確權矢量圖形數(shù)據(jù)檢查中的優(yōu)勢。
(3)以規(guī)范統(tǒng)一的檢查規(guī)則為基礎,不同質量問題可設計針對性檢查方法,將形成的針對性檢查方法整合構成檢查模型,實現(xiàn)調(diào)用檢查模板即可自動檢查。