耿源浩 楊旭東 王子強(qiáng) 劉博文 黃迎春 紀(jì)雷鳴
(1. 北京市測(cè)繪設(shè)計(jì)研究院, 北京 100038; 2. 城市空間信息工程北京市重點(diǎn)實(shí)驗(yàn)室, 北京 100038)
地理國情監(jiān)測(cè)工作以地理國情普查數(shù)據(jù)為支撐,針對(duì)自然社會(huì)資源等自然和人文地理要素進(jìn)行監(jiān)測(cè),通過遙感以及全球定位系統(tǒng)(Global Positioning System,GPS)等技術(shù),對(duì)地理要素進(jìn)行變化特征趨勢(shì)等方面的分析[1]。地理國情監(jiān)測(cè)工作的內(nèi)容主要是對(duì)自然地理要素以及人文地理要素進(jìn)行調(diào)查,對(duì)相關(guān)地理國情信息進(jìn)行統(tǒng)計(jì)分析,以此為城鄉(xiāng)規(guī)劃、環(huán)境整治和重要工程等提供一定的決策依據(jù)[2]。目前的地理國情監(jiān)測(cè)工作需要通過使用ArcGIS對(duì)大量數(shù)據(jù)進(jìn)行分析和處理,其中ArcToolbox的各種工具被廣泛地應(yīng)用于實(shí)際的生產(chǎn)工作中。ModelBuilder是ArcGIS提供的一種可視化編程環(huán)境,通過直接利用ArcGIS平臺(tái)中的各種工具,按照一定的規(guī)則將工具進(jìn)行組合,形成一個(gè)完整的流程化的模型程序。ModelBuilder具有以下特點(diǎn):可視性、快捷性、組合性[3],構(gòu)建的模型程序可以通過流程化、自動(dòng)化的方式保存和共享,減少重復(fù)性的勞作[4]。
本文提出一種基于ModelBuilder的數(shù)據(jù)更新(ChangeAtt)字段說明進(jìn)行自動(dòng)賦值的方法,通過簡(jiǎn)單的一鍵操作即可對(duì)數(shù)據(jù)更新字段說明進(jìn)行自動(dòng)更新,操作人員不需要具備地理國情數(shù)據(jù)整理的相關(guān)知識(shí)就可進(jìn)行生產(chǎn)工作。在面對(duì)海量的地理國情數(shù)據(jù)時(shí),仍能高效、快速地對(duì)更新字段說明進(jìn)行自動(dòng)賦值[5]。
ChangeAtt字段主要體現(xiàn)的內(nèi)容為本底地理國情數(shù)據(jù)(上一年度的監(jiān)測(cè)成果)與現(xiàn)年度的成果數(shù)據(jù)在屬性上發(fā)生的改變,將變化屬性相應(yīng)的編碼填入本字段。如若存在同一要素的屬性發(fā)生兩種及以上變化,則用“/”對(duì)編碼進(jìn)行分割。以北京市地理國情單體建筑數(shù)據(jù)為例,其屬性字段如表1所示,需對(duì)其各種屬性進(jìn)行差異分析。

