耿源浩 楊旭東 王子強 劉博文 黃迎春 紀雷鳴
(1. 北京市測繪設計研究院, 北京 100038; 2. 城市空間信息工程北京市重點實驗室, 北京 100038)
地理國情監(jiān)測工作以地理國情普查數(shù)據(jù)為支撐,針對自然社會資源等自然和人文地理要素進行監(jiān)測,通過遙感以及全球定位系統(tǒng)(Global Positioning System,GPS)等技術,對地理要素進行變化特征趨勢等方面的分析[1]。地理國情監(jiān)測工作的內(nèi)容主要是對自然地理要素以及人文地理要素進行調(diào)查,對相關地理國情信息進行統(tǒng)計分析,以此為城鄉(xiāng)規(guī)劃、環(huán)境整治和重要工程等提供一定的決策依據(jù)[2]。目前的地理國情監(jiān)測工作需要通過使用ArcGIS對大量數(shù)據(jù)進行分析和處理,其中ArcToolbox的各種工具被廣泛地應用于實際的生產(chǎn)工作中。ModelBuilder是ArcGIS提供的一種可視化編程環(huán)境,通過直接利用ArcGIS平臺中的各種工具,按照一定的規(guī)則將工具進行組合,形成一個完整的流程化的模型程序。ModelBuilder具有以下特點:可視性、快捷性、組合性[3],構建的模型程序可以通過流程化、自動化的方式保存和共享,減少重復性的勞作[4]。
本文提出一種基于ModelBuilder的數(shù)據(jù)更新(ChangeAtt)字段說明進行自動賦值的方法,通過簡單的一鍵操作即可對數(shù)據(jù)更新字段說明進行自動更新,操作人員不需要具備地理國情數(shù)據(jù)整理的相關知識就可進行生產(chǎn)工作。在面對海量的地理國情數(shù)據(jù)時,仍能高效、快速地對更新字段說明進行自動賦值[5]。
ChangeAtt字段主要體現(xiàn)的內(nèi)容為本底地理國情數(shù)據(jù)(上一年度的監(jiān)測成果)與現(xiàn)年度的成果數(shù)據(jù)在屬性上發(fā)生的改變,將變化屬性相應的編碼填入本字段。如若存在同一要素的屬性發(fā)生兩種及以上變化,則用“/”對編碼進行分割。以北京市地理國情單體建筑數(shù)據(jù)為例,其屬性字段如表1所示,需對其各種屬性進行差異分析。
表1 地理國情監(jiān)測數(shù)據(jù)更新字段包含內(nèi)容屬性及編碼
數(shù)據(jù)更新字段說明可幫助相關人員對要素屬性的變化情況進行直觀地核驗,客觀且真實地反應單體建筑的地上建筑規(guī)模、地上層數(shù)等屬性變化情況。
傳統(tǒng)對數(shù)據(jù)更新字段說明賦值需要對本底數(shù)據(jù)和版本數(shù)據(jù)通過要素唯一識別碼進行掛接,掛接成功之后逐條對相關屬性說明字段進行變化分析,將變化的部分在數(shù)據(jù)更新字段中通過對應的編碼進行標識。在生產(chǎn)工作中,需要將ArcGIS中多種工具組合使用,然而待處理的數(shù)據(jù)量往往非常龐大,完全依靠人工干預不僅會致使生產(chǎn)效率低下,還會導致隨機誤差產(chǎn)生。
將2020年房山區(qū)地理國情監(jiān)測單體建筑數(shù)據(jù)作為測試數(shù)據(jù),一臺普通工作電腦作為測試工具,針對17個字段,采用傳統(tǒng)人工賦值的方法對更新字段說明進行更新,一個人使用普通工作機則至少需要13 h的時間才可完成處理工作。如果涉及全北京市的數(shù)據(jù)更新字段說明的處理,時間成本會以指數(shù)型的量級增加,并且由于數(shù)據(jù)量的龐大,人工操作的過程中誤差的產(chǎn)生率會極大地增加。
地理國情數(shù)據(jù)更新字段說明自動賦值主要關鍵技術是基于ModelBuilder,將ArcToolbox的所需工具進行符合邏輯的組合,從而形成一個完整且連續(xù)的模型,簡化多部操作[6]。通過計算機自動處理提高工作效率,降低誤差率。應用ArcGIS模型構建器構建模型的本質(zhì)是對ArcToolbox工具進行充分利用。但是在實際使用的過程中,需要對其邏輯性以及可行性進行評估,即所需實現(xiàn)的功能是否能通過ArcGIS軟件得到實現(xiàn)。所構建模型主要的組成部分為:輸入數(shù)據(jù)、空間處理工具、輸出數(shù)據(jù)[7]。
基于ArcGIS ModelBuilder對地理國情數(shù)據(jù)更新字段說明自動賦值方法,需要掌握以下幾個技術要點:
一是利用結構化查詢語言(Structured Query Language,SQL)和VB(Visual Basic)編程語言語句對數(shù)據(jù)進行篩選以及賦值,SQL作為一種查詢語句[8],在本實驗中的作用是對監(jiān)測數(shù)據(jù)和本底數(shù)據(jù)進行篩選,篩選兩期數(shù)據(jù)目標屬性產(chǎn)生差異的單體要素,之后通過VB語句對篩選后的要素根據(jù)相應的編碼進行賦值。
二是需掌握ArcGIS相關應用知識,ModelBuilder作為ArcGIS的一個組件,以可視化流程化的方式將數(shù)據(jù)處理中的多個處理任務進行繼承處理,將相應的腳本工具加載進入作業(yè)區(qū),以一定的邏輯性進行連接,不需要針對腳本工具編寫程序就可以建立高效且精準的工作流[9]。
三是需掌握北京市地理國情監(jiān)測技術標準, 北京市地理國情內(nèi)容與指標體系是根據(jù)北京市的實際需求結合國家對地理國情監(jiān)測內(nèi)容指標的要求進行制定[10]。本文中所涉及的相關內(nèi)容均來自2020年北京市地理國情監(jiān)測內(nèi)容與指標。
北京市地理國情監(jiān)測單體建筑數(shù)據(jù)更新字段主要包括監(jiān)測數(shù)據(jù)的地理國情信息分類碼、建筑編碼、門牌地址、占地面積、總建筑規(guī)模、地上建筑面積、地上層數(shù)、地下層數(shù)、地下建筑面積、建筑高度、房屋性質(zhì)、建筑使用性質(zhì)、土地性質(zhì)、所在區(qū)縣、所在鄉(xiāng)鎮(zhèn)、數(shù)據(jù)來源、外業(yè)說明。北京市每個區(qū)縣的監(jiān)測數(shù)據(jù)屬性內(nèi)容原則上具有一致性,本文選擇房山區(qū)2020年的單體建筑數(shù)據(jù)作為實驗數(shù)據(jù),主要技術流程如圖1所示。具體模型如圖2所示。
圖1 基于ModelBuilder的地理國情數(shù)據(jù)更新字段說明自動賦值技術流程
圖2 更新字段說明自動賦值模型結構
2.3.1本底數(shù)據(jù)與監(jiān)測數(shù)據(jù)連接
將監(jiān)測數(shù)據(jù)和本底數(shù)據(jù)導入模型構建器內(nèi),加入ArcToolbox中的連接字段工具。之所以使用連接字段工具,是因為連接字段是一種永久連接,可使之后按屬性進行分類篩選符合條件的單體要素時的速度得到顯著提高。將要素唯一識別碼作為監(jiān)測數(shù)據(jù)和本底的屬性連接字段而不采用空間掛接的方式,是因為采用這種方法可以避開在實際生產(chǎn)工作中由于精度提高使單體建筑矢量發(fā)生空間位置偏移或變形而帶來的影響。
2.3.2添加標識字段
為了方便記錄數(shù)據(jù)更新字段,建立新的字段作為計算操作的基礎。字段名命名為“chayi”,字段類型選擇字符串。
2.3.3篩選要素并對其賦值
在模型編輯器中加入按屬性查找工具并運用SQL查詢語句,對單體要素進行篩選。SQL可視為數(shù)據(jù)查詢的特殊語言,通過SQL語句對本底數(shù)據(jù)和監(jiān)測數(shù)據(jù)所感興趣的字段進行篩選,篩選出屬性發(fā)生變化的要素。得到篩選后的單體建筑要素后,通過VB語言并且參照相應屬性說明字段的編碼進行賦值。由于存在多種屬性發(fā)生變化的單體建筑,需要通過[chayi]&“編碼”形式的語句對篩選后要素的“chayi”字段進行計算,此表達式的具體意思為“chayi”字段中的原始數(shù)據(jù)得到保留后,在其后添加入自己所規(guī)定的內(nèi)容,通過這樣的方式可以完整地保留經(jīng)多次篩選得到的成果記錄。以地理國情信息分類碼發(fā)生變化的單體建筑要素為例,計算字段時的表達式應為:[chayi]&“/CC”。
2.3.4字段處理
由于實際生產(chǎn)中存在只有一種屬性發(fā)生變化的單體建筑,以至于“chayi”字段中會出現(xiàn)例如“/CC”這種間隔符在字段內(nèi)容前的情況,這種情況不符合技術設計要求,所以需要對這種單體建筑要素的“chayi”字段進行處理以滿足生產(chǎn)標準,將例如“/CC”通刷為“CC”。此時會運用到VB語言中的MID函數(shù)“Mid(string, start[,length])”,string為字符串的名稱,start[,length]的意義為從第A個字符開始,截至B個字符,其中的字符串得到保留。所以選擇從第二個字符開始,對其之后的所有字符進行保留,則表達式為Mid([chayi],2,1000)。并且由于此模型選擇將兩期房屋單體建筑進行的連接是一種永久鏈接,所以就會導致本底房屋單體數(shù)據(jù)的屬性值會被復制到監(jiān)測數(shù)據(jù)內(nèi),所以就需要采用刪除字段工具對其進行刪減。
由于數(shù)據(jù)量過于龐大,本文選取房山區(qū)某一單體建筑做為舉例說明。表2為房山區(qū)某一單體建筑2019年和2020年ChangeAtt字段所要體現(xiàn)出差異的屬性字段。
表2 房山區(qū)某單體建筑ChangeAtt字段屬性字段
依據(jù)表2可知,這一單體建筑在2019—2020年間的CC、ABOVE_AREA、ALL_AREA、PAREA、SOURCE、U_PROPER屬性均發(fā)生了改變。經(jīng)過基于ModelBuilder編譯模型處理后的結果如表3所示。
表3 房山區(qū)某單體建筑ChangeAtt字段
經(jīng)過模型處理后的ChangeAtt字段將本單體存在的變化全部進行了標識,其規(guī)范以及標準完全符合2020年北京市地理國情監(jiān)測任務規(guī)定的相關標準。ChangeAtt字段將單體建筑在一年間的變化進行了非常直觀并且全面地展示,便于對地理國情數(shù)據(jù)進行相關統(tǒng)計分析工作。
基于ModelBuilder的地理國情數(shù)據(jù)更新字段說明自動賦值方法只需要對模型進行架構,然后將本底數(shù)據(jù)和監(jiān)測數(shù)據(jù)加載入編寫的模型內(nèi)且不需要人工對中間過程進行干預,完全依靠計算機就可以對更新字段進行自動賦值。不同于傳統(tǒng)人工賦值的手段,傳統(tǒng)手段需要人工對每一項操作進行干預,從鏈接字段到賦值皆需要至少一個人全程監(jiān)督。
經(jīng)過2020年地理國情監(jiān)測工作的檢驗,運用基于ModelBuilder的地理國情數(shù)據(jù)更新字段說明自動賦值的方法,對北京市房山區(qū)這樣擁有眾多單體建筑的區(qū)縣,一個人操作普通工作機只需要大約1 h即可完成數(shù)據(jù)更新字段說明的工作。但是如果通過傳統(tǒng)人工賦值的手段,需要大概13 h才可以完成相應工作;如果由于人為疏忽產(chǎn)生錯誤,對其進行修正同樣需要大量時間。
通過ArcGIS ModelBuilder進行模型的編寫,以此來完成地理國情數(shù)據(jù)更新字段說明自動賦值的方法在2020年地理國情監(jiān)測工作的實際應用中得到了充分的驗證,通過模型構建器進行地理國情數(shù)據(jù)更新字段說明自動賦值的方法具備以下幾個特點。
一是自動性,將監(jiān)測數(shù)據(jù)和本底數(shù)據(jù)加載入編譯的模型內(nèi),完全依靠計算機進行自動賦值,不需要人工進行任何干預,節(jié)省人力成本。
二是高效性,通過計算機自動操作,即使是龐大的數(shù)據(jù)量也可將所需時間壓縮10倍左右,可以在實際生產(chǎn)工作中節(jié)省時間成本。
三是準確性,完全依靠計算機,擺脫人工干預,不需要人為進行機械性的工作,減少隨機誤差的產(chǎn)生。
由于北京市的地理國情監(jiān)測任務標準每年存在變化,需要對模型進行相應的調(diào)整,以便滿足實際生產(chǎn)工作中的需要。本文提出基于ModelBuilder的地理國情數(shù)據(jù)更新字段說明自動賦值的方法,以此希望ArcGIS ModelBuilder在之后的北京市地理國情監(jiān)測工作中得到更多的應用。