?

基于Python 的地理國情監測成果質量檢查軟件設計與實現

2023-02-05 13:57林養欽
經緯天地 2023年6期
關鍵詞:國情監測數據要素

林養欽

(廣東省地質局第七地質大隊,廣東惠州 516300)

0 引言

作為一項對國情國力進行準確調查、把握國土資源利用情況的基礎性監測工作,全國基礎性地理國情監測項目對于促進產業發展與科技創新、實現地理信息轉型發展具有重要意義。地理國情監測項目的監測周期為1 年,整個項目的數據生產時間主要集中在7 月到11 月,時間節點為每年的6 月底[1]。該項目主要包括4 大部分,分別為正射影像處理、監測數據生產、監測成果的檢查與驗收以及監測成果入庫。項目中的主要工作在于數據生產,僅有一個月左右時間進行項目質檢,因此,增強項目成果質量檢查更新錯誤的針對性、加快檢查進度、提高檢查正確率對于項目的高效、高質量完成具有重要意義。

基礎性地理國情監測數據生產主要使用ArcGIS 軟件,數據生產及質量檢查過程中必然會涉及多種重復性工作,因此,研究基于ArcGIS 平臺的地理國情監測數據批量化處理輔助工具對于提高數據生產質量及效率、節約項目成本具有重要作用。作為一種高級程序設計語言,Python 語言憑借其擴展性強、簡潔明了等多種優點成為備受青睞的程序語言?;赑ython 語言的ArcGIS 腳本可以大大提高地理國情監測數據處理效率,實現數據處理高效自動化。

作為基于ArcGIS 功能構建的站點包,ArcPy 為用戶提供了地理數據處理工具的接口,該站點包封裝了強大的類及相關函數,通過Python 語言調用該站點包的類與相關函數實現地理數據的自動化處理,包括數據分析、數據轉換以及數據管理等[2-3]。目前基于ArcPy 的腳本工具與地理國情監測數據的結合多用于數據提取批處理、數據裁切等,對于空間參考信息、拓撲關系、屬性結構信息等方面的檢查功能較少?;诖?,本文通過最新ArcPy 站點包結合地理國情監測數據進行代碼編寫,實現地理國情監測數據成果數據檢查效率的提升。

1 Python語言和ArcPy技術

作為ArcGIS 地理信息系統平臺所用腳本語言,Python 語言的主要特點包括[4-5]:

1)Python 語言的開源與免費功能可以為ArcGIS 軟件的進一步開發提供便捷;

2)Python 語言具有的面向對象編程特征,符合ArcGIS 的編程要求;

3)ArcGIS 所支持的各類操作系統均可使用Python 語言進行改動;

4)Python 語言適合各專業人員學習,專業要求性低,通過系統學習就可用于解決本行業實際問題;

5)作為一種解釋性語言,Python 語言具有較高的移植性,成為ArcGIS 腳本語言后,其功能得到了進一步地升級與增強。

ArcPy 是ArcGIS 中的一個站點包,其封裝了ArcGIS 大部分的功能,Python 可以通過該站點包實現ArcGIS 地理處理功能的訪問,包括地理數據分析、數據管理以及自動化創建地圖等功能[6]。ArcPy包括4 大模塊,如圖1 所示。1)ArcPy.da 模塊,用于提供數據訪問函數等;2)ArcPy.na 模塊,用于提供網絡分析函數等;3)ArcPy.sa 模塊,用于提供地理空間分析函數等;4)ArcPy.mapping 模塊,用于提供制圖等相關函數。

圖1 ArcPy 四大模塊

2 地理國情監測成果主要檢查內容

地理國情監測主要包括3 種數據成果,分別為地理國情監測生產元數據成果、地表覆蓋分類數據、地理國情要素數據成果[7]。這3 種數據成果的檢查內容均包括數據完整性、表征質量、要素類型、空間參考系統、拓撲關系、屬性結構等[8]。為了最大限度減少人工工作量,同時保證數據檢查的正確性,可以使用ArcGIS 結合Python 語言實現如要素類型、空間參考系、拓撲關系、屬性結構這幾類檢查內容的檢查。使用Python 語言完成檢查后,輔以必要的人工檢查發現數據內在錯誤,提高問題的檢查效率以及發現率。

2.1 要素類型和空間參考系檢查

