摘" 要:針對(duì)城市地下管線測(cè)量成果圖精度評(píng)定中人工量測(cè)費(fèi)時(shí)耗力的問(wèn)題,提出利用ArcGIS模型構(gòu)建器、Python開(kāi)發(fā)語(yǔ)言,根據(jù)成果質(zhì)檢中精度評(píng)定規(guī)則設(shè)計(jì)處理工作流程,建立模型工具的方法,應(yīng)用于管線成果精度評(píng)定工作。通過(guò)實(shí)例驗(yàn)證,ArcGIS模型構(gòu)建器的使用可以實(shí)現(xiàn)一次構(gòu)建,多人共享,重復(fù)使用,達(dá)到簡(jiǎn)化工作流程,提高工作效率的目的。
關(guān)鍵詞:ArcGIS模型構(gòu)建器;管線成果;精度評(píng)定;質(zhì)檢;Python語(yǔ)言
中圖分類號(hào):P209" " " " 文獻(xiàn)標(biāo)志碼:A" " " " " 文章編號(hào):2095-2945(2023)19-0181-04
Abstract: Aiming at the problem that manual measurement is time-consuming and labor-intensive in the accuracy evaluation of urban underground pipeline survey result map, this paper puts forward the method of using ArcGIS model builder and Python development language to design and process work flow and establish model tools according to the accuracy evaluation rules in the quality inspection of results, which is applied to the accuracy evaluation of pipeline results. Through example verification, ArcGIS model builder can be built once, shared by many people, and reused, so as to simplify the workflow and improve the work efficiency.
Keywords: ArcGIS model builder; pipeline results; accuracy evaluation; quality inspection; Python language
城市地下管線測(cè)量是對(duì)埋設(shè)在地下的給水、排水、燃?xì)狻崃凸I(yè)等各種管道進(jìn)行測(cè)繪,形成管線測(cè)量成果圖,一般以包含線狀管線和點(diǎn)狀附屬物的CAD圖紙?zhí)峤弧y(cè)繪完成后,需要對(duì)成果圖進(jìn)行質(zhì)檢,評(píng)價(jià)測(cè)量精度,通常是測(cè)量檢查點(diǎn)后人工量測(cè)點(diǎn)位精度,但數(shù)據(jù)量大的時(shí)候需要時(shí)間較長(zhǎng)。為解決人工量測(cè)費(fèi)時(shí)耗力的問(wèn)題,部分學(xué)者提出了一些研究方法。賈斌、李運(yùn)健等[1-2]分別在AutoCAD環(huán)境和平板系統(tǒng)中,開(kāi)發(fā)了城市地下管線質(zhì)檢系統(tǒng),實(shí)現(xiàn)地下管線成果數(shù)據(jù)自動(dòng)檢查。劉軍等[3]基于C#語(yǔ)言開(kāi)發(fā)了地下管線點(diǎn)數(shù)學(xué)精度統(tǒng)計(jì)程序。以上方法都需要大量的程序編寫(xiě)工作,本文基于ArcGIS模型構(gòu)建器、Python開(kāi)發(fā)語(yǔ)言,根據(jù)成果質(zhì)檢中精度評(píng)定規(guī)則設(shè)計(jì)處理工作流程,編寫(xiě)少量代碼,建立模型工具,應(yīng)用于管線成果精度評(píng)定。
1" ArcGIS模型構(gòu)建器和Python語(yǔ)言簡(jiǎn)介
ArcGIS模型構(gòu)建器(ArcGIS Model Builder)是ArcGIS軟件提供的一個(gè)用來(lái)流程化、腳本圖形化處理地理信息工作的建模工具[4],可以將ArcGIS提供的處理工具通過(guò)串聯(lián)的方式建立工作流程,可以將其中一個(gè)工具的輸出作為另一個(gè)工具的輸入。ArcGIS模型工具具有建模簡(jiǎn)單、順序化執(zhí)行、運(yùn)行高效等優(yōu)勢(shì)[5],眾多學(xué)者將其應(yīng)用于地形圖精度統(tǒng)計(jì)[6]、矢量數(shù)據(jù)自動(dòng)化拓?fù)錂z查[7]、國(guó)土三調(diào)數(shù)據(jù)處理[8]等的數(shù)據(jù)預(yù)處理和輔助生產(chǎn)中。ArcGIS模型構(gòu)建器具有以下特點(diǎn)。
1.1" 低代碼量
ArcGIS模型構(gòu)建器無(wú)需編寫(xiě)處理代碼或者只需要輔以少量的代碼,就可以建立數(shù)據(jù)處理流程。將一個(gè)個(gè)ArcGIS工具拖入編輯界面,再加入相互工作關(guān)系,即可把需要重復(fù)、批量處理的操作步驟讓模型工具來(lái)完成。
1.2" 圖形可視
ArcGIS模型構(gòu)建器就像繪制工作流程圖一樣,在可視化的編輯界面中布局工具和數(shù)據(jù),雙擊進(jìn)行參數(shù)設(shè)置,操作簡(jiǎn)單,邏輯明確,易于理解。
1.3" 多人共享
ArcGIS模型構(gòu)建器建立的工具模型可以保存導(dǎo)出工具箱,拷貝到其他電腦使用,可以實(shí)現(xiàn)一人建模,多人共享,體驗(yàn)友好。
Python語(yǔ)言是一種簡(jiǎn)單高效的面向?qū)ο箝_(kāi)發(fā)語(yǔ)言,具有易學(xué)、易讀、易維護(hù)的特點(diǎn)。ArcGIS軟件引入并內(nèi)置了Python語(yǔ)言,用于輔助數(shù)據(jù)處理。可以在ArcGIS中新建腳本并用Python語(yǔ)言編寫(xiě)腳本代碼,再在模型構(gòu)建器中調(diào)用。
2" 基于ArcGIS模型構(gòu)建器實(shí)現(xiàn)管線成果精度評(píng)定
2.1" 處理流程
基于ArcGIS模型構(gòu)建器實(shí)現(xiàn)CAD管線成果圖精度評(píng)定主要處理流程和步驟包括:①創(chuàng)建存儲(chǔ)數(shù)據(jù)庫(kù);②CAD中點(diǎn)線數(shù)據(jù)和測(cè)量坐標(biāo)點(diǎn)導(dǎo)入數(shù)據(jù)庫(kù)并定義投影;③提取線要素折點(diǎn);④線要素折點(diǎn)與點(diǎn)要素合并成待查點(diǎn)集;⑤添加X(jué)Y坐標(biāo)并刪除位置相同的點(diǎn);⑥建立檢查精度緩沖區(qū);⑦建立空間連接,提取緩存區(qū)內(nèi)點(diǎn)集;⑧添加字段并計(jì)算點(diǎn)位偏移值;⑨刪除多余字段并輸出計(jì)算結(jié)果。
2.2" 構(gòu)建ArcGIS處理模型
在ArcGIS模型構(gòu)建器中的處理模型實(shí)現(xiàn)過(guò)程如圖1所示。
在處理前先創(chuàng)建一個(gè)文件地理數(shù)據(jù)庫(kù),用于存儲(chǔ)中間數(shù)據(jù)。利用創(chuàng)建X、Y事件圖層工具,根據(jù)實(shí)測(cè)檢查點(diǎn)CSV或TXT數(shù)據(jù)創(chuàng)建GIS圖層;然后用復(fù)制要素工具,將測(cè)點(diǎn)數(shù)據(jù)、CAD中的點(diǎn)數(shù)據(jù)和線數(shù)據(jù)導(dǎo)入文件地理數(shù)據(jù)庫(kù)中;利用定義投影工具統(tǒng)一數(shù)據(jù)的坐標(biāo)系統(tǒng);再通過(guò)要素折點(diǎn)轉(zhuǎn)點(diǎn)工具將管線要素的所有折點(diǎn)提取出來(lái),并和管線點(diǎn)要素合并成待查點(diǎn)集;添加X(jué)、Y坐標(biāo)后,通過(guò)刪除相同工具將坐標(biāo)重疊點(diǎn)刪除。
以上數(shù)據(jù)處理完成后,先設(shè)置緩沖區(qū)距離(一般以2倍中誤差設(shè)置統(tǒng)一緩沖區(qū)距離值,若各區(qū)域質(zhì)檢中誤差要求不統(tǒng)一時(shí),可在測(cè)點(diǎn)數(shù)據(jù)中添加距離字段,再以該字段為緩沖區(qū)距離),根據(jù)測(cè)點(diǎn)數(shù)據(jù)建立緩沖區(qū)圖層。
其次,通過(guò)空間連接工具,以測(cè)點(diǎn)緩沖區(qū)圖層為目標(biāo)要素,待查點(diǎn)集圖層為連接要素,建立屬性連接,連接操作選擇一對(duì)一方式,匹配選項(xiàng)選擇包含,即可將在測(cè)點(diǎn)緩沖區(qū)內(nèi)的待查點(diǎn)選出并建立屬性連接。
再次,通過(guò)添加腳本方式,利用Python語(yǔ)言編寫(xiě)添加字段并計(jì)算點(diǎn)位差值的功能,即可計(jì)算出檢查點(diǎn)和待查點(diǎn)間的X坐標(biāo)差值、Y坐標(biāo)差值和距離差值。Python代碼實(shí)現(xiàn)如下:
# Import arcpy module
import arcpy
from arcpy import env
layerInput=arcpy.GetParameterAsText(0)
desc=arcpy.Describe(layerInput)
env.workspace=desc.path
# Process: 添加字段
arcpy.AddField_management(layerInput, \"Xdist\", \"FLOAT\", \"10\", \"3\", \"\", \"\", \"NULLABLE\",
\"NON_REQUIRED\", \"\")
arcpy.AddField_management(layerInput, \"Ydist\", \"FLOAT\", \"10\", \"3\", \"\", \"\", \"NULLABLE\",
\"NON_REQUIRED\", \"\")
arcpy.AddField_management(layerInput, \"Sdist\", \"FLOAT\", \"10\", \"3\", \"\", \"\", \"NULLABLE\",
\"NON_REQUIRED\", \"\")
# Process:計(jì)算字段
arcpy.CalculateField_management(layerInput,
\"Xdist\", \"!POINT_X!- !X!\", \"PYTHON\", \"\")
arcpy.CalculateField_management(layerInput,
\"Ydist\", \"!POINT_Y!- !Y!\", \"PYTHON\", \"\")
arcpy.CalculateField_management(layerInput,
\"Sdist\", \"math.sqrt( !Xdist!* !Xdist!+ !Ydist! * !Ydist!)\", \"PYTHON\", \"\")
最后,利用刪除字段工具刪除掉不需要的多余字段,再用表轉(zhuǎn)Excel工具將成果輸出為Excel表格。
2.3" 實(shí)例應(yīng)用
為驗(yàn)證以上處理模型的可行性,以某小區(qū)地下管線測(cè)量CAD成果圖作為質(zhì)檢對(duì)象,實(shí)地核查了20個(gè)管線點(diǎn),要求平面位移中誤差不大于5 cm。先將CAD管線成果圖和測(cè)量數(shù)據(jù)做預(yù)處理,刪除其他數(shù)據(jù),只保留管線圖層和附屬物要素,測(cè)量數(shù)據(jù)保留點(diǎn)號(hào)、X、Y、Z列并添加標(biāo)題行,存儲(chǔ)為CSV或TXT格式。按圖2所示界面設(shè)置模型參數(shù),點(diǎn)擊確定運(yùn)行。
模型工具運(yùn)行完成后生成輸出結(jié)果.xls見(jiàn)表1,表中X、Y為檢查測(cè)點(diǎn)平面坐標(biāo),POINT_X、POINT_Y為待查點(diǎn)平面坐標(biāo),表中坐標(biāo)均刪除了千位以上數(shù)據(jù),連接點(diǎn)為測(cè)點(diǎn)緩沖區(qū)與待查點(diǎn)連接數(shù)量,表示緩沖區(qū)內(nèi)待查點(diǎn)數(shù)量。
從表1中可以看出,現(xiàn)場(chǎng)檢測(cè)偏移最大點(diǎn)位C4,檢測(cè)點(diǎn)與待查點(diǎn)間相差0.063 m;C12、C18連接數(shù)為0個(gè),說(shuō)明在測(cè)點(diǎn)緩沖區(qū)內(nèi)沒(méi)有找到待測(cè)點(diǎn),經(jīng)核實(shí),C12為成果圖上漏繪點(diǎn),C18檢測(cè)偏移為0.12 m,超過(guò)2倍中誤差,屬于粗差;C6、C14、C20連接點(diǎn)數(shù)為2個(gè),需要人工判讀現(xiàn)場(chǎng)測(cè)量的是其中哪個(gè)待查點(diǎn),以便精度統(tǒng)計(jì)。
3" 結(jié)束語(yǔ)
使用ArcGIS模型構(gòu)建器和Python語(yǔ)言可以將數(shù)據(jù)處理過(guò)程中的重復(fù)性工作一次性批量處理,化繁為簡(jiǎn),很大程度上提高管線成果質(zhì)檢的工作效率,降低人員量測(cè)精度的工作強(qiáng)度,可有效減少過(guò)程數(shù)據(jù)的產(chǎn)生,減少人工量測(cè)誤差。
通過(guò)實(shí)例可以看出,基于ArcGIS模型構(gòu)建器和Python語(yǔ)言構(gòu)建的模型工具,可以輕松便捷地實(shí)現(xiàn)ArcGIS的各種功能和批量數(shù)據(jù)的自動(dòng)處理,輔助管線成果質(zhì)檢,對(duì)管線測(cè)量成果圖平面位置精度分析很有幫助。
參考文獻(xiàn):
[1] 賈斌,李昱,李蕾,等.城市地下管線質(zhì)檢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].地理空間信息,2022,20(2):110-113.
[2] 李運(yùn)健,李沖,佘東靜,等.城市地下綜合管線質(zhì)檢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪通報(bào),2019(2):121-124,140.
[3] 劉軍,劉全海.基于C#的地下管線點(diǎn)數(shù)學(xué)精度統(tǒng)計(jì)程序設(shè)計(jì)[J].城市勘測(cè),2018(1):136-138.
[4] 陳清平,王劍輝.ArcGIS建模在集體土地所有權(quán)數(shù)據(jù)庫(kù)質(zhì)檢中的運(yùn)用[J].測(cè)繪與空間地理信息,2017,40(2):164-166.
[5] 王杰,范憲創(chuàng).ArcGIS模型構(gòu)建器在第三次國(guó)土調(diào)查數(shù)據(jù)質(zhì)檢中的應(yīng)用[J].地理空間信息,2021,19(7):61-63,105,7.
[6] 吳盛,冉崇憲,李積成.基于ArcGIS Model Builder構(gòu)建地形圖精度統(tǒng)計(jì)模型[J].經(jīng)緯天地,2017(2):25-27,44.
[7] 苗連朋,張莉.基于ArcGIS模型構(gòu)建器的矢量數(shù)據(jù)自動(dòng)化拓?fù)錂z查方法[J].測(cè)繪與空間地理信息,2021,44(S1):43-44,48.
[8] 王嘉偉,孫漳林,唐偉建.ArcGIS模型構(gòu)建器和Python語(yǔ)言在第三次全國(guó)國(guó)土調(diào)查數(shù)據(jù)處理中的應(yīng)用[J].長(zhǎng)春工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2020,21(4):34-38.
作者簡(jiǎn)介:齊瑤(1991-),女,工程師。研究方向?yàn)闇y(cè)繪工程和地理信息系統(tǒng)的應(yīng)用與開(kāi)發(fā)。