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