通過ArcPy.da 函數可以獲取多種文件的路徑、數據類型等屬性,同時能夠獲取數據的要素類型以及空間參考系等,實現對要素類型以及空間參考系的檢查。

2.2 要素拓撲檢查

要素拓撲關系檢查主要包括閉合、連續、連接、重復等關系檢查,也就是對線線、線面、面面之間的聯系加以檢查[9]。地理國情監測數據中對于要素共線誤差的要求是小于0.5 m,對于要素面重疊、面裂隙誤差的要求同樣是小于0.5 m[10]。

對于水系要素而言,拓撲關系錯誤主要集中在2 個方面,1)數條河道流入同一河流時,上下游結構線沒有在同一點相交;2)沒有打斷結構線連通位置。對于道路要素而言,拓撲關系錯誤主要集中在4 個方面:1)沒有共線處理市政道路與普通道路的重復路段;2)錯誤打斷市政道路與普通公路的重復采集位置;3)錯誤打斷立體交接位置;4)沒有打斷路面交接連通位置。在地理單元方面,拓撲關系錯誤主要表現在面的縫隙與交叉。同時在進行接邊時,作業人員往往只關注水系、道路要素接邊,對于地理單元的接邊檢查較容易忽略。

針對地理國情監測數據制定特有的拓撲檢查數據集,監測數據要素拓撲關系檢查包括7 個步驟:1)數據集創建;2)數據導入;3)拓撲創建;4)要素類添加;5)拓撲規則添加;6)拓撲驗證;7)導出檢查結果。

上述代碼實現要素拓撲檢查的主要思路為首先創建拓撲規則,然后根據對添加的監測數據進行壓蓋、重疊、閉合、打斷等檢查。

2.3 要素屬性檢查

在進行內業數據編繪時進行屬性的修改與賦值,通常在進行屬性賦值時由于人為或者軟件漏洞會造成屬性賦值錯誤,并且該類錯誤的范圍較大、普遍性較高。一般的要素屬性錯誤主要有枚舉賦值錯誤、圖斑類型錯誤以及對象屬性與實際情況偏差。

2.3.1 枚舉賦值錯誤

地理國情監測數據中的部分枚舉字段可通過軟件或人工賦值,如地理國情監測中“變化類型”字段通常會隨著年度監測發生變化,根據不同的變化類型對該字段進行賦值,如“0”表示“伸縮”、“1”表示“新生”、“2”表示“糾錯”。在生產過程中,由于理解偏差、軟件沒有經過測試就使用會造成“要素唯一標識碼”“變化類型”等枚舉值錯誤。

2.3.2 圖斑類型錯誤

如果地理國情監測數據出現大面積圖斑更新錯誤,就會造成數據成果不合格,重新進行數據查改以及上交會造成項目成本增加。圖斑的大面積錯誤主要由以下3 個原因導致:1)沒有按照外業調查成果進行內業圖斑分類代碼更新;2)兩期影像對比不明顯,沒有通過外業調查的方式對內業不能明確圖斑分類的情況進行核實;3)錯誤進行的圖斑合并或切割造成的變化圖斑的錯誤更新[11]。

3 質量檢查應用實例

利用Python 語言以及地理國情監測數據之間的相互關系對數據更新錯誤進行檢查與核實,通過對錯誤信息進行定位實現錯誤信息自動提取,形成錯誤定位文件。本文以地理國情監測數據中道路中心線與地表覆蓋數據中建筑物面之間的錯誤拓撲關系為例進行說明。

3.1 設計思路

本案例是實現線要素與面要素相切、相交區域的提取,實現流程如圖2 所示。

圖2 線要素與面要素相切、相交區域提取

具體實現步驟為:

1)確定腳本執行的工作空間,在此空間內可進行讀取、查詢以及處理數據等工作;

2)線要素數據合并,將線狀橋梁要素、線狀河流要素以及線狀道路數據等進行合并,并丟棄不必要屬性字段,使用的是ArcGIS 自帶合并要素功能;

3)通過按位置要素選取工具將與線要素相切、相交的地表覆蓋圖斑確定為一個臨時面要素層;

4)通過按要素屬性選擇工具將臨時面狀要素圖層中分類為非房屋的要素圖層丟棄,保留房屋類面狀要素選擇集;

5)使用“Intersect”工具對合并后的線狀要素與房屋類面狀要素進行相交處理,將錯誤區域線狀要素以預定格式進行儲存與輸出。

3.2 關鍵步驟與函數

