張忠斌
吉林省地礦測(cè)繪院,吉林 長(zhǎng)春 130062
目前,ArcGIS平臺(tái)已經(jīng)廣泛地運(yùn)用到測(cè)繪數(shù)據(jù)采集和生產(chǎn)過(guò)程中,同時(shí)也出現(xiàn)了基于ArcGIS開(kāi)發(fā)的數(shù)據(jù)處理程序[1]。但由于各項(xiàng)目數(shù)據(jù)結(jié)構(gòu)的不同,各個(gè)采集軟件的編輯和批處理功能都不是很完善,為了快速進(jìn)行采集和處理數(shù)據(jù),提高作業(yè)效率,編寫(xiě)了基于ArcGIS模型構(gòu)建器1∶5 000專(zhuān)題地理信息數(shù)據(jù)處理程序,實(shí)現(xiàn)了數(shù)據(jù)處理的批量面擦除、批量數(shù)據(jù)整合和裁切、數(shù)據(jù)屬性一致性檢查、數(shù)據(jù)格式轉(zhuǎn)換的基本功能,大大提高了數(shù)據(jù)采集、處理的工作效率。
1∶5 000專(zhuān)題地理信息數(shù)據(jù)是單幅采集的,格式為GDB文件,項(xiàng)目區(qū)一共1 782幅。每個(gè)單幅數(shù)據(jù)中有地表覆蓋類(lèi)和地理要素類(lèi)兩個(gè)數(shù)據(jù)集。地表覆蓋類(lèi)數(shù)據(jù)集里包括8個(gè)數(shù)據(jù)層(GRD_S、DGP_S、SFC_S、RES_S、AGR_S、WATER_S、ROA_S、AGR_L),地理要素類(lèi)包括3個(gè)數(shù)據(jù)層(RIV_L、HYD_S、ROA_L),包含線(xiàn)和面要素,S代表面,L代表線(xiàn)。每層數(shù)據(jù)屬性字段都有要素代碼、類(lèi)別、子類(lèi)別等,要素代碼是4位數(shù)字代碼,子類(lèi)別是要素代碼的文字描述,類(lèi)別包含不同的子類(lèi)別,有對(duì)應(yīng)的數(shù)據(jù)字典。內(nèi)業(yè)數(shù)據(jù)檢查完成后外業(yè)還需要進(jìn)行數(shù)字化平板野外核查和采集遙感樣本解譯,數(shù)據(jù)上交成果要求為一個(gè)整體的GDB文件和以行政區(qū)為界線(xiàn)的三個(gè)分GDB文件。
在數(shù)據(jù)采集過(guò)程中,居民地要求房屋單獨(dú)采集,采集后會(huì)與植被層產(chǎn)生重疊,用編輯器功能里的裁剪只能單個(gè)裁剪擦除,人工操作效率低下。批量面擦除調(diào)用擦除、刪除要素和追加三個(gè)模塊,思路為選擇居民地圖層進(jìn)行擦除植被圖層,然后刪除植被圖層要素,最后將擦除居民地后的植被圖層追加到植被圖層中。
在數(shù)據(jù)處理過(guò)程中,數(shù)據(jù)上交要求為一個(gè)整體的數(shù)據(jù)庫(kù)文件和三個(gè)以行政區(qū)為單位的數(shù)據(jù)庫(kù)文件,數(shù)據(jù)成果是單幅的,圖幅眾多,人工合并和裁切工作量極大。
數(shù)據(jù)整合調(diào)用迭代要素類(lèi)、追加和融合三個(gè)模塊,思路為先打開(kāi)一幅圖作為要追加的模板,然后建立一個(gè)子模型,利用迭代要素類(lèi)模塊選擇要合并的數(shù)據(jù),將該數(shù)據(jù)內(nèi)的11個(gè)圖層循環(huán)追加到模板中,把工作空間和目標(biāo)數(shù)據(jù)集作為模型參數(shù),最后建立模型把11個(gè)圖層作為目標(biāo)數(shù)據(jù)集加載到子程序中,把工作空間作為模型參數(shù),這樣11個(gè)圖層循環(huán)追加到模板數(shù)據(jù)當(dāng)中。
數(shù)據(jù)裁切調(diào)用迭代要素類(lèi)、創(chuàng)建文件地理數(shù)據(jù)庫(kù)、迭代要素選擇、裁剪模塊,由于一個(gè)模型不能有兩個(gè)迭代器存在,要建立兩個(gè)模型來(lái)實(shí)現(xiàn),思路為將要裁剪的數(shù)據(jù)庫(kù)文件利用迭代要素類(lèi)依次輸出11個(gè)要素類(lèi),然后通過(guò)裁剪模塊調(diào)用結(jié)合表作為裁剪對(duì)象依次裁剪,建立一個(gè)子模型,將輸入的裁剪數(shù)據(jù)庫(kù)、輸出工作空間、裁剪的結(jié)合表(面狀)作為模型參數(shù)。主模型首先創(chuàng)建文件地理數(shù)據(jù)庫(kù),利用結(jié)合表屬性字段里圖幅名稱(chēng)作為輸出名稱(chēng),輸出位置作為模型參數(shù),同時(shí)將裁剪區(qū)域的結(jié)合表進(jìn)行迭代要素選擇,選出結(jié)合表屬性中的圖幅名稱(chēng)字段進(jìn)行循環(huán)迭代,最后將需要裁剪的數(shù)據(jù)庫(kù)、創(chuàng)建的文件地理數(shù)據(jù)庫(kù)和結(jié)合表圖幅名稱(chēng)字段輸入到子模型參數(shù)中實(shí)現(xiàn)批量裁剪數(shù)據(jù)的功能。
數(shù)據(jù)一致性檢查是檢查驗(yàn)證各圖層數(shù)據(jù)屬性要素代碼、類(lèi)別、子類(lèi)別是否相互匹配,是否有空值。主要調(diào)用選擇數(shù)據(jù)、篩選、追加功能。思路為通過(guò)選擇數(shù)據(jù)將數(shù)據(jù)庫(kù)11個(gè)圖層選擇出來(lái),然后通過(guò)篩選功能,表達(dá)式按數(shù)據(jù)字典編寫(xiě)PYTHON腳本規(guī)則,選出不符合規(guī)則的數(shù)據(jù),然后追加到檢查錯(cuò)誤記錄數(shù)據(jù)庫(kù)中。
外業(yè)調(diào)查系統(tǒng)采用地理國(guó)情普查處理系統(tǒng),支持的數(shù)據(jù)格式為MDB格式,而本項(xiàng)目數(shù)據(jù)成果采用文件地理數(shù)據(jù)庫(kù)(GDB文件),并且圖層設(shè)置和要素屬性結(jié)構(gòu)上都不一致。利用選擇數(shù)據(jù)、追加、計(jì)算字段模塊解決上述問(wèn)題,編程思路為首先建立一個(gè)地理國(guó)情普查處理系統(tǒng)所識(shí)別的模板(MDB文件),然后將GDB文件通過(guò)選擇數(shù)據(jù)將地表覆蓋類(lèi)的7個(gè)面圖層追加到模板LCA圖層,將AGR_L追加到模板LCTL圖層,將ROA_L追加到模板LRDL圖層,將RIV_L追加到模板HYDL圖層,將HYD_S追加到模板HYDA圖層,然后利用計(jì)算字段功能將要素代碼(GeoCode)賦值到地理識(shí)別碼(CC)中,最后將內(nèi)業(yè)標(biāo)注需要外業(yè)核查的追加到外業(yè)核查圖層。
模型迭代器可以在不同的設(shè)置和數(shù)據(jù)循環(huán)執(zhí)行同一操作過(guò)程,利用靈活,既可以迭代要素也可以迭代要素屬性。但同一個(gè)模型中只能有一種迭代器,如果有多次迭代可以將一個(gè)存在迭代器的模型加載到另一個(gè)模型再次進(jìn)行迭代。
數(shù)據(jù)的裁剪就是通過(guò)對(duì)結(jié)合表要素屬性迭代要素選擇和數(shù)據(jù)庫(kù)中的要素類(lèi)迭代完成的批量操作[4],見(jiàn)圖1。
在迭代器中,模型參數(shù)包括通配符和要素類(lèi)型,一般情況下可以默認(rèn)為空,但在復(fù)雜處理過(guò)程中,通配符參數(shù)就會(huì)很有用處。例如在本項(xiàng)目中的數(shù)據(jù)整合模型的通配符就選擇了目標(biāo)數(shù)據(jù)集,限定了追加數(shù)據(jù)的圖層,達(dá)到了數(shù)據(jù)整合的目的[5],見(jiàn)圖2。
圖1 數(shù)據(jù)裁剪模型與子模型圖Fig.1 Data clipping model and sub model diagram
圖2 數(shù)據(jù)整合子模型圖Fig.2 Data integration sub model diagram
前提條件可用于顯式控制模型中的運(yùn)算順序。例如,使第一個(gè)過(guò)程的輸出成為第二個(gè)過(guò)程的前提條件,可以讓一個(gè)過(guò)程在另一個(gè)過(guò)程后運(yùn)行。任何變量都可用作工具執(zhí)行的前提條件,并且任何工具都可以有多個(gè)前提條件。
在批量擦除面模型中(圖3),先要運(yùn)行擦除工具輸出要素后才能執(zhí)行刪除要素工具,否則程序會(huì)出現(xiàn)錯(cuò)誤,所以在輸出要素類(lèi)后是刪除要素的前提條件,用虛線(xiàn)表示。
圖3 批量擦除面模型圖Fig.3 Batch erase surface model diagram
本項(xiàng)目主要建立了7個(gè)模型工具,其中有2個(gè)是子模型。即批量面擦除、批量數(shù)據(jù)整合和裁切、數(shù)據(jù)屬性一致性檢查、數(shù)據(jù)格式轉(zhuǎn)換模型工具。上述模型工具保存到工具箱里,可以獨(dú)立運(yùn)行或者鑲嵌在其他程序中(圖4),方便快捷使用。人工處理會(huì)產(chǎn)生人為失誤錯(cuò)誤,效率低,模型工具在效率和質(zhì)量上都起到了關(guān)鍵作用。具體對(duì)比見(jiàn)表1。
圖4 程序主頁(yè)面Fig.4 Program main page
表1 一幅圖人工處理與程序處理時(shí)間對(duì)比表
Table 1 Comparison between manual processing time and program processing time of a map
程序名稱(chēng)人工處理程序處理面擦除4 min5 s數(shù)據(jù)整合和裁切25 min5 min數(shù)據(jù)一致性檢查10 min2 min數(shù)據(jù)格式轉(zhuǎn)換15 min3 min
由此計(jì)算,項(xiàng)目總圖為1 782幅,利用模型工具可以使項(xiàng)目工期至少縮短了55天。
利用模型構(gòu)建器可以更快捷、高效、方便的處理專(zhuān)題地理信息數(shù)據(jù),操作人員只需要簡(jiǎn)單的編程基礎(chǔ)就可以實(shí)現(xiàn)軟件的二次開(kāi)發(fā),大大提高了測(cè)繪生產(chǎn)效率,在實(shí)際工作中取得了良好的效果,為測(cè)繪一線(xiàn)沒(méi)有時(shí)間學(xué)習(xí)編程人員提供了處理數(shù)據(jù)的解決方案。