表1 地理國情監(jiān)測(cè)數(shù)據(jù)更新字段包含內(nèi)容屬性及編碼
數(shù)據(jù)更新字段說明可幫助相關(guān)人員對(duì)要素屬性的變化情況進(jìn)行直觀地核驗(yàn),客觀且真實(shí)地反應(yīng)單體建筑的地上建筑規(guī)模、地上層數(shù)等屬性變化情況。
傳統(tǒng)對(duì)數(shù)據(jù)更新字段說明賦值需要對(duì)本底數(shù)據(jù)和版本數(shù)據(jù)通過要素唯一識(shí)別碼進(jìn)行掛接,掛接成功之后逐條對(duì)相關(guān)屬性說明字段進(jìn)行變化分析,將變化的部分在數(shù)據(jù)更新字段中通過對(duì)應(yīng)的編碼進(jìn)行標(biāo)識(shí)。在生產(chǎn)工作中,需要將ArcGIS中多種工具組合使用,然而待處理的數(shù)據(jù)量往往非常龐大,完全依靠人工干預(yù)不僅會(huì)致使生產(chǎn)效率低下,還會(huì)導(dǎo)致隨機(jī)誤差產(chǎn)生。
將2020年房山區(qū)地理國情監(jiān)測(cè)單體建筑數(shù)據(jù)作為測(cè)試數(shù)據(jù),一臺(tái)普通工作電腦作為測(cè)試工具,針對(duì)17個(gè)字段,采用傳統(tǒng)人工賦值的方法對(duì)更新字段說明進(jìn)行更新,一個(gè)人使用普通工作機(jī)則至少需要13 h的時(shí)間才可完成處理工作。如果涉及全北京市的數(shù)據(jù)更新字段說明的處理,時(shí)間成本會(huì)以指數(shù)型的量級(jí)增加,并且由于數(shù)據(jù)量的龐大,人工操作的過程中誤差的產(chǎn)生率會(huì)極大地增加。
地理國情數(shù)據(jù)更新字段說明自動(dòng)賦值主要關(guān)鍵技術(shù)是基于ModelBuilder,將ArcToolbox的所需工具進(jìn)行符合邏輯的組合,從而形成一個(gè)完整且連續(xù)的模型,簡(jiǎn)化多部操作[6]。通過計(jì)算機(jī)自動(dòng)處理提高工作效率,降低誤差率。應(yīng)用ArcGIS模型構(gòu)建器構(gòu)建模型的本質(zhì)是對(duì)ArcToolbox工具進(jìn)行充分利用。但是在實(shí)際使用的過程中,需要對(duì)其邏輯性以及可行性進(jìn)行評(píng)估,即所需實(shí)現(xiàn)的功能是否能通過ArcGIS軟件得到實(shí)現(xiàn)。所構(gòu)建模型主要的組成部分為:輸入數(shù)據(jù)、空間處理工具、輸出數(shù)據(jù)[7]。
基于ArcGIS ModelBuilder對(duì)地理國情數(shù)據(jù)更新字段說明自動(dòng)賦值方法,需要掌握以下幾個(gè)技術(shù)要點(diǎn):
一是利用結(jié)構(gòu)化查詢語言(Structured Query Language,SQL)和VB(Visual Basic)編程語言語句對(duì)數(shù)據(jù)進(jìn)行篩選以及賦值,SQL作為一種查詢語句[8],在本實(shí)驗(yàn)中的作用是對(duì)監(jiān)測(cè)數(shù)據(jù)和本底數(shù)據(jù)進(jìn)行篩選,篩選兩期數(shù)據(jù)目標(biāo)屬性產(chǎn)生差異的單體要素,之后通過VB語句對(duì)篩選后的要素根據(jù)相應(yīng)的編碼進(jìn)行賦值。
二是需掌握ArcGIS相關(guān)應(yīng)用知識(shí),ModelBuilder作為ArcGIS的一個(gè)組件,以可視化流程化的方式將數(shù)據(jù)處理中的多個(gè)處理任務(wù)進(jìn)行繼承處理,將相應(yīng)的腳本工具加載進(jìn)入作業(yè)區(qū),以一定的邏輯性進(jìn)行連接,不需要針對(duì)腳本工具編寫程序就可以建立高效且精準(zhǔn)的工作流[9]。
三是需掌握北京市地理國情監(jiān)測(cè)技術(shù)標(biāo)準(zhǔn), 北京市地理國情內(nèi)容與指標(biāo)體系是根據(jù)北京市的實(shí)際需求結(jié)合國家對(duì)地理國情監(jiān)測(cè)內(nèi)容指標(biāo)的要求進(jìn)行制定[10]。本文中所涉及的相關(guān)內(nèi)容均來自2020年北京市地理國情監(jiān)測(cè)內(nèi)容與指標(biāo)。
北京市地理國情監(jiān)測(cè)單體建筑數(shù)據(jù)更新字段主要包括監(jiān)測(cè)數(shù)據(jù)的地理國情信息分類碼、建筑編碼、門牌地址、占地面積、總建筑規(guī)模、地上建筑面積、地上層數(shù)、地下層數(shù)、地下建筑面積、建筑高度、房屋性質(zhì)、建筑使用性質(zhì)、土地性質(zhì)、所在區(qū)縣、所在鄉(xiāng)鎮(zhèn)、數(shù)據(jù)來源、外業(yè)說明。北京市每個(gè)區(qū)縣的監(jiān)測(cè)數(shù)據(jù)屬性內(nèi)容原則上具有一致性,本文選擇房山區(qū)2020年的單體建筑數(shù)據(jù)作為實(shí)驗(yàn)數(shù)據(jù),主要技術(shù)流程如圖1所示。具體模型如圖2所示。