ArcGIS 工具箱中的大多數功能均可通過ArcPy相應的功能函數實現,利用Python 語言對ArcPy 相應功能函數進行調用以及組合,可以滿足大部分地理國情監測成果質量的自動檢查[12-13]。上文設計思路的主要實現步驟如下:

1)通過調用ArcPy 站點包實現工作間的設置,在此空間內可實現數據的查詢、增減等操作,如增加線狀道路要素數據。實現代碼為:

import arcpy

from arcpy import imp

imp.workspace="D:/ceshiData"

UV_LRRL="JIAN_256100.gdb/ceshiData/

UV_LRRL"

……

UV_LCRA="JIAN_256314.gdb/ceshiData/

UV_LCRA"

2)選擇ArcPy 站點包中的FieldMappings 類及其方法對線狀要素所需屬性表進行組織并刪除合并后線狀要素不需要的屬性。實現代碼為:

fieldMappings_output=arcpy.FiledMappings()

fieldMappings_output.addTabke(UV_LRRL)

……

fieldMappings_output.addTabke(UV_HYDL)

#刪除無用的屬性字段

If field.name not in["CC","GB","NAME"]:

fieldMappings_output.removeFieldMap(fieldMappings_output.fileFieldMapIndex(field.name))

3)對線狀要素進行檢查,在合并函數中加入fieldMappings_output 作為字段參數對線狀要素進行合并處理。

4)通過屬性選擇、空間選擇操作選擇與線狀要素相切、相交的房屋面要素并得到線面相交的線要素數據。實現代碼為:

Arcpy.MakeFeatureLayer_management

(UV_LCRA,”LCA_lyr”)

Arcpy.Intersect_analysis

(["LCA_lyr","lineTemp_lyr"],"lineTemp_lyrl","ALL",".001 Meters","INPUT")

Arcpy.MakeFeatureLayer_management

("lineTemp.shp","lineTemp_lyr")

5)整理輸出結果,添加錯誤說明字段,將無用屬性字段刪除。實現代碼為:

For field in filedList:

fieldList=Arcpy.ListFields("lineTemp_lyrl.shp","*","*")

If(fied.name!="FID")and(field.name!="CC"):

Arcpy.AddField_management(fc,"錯誤類型","TEXT", "", ""50, "", "NON_REQUIRED","NULLABLE","")

6)填寫錯誤說明字段內容。實現代碼為[13]:

arrpy.CalculatedField_manegement("錯誤類型","lineTemp_lyrl","PYTHON_9.3",expression)

Expression="str(!CC?。?str(!CC_1?。?

通過上述步驟以及代碼即可實現地理國情矢量數據的空間定位與錯誤說明,輔以人工瀏覽與檢查,形成檢查成果并交給作業人員修改與完善,可提高數據的檢查效率、大大降低人工工作量。

4 結語

地理國情監測項目具有周期長、時間緊、任務重的特征,因此研究對地理國情監測項目成果數據質量進行有效控制、保障年度國情監測項目按期按質完成具有重要意義。本文詳細介紹了地理國情監測數據檢查的主要內容,包括空間參考系檢查、拓撲關系檢查、屬性結構檢查等。同時對Python 語言以及ArcPy 站點包進行了介紹,為了最大限度提高作業效率、保障成果質量,通過利用Python 語言結合ArcPy 站點包編寫地理國情監測數據成果質量檢查工具,實現錯誤位置的快速定位。通過實際應用設計并實現了拓撲關系錯誤定位。本文編寫代碼并不完善,僅僅實現了設計功能,同時應加入解鎖數據、許可檢查、異常處理等功能,進一步完善與豐富程序。根據地理國情監測數據的特征,利用Python 語言輔助相關質檢工作是一種高效科學的處理辦法,同時可將本文開發思路進一步應用于基礎測繪與國土調查等項目數據處理中,提高Python語言的應用價值。

猜你喜歡
國情監測數據要素
家國情 詩詞魂
掌握這6點要素,讓肥水更高效
GSM-R接口監測數據精確地理化方法及應用
觀賞植物的色彩要素在家居設計中的應用
推廣生物乙醇汽油:迫切且合乎國情
論美術中“七大要素”的辯證關系
也談做人的要素
地理國情監測知識支持庫初步設計
GPS異常監測數據的關聯負選擇分步識別算法
基于小波函數對GNSS監測數據降噪的應用研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合