任雷鵬
(山西省測繪地理信息院測繪地理信息數(shù)據(jù)中心,山西 太原 030001)
地理國情是空間化、可視化的國情信息,是從地理的角度分析、研究和描述國情,是重要的基本國情之一。地理國情監(jiān)測是綜合利用現(xiàn)代測繪技術(shù)和各時(shí)期已有測繪成果檔案,對地表覆蓋和地理國情要素等進(jìn)行全面普查和監(jiān)測,并統(tǒng)計(jì)分析其分布特征與差異、變化量和變化頻率以及相互關(guān)系等,形成反映各類自然資源、生態(tài)環(huán)境、社會(huì)經(jīng)濟(jì)要素的空間分布及其發(fā)展變化規(guī)律的地理國情數(shù)據(jù)、地圖和報(bào)告。
其中地理國情監(jiān)測成果建庫是地理國情監(jiān)測的重要內(nèi)容,是對監(jiān)測成果數(shù)據(jù)進(jìn)行集成管理、統(tǒng)計(jì)分析、應(yīng)用服務(wù)的前提,是為今后開展地理國情監(jiān)測常態(tài)監(jiān)測提供本底數(shù)據(jù)庫及應(yīng)用服務(wù)平臺(tái)。地理國情監(jiān)測數(shù)據(jù)庫與傳統(tǒng)的基礎(chǔ)地理數(shù)據(jù)庫相比,在技術(shù)要求和標(biāo)準(zhǔn)都有較大幅度的提高。由于在建庫過程中遇到地理數(shù)據(jù)結(jié)構(gòu)復(fù)雜、數(shù)據(jù)量大、數(shù)據(jù)源多等特點(diǎn),因此需要在建庫前對地理國情數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理。地理國情監(jiān)測入庫前預(yù)處理,是指按照數(shù)據(jù)庫技術(shù)設(shè)計(jì),對監(jiān)測生產(chǎn)成果數(shù)據(jù)作入庫前處理,使得成果數(shù)據(jù)內(nèi)容及形式滿足數(shù)據(jù)建庫與管理要求。
在地理國情監(jiān)測數(shù)據(jù)預(yù)處理過程中,路網(wǎng)數(shù)據(jù)更新與檢查是整個(gè)數(shù)據(jù)預(yù)處理過程中很重要的一步。由于道路數(shù)據(jù)量大,更新情況比較多,更新工作量大,尤其是2019年收集公路數(shù)據(jù)中,道路數(shù)據(jù)屬性變化比較多,全省道路數(shù)據(jù)有20多萬條記錄,發(fā)生變化的道路達(dá)到7萬多條記錄,更新比例超過30%。如果單純依靠人工檢查,在預(yù)處理時(shí)間不充裕的情況下,很難保證路網(wǎng)數(shù)據(jù)及時(shí)檢查完成,因此需要實(shí)現(xiàn)對路網(wǎng)檢查實(shí)現(xiàn)自動(dòng)化檢查,以提高質(zhì)檢效率。本文選擇Python作為開發(fā)語言,以arcpy站點(diǎn)包作為工具,實(shí)現(xiàn)地理國情監(jiān)測路網(wǎng)更新自動(dòng)化檢查,提高質(zhì)檢效率與質(zhì)檢準(zhǔn)確率。
路網(wǎng)更新是將本底數(shù)據(jù)N_LRDL層拷貝為變化數(shù)據(jù)層UN_LRDL,并按要求從分區(qū)數(shù)據(jù)中提取道路變化信息通用屬性項(xiàng),更新到相應(yīng)路網(wǎng)數(shù)據(jù)中。
地理國情監(jiān)測路網(wǎng)更新數(shù)據(jù)包括本底路網(wǎng)數(shù)據(jù)和分區(qū)數(shù)據(jù)中變化道路數(shù)據(jù)。其中本底路網(wǎng)數(shù)據(jù)主要是指上一年度不分區(qū)數(shù)據(jù)中的路網(wǎng)數(shù)據(jù),主要是由公路數(shù)據(jù)以及部分起聯(lián)通作用的農(nóng)村道路、城市道路合并的一套完整的道路路網(wǎng)。
分區(qū)數(shù)據(jù)中包括公路UV_LRDL、城市道路UV_LCTL、農(nóng)村道路UV_LVLL,不分區(qū)數(shù)據(jù)庫中包括路網(wǎng)本底數(shù)據(jù)N_LRDL,更新結(jié)果為UN_LRDL。路網(wǎng)更新數(shù)據(jù)(以太原市為例)(如圖1所示):
圖1 太原市路網(wǎng)更新數(shù)據(jù)
路網(wǎng)變化類型主要包括三種變化:圖形變化、屬性變化以及圖形和屬性變化,變化類型通過屬性字段changetype與changeatt兩個(gè)字段表示。其中changeatt主要是記錄變化字段,changetype主要記錄變化類型,分別用 -2、-1、0、1、2、3、9 表示,Changetype 字段說明(如表1所示):
表1 分區(qū)數(shù)據(jù)道路中的Changetype字段說明
路網(wǎng)更新方法是以上一年度路網(wǎng)數(shù)據(jù)UN_LRDL作為本底,從完成入庫檢查和修改的分區(qū)公路要素層UV_LRDL、城市道路UV_LCTL層和鄉(xiāng)村道路UV_LVLL層中提取除標(biāo)記為滅失的國道、省道、縣道和鄉(xiāng)道、連接道等要素以及保持公路網(wǎng)弧段連通所需的其他要素,提取后按照相應(yīng)的變化類型,對UN_LRDL進(jìn)行更新。更新時(shí)對路網(wǎng)中不再存在的路網(wǎng)弧段,直接進(jìn)行物理刪除,不記錄變化類型。更新時(shí)注意保持路網(wǎng)連通性,最終形成以省級任務(wù)區(qū)為整體的不分區(qū)數(shù)據(jù)庫文件UN_LRDL層,路網(wǎng)更新方法(如圖2所示):
圖2 路網(wǎng)更新方法
路網(wǎng)質(zhì)檢主要是檢查路網(wǎng)數(shù)據(jù)是否根據(jù)分區(qū)道路數(shù)據(jù)進(jìn)行合理更新,主要包括圖形信息與屬性信息是否根據(jù)分區(qū)數(shù)據(jù)中道路變化類型進(jìn)行相應(yīng)更新。
在數(shù)據(jù)預(yù)處理過程中,路網(wǎng)生產(chǎn)相對其他數(shù)據(jù)預(yù)處理工作量比較大。而且過程繁雜、參與作業(yè)人員較多,導(dǎo)致路網(wǎng)生產(chǎn)過程中出現(xiàn)數(shù)據(jù)質(zhì)量不一致,不合理的情況相對較多。在全省數(shù)據(jù)匯交時(shí),各類更新問題同時(shí)被發(fā)現(xiàn),如果依靠人工檢查,在匯交時(shí)間緊張,數(shù)據(jù)質(zhì)量不能下降的情況下,路網(wǎng)質(zhì)檢很難做到及時(shí)準(zhǔn)確發(fā)現(xiàn)問題。
由于分區(qū)數(shù)據(jù)中的道路數(shù)據(jù)分散在全省117個(gè)任務(wù)區(qū)數(shù)據(jù)庫中,道路數(shù)據(jù)達(dá)到20多萬條記錄,數(shù)據(jù)量非常大。人工檢查需要分別加載分區(qū)道路對比路網(wǎng)更新內(nèi)容,過程繁雜,容易漏檢查,因此,需要一款軟件實(shí)現(xiàn)路網(wǎng)自動(dòng)化檢查,以提高質(zhì)檢效率。
arcpy是以arcgisscripting模塊為基礎(chǔ),并繼承了相應(yīng)功能而構(gòu)建成的站點(diǎn)包。它是以實(shí)用高效的方式通過Python執(zhí)行地理數(shù)據(jù)分析、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)管理和地圖自動(dòng)化創(chuàng)建基礎(chǔ)。通過arcpy可訪問地理處理工具和其他函數(shù)、類和模塊,從而快速輕松地創(chuàng)建各種簡單或復(fù)雜工作流。本文選擇Python作為編程語言,結(jié)合arcpy站點(diǎn)包實(shí)現(xiàn)路網(wǎng)質(zhì)檢自動(dòng)化,通過程序?qū)崿F(xiàn)路網(wǎng)問題的快速定位,以快速反饋給作業(yè)人員及時(shí)進(jìn)行相應(yīng)修改,提高數(shù)據(jù)預(yù)處理的效率。
根據(jù)路網(wǎng)數(shù)據(jù)與路網(wǎng)更新方法,質(zhì)檢程序整體設(shè)計(jì)主要包括讀取數(shù)據(jù)、數(shù)據(jù)預(yù)處理、數(shù)據(jù)分析對比、結(jié)果輸出四個(gè)模塊。其中數(shù)據(jù)分析對比是整個(gè)程序的主要模塊,根據(jù)地理國情監(jiān)測路網(wǎng)更新方法,在此確定數(shù)據(jù)對比分析分為圖形更新檢查與屬性更新檢查,整體設(shè)計(jì)(如圖3所示):
圖3 整體設(shè)計(jì)圖
通過對數(shù)據(jù)內(nèi)容與總體設(shè)計(jì)分析,結(jié)合python特點(diǎn),分別對數(shù)據(jù)讀取、數(shù)據(jù)預(yù)處理、數(shù)據(jù)分析對比、成果輸出四個(gè)部分進(jìn)行詳細(xì)設(shè)計(jì),詳細(xì)設(shè)計(jì)(如圖4所示):
圖4 詳細(xì)設(shè)計(jì)圖
3.3.1 數(shù)據(jù)讀取
由于分區(qū)數(shù)據(jù)中道路包括UV_LRDL、UV_LVLL、UV_LCTL,分別存儲(chǔ)在分區(qū)數(shù)據(jù)庫的數(shù)據(jù)集中,分別讀取比較費(fèi)時(shí)費(fèi)力,在此我們利用arcpy.ListWorkspaces與arcpy.ListFeatureClass函數(shù)實(shí)現(xiàn)對分區(qū)數(shù)據(jù)庫中道路的遍歷。
3.3.2 數(shù)據(jù)預(yù)處理
第一步,通過數(shù)據(jù)遍歷獲取各分區(qū)數(shù)據(jù)庫中的UV_LRDL、UV_LCTL、UV_LVLL,利用 arcpy.Append_management實(shí)現(xiàn)各分區(qū)道路的合并,將質(zhì)檢任務(wù)區(qū)內(nèi)分區(qū)道路合并成整個(gè)任務(wù)區(qū)完整道路。
第二步,由于路網(wǎng)更新主要是更新UV_LRDL中變化數(shù)據(jù),而UV_LCTL與UV_LRDL存在道路重疊情況,因此,需要先通過空間選擇算法將重疊的城市道路選出并進(jìn)行刪除操作,在此主要用到arcpy.SelectLayer ByLocation_management與arcpy.DeleteFeatures_management函數(shù)實(shí)現(xiàn)。
第三步,是需要將整合的UV_LRDL、UV_LCTL、UV_LVLL進(jìn)行進(jìn)一步合并,形成融合公路、城市道路、農(nóng)村道路的數(shù)據(jù)UV_LRDL1,方便下一步對路網(wǎng)數(shù)據(jù)進(jìn)行對比,在此主要利用arcpy.Merge_management函數(shù)實(shí)現(xiàn)道路合并。
3.3.3 數(shù)據(jù)分析對比
數(shù)據(jù)分析對比主要包括圖形對比與屬性對比。
圖形對比分為兩部分,分別是對打斷更新識別判斷與對伸縮、新增、滅失等更新的識別判斷。
(1)對道路容易漏更新的打斷更新進(jìn)行檢查,主要檢查changetype為 -1、0的變化道路;利用FeatureVerticesToPoints_management函數(shù)實(shí)現(xiàn)道路斷點(diǎn)的提取,然后對兩者進(jìn)行擦出,提取多余斷點(diǎn),生成斷點(diǎn)圖層,并輸出到結(jié)果數(shù)據(jù)庫中。
(2)對變化類型為微調(diào)、伸縮、新增、滅失等更新的檢查,重點(diǎn)檢查 changetype為 -2、1、2、3、9 等變化類型的UN_LRDL是否根據(jù)分區(qū)數(shù)據(jù)進(jìn)行相應(yīng)更新。分別提取UN_LRDL1與UN_LRDL中變化要素,利用arcpy.Erase_analysis進(jìn)行擦出操作,提取圖形未更新的道路,并輸出到結(jié)果數(shù)據(jù)庫中。
屬性對比主要包括道路相交提取與字段對比兩部分。
(1)針對發(fā)生變化的UV_LRDL1與相同位置的UN_LRDL進(jìn)行字段對比,通過篩選UV_LRDL1中變化數(shù)據(jù)與路網(wǎng)數(shù)據(jù)進(jìn)行相交,利用arcpy.Intersect_analysis實(shí)現(xiàn)道路相交形成新圖層,然后利用arcpy.AddField_management實(shí)現(xiàn)字段追加,新增字段用來記錄字段值不相等的字段名稱。
(2)對相交形成的新圖層進(jìn)行字段對比實(shí)現(xiàn)分區(qū)道路字段與路網(wǎng)字段的訓(xùn)循環(huán)對比。如果字段不相等,則在新增的問題字段中追加相應(yīng)字段名稱,利用arcpy.da.UpdateCursor實(shí)現(xiàn)對新增字段的字段值更新。
3.3.4 結(jié)果輸出
質(zhì)檢結(jié)果主要包括三層數(shù)據(jù),分別是漏打斷更新的點(diǎn)圖層、判斷伸縮、新增、滅失等更新不一致的線圖層、判斷字段更新不一致的線圖層。
本文研究了使用Python和arcpy實(shí)現(xiàn)路網(wǎng)更新自動(dòng)化檢查。經(jīng)實(shí)踐,通過該程序能快速定位路網(wǎng)更新問題,提高質(zhì)檢工作效率。相比人工檢查,質(zhì)檢程序能高效、準(zhǔn)確的定位更新問題,以往需要數(shù)天甚至十多天的質(zhì)檢工作,縮短至十幾分鐘,極大的提高質(zhì)檢效率。
在實(shí)踐操作過程中,同時(shí)發(fā)現(xiàn)匯交數(shù)據(jù)的多樣性與數(shù)據(jù)問題的差異性,造成全省路網(wǎng)數(shù)據(jù)檢查過程中,個(gè)別問題仍需要依靠人工排查。因此,還需認(rèn)真研究建立相關(guān)檢查方法與檢查模型,最大程度的實(shí)現(xiàn)計(jì)算機(jī)自動(dòng)化檢查,以促進(jìn)地理國情監(jiān)測數(shù)據(jù)預(yù)處理工作與匯交工作的順利、快速、準(zhǔn)確的完成。