圖1 基于ModelBuilder的地理國情數(shù)據(jù)更新字段說明自動(dòng)賦值技術(shù)流程

圖2 更新字段說明自動(dòng)賦值模型結(jié)構(gòu)
2.3.1本底數(shù)據(jù)與監(jiān)測(cè)數(shù)據(jù)連接
將監(jiān)測(cè)數(shù)據(jù)和本底數(shù)據(jù)導(dǎo)入模型構(gòu)建器內(nèi),加入ArcToolbox中的連接字段工具。之所以使用連接字段工具,是因?yàn)檫B接字段是一種永久連接,可使之后按屬性進(jìn)行分類篩選符合條件的單體要素時(shí)的速度得到顯著提高。將要素唯一識(shí)別碼作為監(jiān)測(cè)數(shù)據(jù)和本底的屬性連接字段而不采用空間掛接的方式,是因?yàn)椴捎眠@種方法可以避開在實(shí)際生產(chǎn)工作中由于精度提高使單體建筑矢量發(fā)生空間位置偏移或變形而帶來的影響。
2.3.2添加標(biāo)識(shí)字段
為了方便記錄數(shù)據(jù)更新字段,建立新的字段作為計(jì)算操作的基礎(chǔ)。字段名命名為“chayi”,字段類型選擇字符串。
2.3.3篩選要素并對(duì)其賦值
在模型編輯器中加入按屬性查找工具并運(yùn)用SQL查詢語句,對(duì)單體要素進(jìn)行篩選。SQL可視為數(shù)據(jù)查詢的特殊語言,通過SQL語句對(duì)本底數(shù)據(jù)和監(jiān)測(cè)數(shù)據(jù)所感興趣的字段進(jìn)行篩選,篩選出屬性發(fā)生變化的要素。得到篩選后的單體建筑要素后,通過VB語言并且參照相應(yīng)屬性說明字段的編碼進(jìn)行賦值。由于存在多種屬性發(fā)生變化的單體建筑,需要通過[chayi]&“編碼”形式的語句對(duì)篩選后要素的“chayi”字段進(jìn)行計(jì)算,此表達(dá)式的具體意思為“chayi”字段中的原始數(shù)據(jù)得到保留后,在其后添加入自己所規(guī)定的內(nèi)容,通過這樣的方式可以完整地保留經(jīng)多次篩選得到的成果記錄。以地理國情信息分類碼發(fā)生變化的單體建筑要素為例,計(jì)算字段時(shí)的表達(dá)式應(yīng)為:[chayi]&“/CC”。
2.3.4字段處理
由于實(shí)際生產(chǎn)中存在只有一種屬性發(fā)生變化的單體建筑,以至于“chayi”字段中會(huì)出現(xiàn)例如“/CC”這種間隔符在字段內(nèi)容前的情況,這種情況不符合技術(shù)設(shè)計(jì)要求,所以需要對(duì)這種單體建筑要素的“chayi”字段進(jìn)行處理以滿足生產(chǎn)標(biāo)準(zhǔn),將例如“/CC”通刷為“CC”。此時(shí)會(huì)運(yùn)用到VB語言中的MID函數(shù)“Mid(string, start[,length])”,string為字符串的名稱,start[,length]的意義為從第A個(gè)字符開始,截至B個(gè)字符,其中的字符串得到保留。所以選擇從第二個(gè)字符開始,對(duì)其之后的所有字符進(jìn)行保留,則表達(dá)式為Mid([chayi],2,1000)。并且由于此模型選擇將兩期房屋單體建筑進(jìn)行的連接是一種永久鏈接,所以就會(huì)導(dǎo)致本底房屋單體數(shù)據(jù)的屬性值會(huì)被復(fù)制到監(jiān)測(cè)數(shù)據(jù)內(nèi),所以就需要采用刪除字段工具對(duì)其進(jìn)行刪減。
由于數(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編譯模型處理后的結(jié)果如表3所示。

表3 房山區(qū)某單體建筑ChangeAtt字段
經(jīng)過模型處理后的ChangeAtt字段將本單體存在的變化全部進(jìn)行了標(biāo)識(shí),其規(guī)范以及標(biāo)準(zhǔn)完全符合2020年北京市地理國情監(jiān)測(cè)任務(wù)規(guī)定的相關(guān)標(biāo)準(zhǔn)。ChangeAtt字段將單體建筑在一年間的變化進(jìn)行了非常直觀并且全面地展示,便于對(duì)地理國情數(shù)據(jù)進(jìn)行相關(guān)統(tǒng)計(jì)分析工作。
基于ModelBuilder的地理國情數(shù)據(jù)更新字段說明自動(dòng)賦值方法只需要對(duì)模型進(jìn)行架構(gòu),然后將本底數(shù)據(jù)和監(jiān)測(cè)數(shù)據(jù)加載入編寫的模型內(nèi)且不需要人工對(duì)中間過程進(jìn)行干預(yù),完全依靠計(jì)算機(jī)就可以對(duì)更新字段進(jìn)行自動(dòng)賦值。不同于傳統(tǒng)人工賦值的手段,傳統(tǒng)手段需要人工對(duì)每一項(xiàng)操作進(jìn)行干預(yù),從鏈接字段到賦值皆需要至少一個(gè)人全程監(jiān)督。
經(jīng)過2020年地理國情監(jiān)測(cè)工作的檢驗(yàn),運(yùn)用基于ModelBuilder的地理國情數(shù)據(jù)更新字段說明自動(dòng)賦值的方法,對(duì)北京市房山區(qū)這樣擁有眾多單體建筑的區(qū)縣,一個(gè)人操作普通工作機(jī)只需要大約1 h即可完成數(shù)據(jù)更新字段說明的工作。但是如果通過傳統(tǒng)人工賦值的手段,需要大概13 h才可以完成相應(yīng)工作;如果由于人為疏忽產(chǎn)生錯(cuò)誤,對(duì)其進(jìn)行修正同樣需要大量時(shí)間。
通過ArcGIS ModelBuilder進(jìn)行模型的編寫,以此來完成地理國情數(shù)據(jù)更新字段說明自動(dòng)賦值的方法在2020年地理國情監(jiān)測(cè)工作的實(shí)際應(yīng)用中得到了充分的驗(yàn)證,通過模型構(gòu)建器進(jìn)行地理國情數(shù)據(jù)更新字段說明自動(dòng)賦值的方法具備以下幾個(gè)特點(diǎn)。
一是自動(dòng)性,將監(jiān)測(cè)數(shù)據(jù)和本底數(shù)據(jù)加載入編譯的模型內(nèi),完全依靠計(jì)算機(jī)進(jìn)行自動(dòng)賦值,不需要人工進(jìn)行任何干預(yù),節(jié)省人力成本。
二是高效性,通過計(jì)算機(jī)自動(dòng)操作,即使是龐大的數(shù)據(jù)量也可將所需時(shí)間壓縮10倍左右,可以在實(shí)際生產(chǎn)工作中節(jié)省時(shí)間成本。
三是準(zhǔn)確性,完全依靠計(jì)算機(jī),擺脫人工干預(yù),不需要人為進(jìn)行機(jī)械性的工作,減少隨機(jī)誤差的產(chǎn)生。
由于北京市的地理國情監(jiān)測(cè)任務(wù)標(biāo)準(zhǔn)每年存在變化,需要對(duì)模型進(jìn)行相應(yīng)的調(diào)整,以便滿足實(shí)際生產(chǎn)工作中的需要。本文提出基于ModelBuilder的地理國情數(shù)據(jù)更新字段說明自動(dòng)賦值的方法,以此希望ArcGIS ModelBuilder在之后的北京市地理國情監(jiān)測(cè)工作中得到更多的應(yīng)用。