陳宏宇,劉 立,任東宇,陳 波
(1.四川省第二測(cè)繪地理信息工程院,四川 成都 610000)
基于AO的土地利用變化信息檢測(cè)插件實(shí)現(xiàn)
陳宏宇1,劉 立1,任東宇1,陳 波1
(1.四川省第二測(cè)繪地理信息工程院,四川 成都 610000)
基于ArcGIS10.1平臺(tái)的 Arc Objects組件,開(kāi)發(fā)了一套可批量導(dǎo)入矢量土地利用斑塊數(shù)據(jù),并對(duì)指定類別的數(shù)據(jù)進(jìn)行分類查詢、統(tǒng)計(jì)分析、輸出矢量地類斑塊類型與面積等功能的本地GIS系統(tǒng),可利用開(kāi)發(fā)的單機(jī)軟件快速獲取圖形與屬性信息,并能對(duì)不同類別土地利用信息進(jìn)行初步統(tǒng)計(jì)分析,快速獲取土地利用變化信息。
GIS;土地利用變化信息;AO組件開(kāi)發(fā)
土地利用變化信息檢測(cè)是地理國(guó)情監(jiān)測(cè)的重要工作之一。目前,土地利用變化研究主要集中在時(shí)空演變、驅(qū)動(dòng)力分析、生態(tài)環(huán)境影響以及趨勢(shì)預(yù)測(cè)[1-8],而遙感與GIS技術(shù)是重要的方法和技術(shù)手段。地理國(guó)情監(jiān)測(cè)的“高動(dòng)態(tài)性”客觀上要求土地利用變化信息的獲取必須具有時(shí)效性,做到隨時(shí)發(fā)現(xiàn)變化、獲取變化、提供使用[9]。通常情況下,特定土地利用類型的面積監(jiān)測(cè)主要采用專題圖制作及系統(tǒng)開(kāi)發(fā)進(jìn)行管理分析的方案,此方案只針對(duì)某一時(shí)期的土地信息統(tǒng)籌管理,主要是以專題項(xiàng)目研究為目的的制作開(kāi)發(fā),涉及快速批量化查詢統(tǒng)計(jì)處理以及靈活配置管理方面較少。在目前國(guó)情速查、地質(zhì)災(zāi)害損毀評(píng)估、應(yīng)急快速響應(yīng)需要更靈活的方案,快速獲取最新的統(tǒng)計(jì)信息。
本文基于ArcGIS 10.1平臺(tái)的Arc Objects(簡(jiǎn)稱AO)組件,開(kāi)發(fā)了集批量矢量數(shù)據(jù)導(dǎo)入、指定分類地塊信息查詢、統(tǒng)計(jì)顯示分析、輸出等功能的本地軟件,能夠快速地獲取、統(tǒng)計(jì)地塊面文件中不同類別地塊的面積更新信息,用戶可以靈活更替土地類別配置文件并進(jìn)行動(dòng)態(tài)查詢、統(tǒng)計(jì)分析,滿足快速監(jiān)測(cè)、獲取、統(tǒng)計(jì)、輸出查詢結(jié)果的需求,可作批處理,減少每次土地更新變化帶來(lái)的實(shí)際統(tǒng)計(jì)工作量,達(dá)到快速獲取、分析土地面積信息變化的目的。
1.1 輸入數(shù)據(jù)
系統(tǒng)數(shù)據(jù)要求為Shapefile、MDB、GDB格式的數(shù)據(jù)文件或數(shù)據(jù)庫(kù),土地類別矢量數(shù)據(jù)必須包含有NAME字段名、SHAPE Area面積字段。其中,NAME字段為每個(gè)地類斑塊的類別,是土地類別國(guó)家標(biāo)準(zhǔn)中二級(jí)類類別名稱,string格式,長(zhǎng)度一般不大于40個(gè)字符,這是為了建立索引的需求。多文件輸入表示此地區(qū)中包含多個(gè)縣、市,需要統(tǒng)計(jì)整個(gè)地區(qū)的土地利用信息,也可以單獨(dú)輸入單個(gè)縣、市的矢量土地利用面文件數(shù)據(jù),表示統(tǒng)計(jì)查詢分析單個(gè)地區(qū)的土地利用信息。系統(tǒng)將根據(jù)配置文件查找已有數(shù)據(jù)中對(duì)應(yīng)的二級(jí)類土地類型,最后歸類進(jìn)行一級(jí)類土地面積統(tǒng)計(jì)。
1.2 配置數(shù)據(jù)
系統(tǒng)采用靈活的配置文本,格式為Excel,其中Table表中包含指定的8個(gè)一級(jí)類土地類型名稱以及對(duì)應(yīng)的二級(jí)詳細(xì)土地類型名稱,耕地、園地、林地等一級(jí)類型名稱為一級(jí)節(jié)點(diǎn),一級(jí)類下包含二級(jí)土地類別名稱的二級(jí)節(jié)點(diǎn),如耕地中包括水田、水澆地、旱地,指定的8大類土地類型名稱及二級(jí)類名稱依次排序。配置的文件可以再進(jìn)行修改和添加土地類別信息,系統(tǒng)主要根據(jù)此配置文件中指定土地類別名稱信息表查找計(jì)算對(duì)應(yīng)的面積信息。配置表邏輯結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)配置指定土地利用類型表
2.1 數(shù)據(jù)層使用描述
系統(tǒng)采用C/S架構(gòu),數(shù)據(jù)來(lái)源包括各類國(guó)情監(jiān)測(cè)數(shù)據(jù)、土地規(guī)劃詳細(xì)數(shù)據(jù)等,數(shù)據(jù)格式為Shapefile、MDB、GDB,方便用戶進(jìn)行查詢統(tǒng)計(jì)或分布式分機(jī)查詢。配置文件同樣由用戶設(shè)定,默認(rèn)為8類一級(jí)土地利用類型。
針對(duì)MDB數(shù)據(jù)庫(kù),本系統(tǒng)采用分段式查詢,也可單獨(dú)編寫查詢代碼,即將配置的土地信息節(jié)點(diǎn)文件讀出后按大節(jié)點(diǎn)依次賦值到數(shù)組中,再均分篩選條件的數(shù)組,對(duì)數(shù)據(jù)進(jìn)行分批次的查詢,最后再將查詢的結(jié)果匯總到屬性表。這是由于MDB數(shù)據(jù)庫(kù)對(duì)于大批量的查詢活動(dòng)有上限,查詢語(yǔ)句過(guò)長(zhǎng)會(huì)導(dǎo)致系統(tǒng)內(nèi)存異常處理,同時(shí)MDB數(shù)據(jù)庫(kù)負(fù)荷量有限,現(xiàn)在一般使用GDB數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存放和查詢。該數(shù)據(jù)庫(kù)支持長(zhǎng)字符串查詢,和shapefile文件集一致,直接將配置文件中土地類型字串讀出構(gòu)建ArcGIS下SQL查詢。系統(tǒng)查詢模塊邏輯結(jié)構(gòu)如圖2所示。
圖2 批量數(shù)據(jù)查詢模塊邏輯結(jié)構(gòu)
2.2 系統(tǒng)架構(gòu)描述
系統(tǒng)采用ArcGIS 10.1平臺(tái)的ArcObjects組件進(jìn)行開(kāi)發(fā)。ESRI 公司的ArcGIS 軟件是一個(gè)功能非常強(qiáng)大的主流地理信息系統(tǒng)平臺(tái),它具有功能全面、可伸縮性強(qiáng)、部署范圍廣等優(yōu)勢(shì)。該軟件是基于ArcGIS 的組件庫(kù)(ArcObjects)開(kāi)發(fā)實(shí)現(xiàn)的。ArcObjects 組件庫(kù)包括了ArcGIS 的全部功能,用戶可調(diào)用這些構(gòu)件來(lái)建立自己的應(yīng)用系統(tǒng),基于ArcObjects 組件庫(kù)開(kāi)發(fā)有VBA 定制、開(kāi)發(fā)獨(dú)立的EXE應(yīng)用程序和創(chuàng)建客戶化組件3種模式[10-12]。
由于目前ArcGIS10.1平臺(tái)下VBA以及Pathon腳本方便批量處理數(shù)據(jù),但安全性與對(duì)應(yīng)業(yè)務(wù)的靈活需求不夠,而創(chuàng)建客戶化組件有靈活安裝使用、針對(duì)性強(qiáng)的特點(diǎn)。針對(duì)本次系統(tǒng)開(kāi)發(fā),需要更豐富的多個(gè)功能集成,所以插件開(kāi)發(fā)對(duì)本次開(kāi)發(fā)需要的功能性、便攜使用性稍顯不足。本研究采用AO組件與.net結(jié)合開(kāi)發(fā)EXE應(yīng)用程序,方便基于AreGIS平臺(tái)的用戶安裝使用。
IDE平臺(tái)在Microsoft Visio Stadio 2010下Winform開(kāi)發(fā),開(kāi)發(fā)語(yǔ)言為C#,3.5 Framework.net版本,統(tǒng)計(jì)顯示的柱狀圖、餅狀圖使用IDE平臺(tái)自帶的MSchart控件生成,提高了移植后的穩(wěn)定性。開(kāi)發(fā)的功能架構(gòu)如圖3所示。
圖3 系統(tǒng)主要功能架構(gòu)
系統(tǒng)根據(jù)搜索查詢、統(tǒng)計(jì)分析的需求,主要圍繞查詢結(jié)果表為核心模塊進(jìn)行開(kāi)發(fā),系統(tǒng)的內(nèi)部主要邏輯結(jié)構(gòu)如圖4所示,
圖4 系統(tǒng)邏輯架構(gòu)
查詢模塊類中包括各類數(shù)據(jù)的查詢函數(shù),利用土地類型配置類中的讀取函數(shù)將土地類型節(jié)點(diǎn)讀出存入數(shù)組使用。按照數(shù)據(jù)類型的不同,構(gòu)建AO組件下要素Query屬性查詢,如果是MDB類型數(shù)據(jù),采用數(shù)組分段構(gòu)建 SQL語(yǔ)句。查詢的結(jié)果由主框架數(shù)據(jù)表獲取,這里的查詢結(jié)果是空間點(diǎn)集,在查詢類中定義了委托調(diào)用,主框架實(shí)現(xiàn)顯示函數(shù)。統(tǒng)計(jì)函數(shù)類同樣要依賴配置文件,根據(jù)配置文件,大節(jié)點(diǎn)序號(hào)對(duì)數(shù)據(jù)表進(jìn)行統(tǒng)計(jì)計(jì)算。
2.3 系統(tǒng)功能描述
系統(tǒng)可導(dǎo)入多種格式的土地利用數(shù)據(jù),并按照配置文件指定的二級(jí)類進(jìn)行土地利用面積信息查找,用戶也可以自定義二級(jí)類土地類型查找。按照查找出的二級(jí)類輸出對(duì)應(yīng)的一級(jí)類土地面積信息,查詢結(jié)果可以進(jìn)行調(diào)整或者輸出為Excel、Word格式,查詢表結(jié)果同時(shí)滿足和圖形之間的聯(lián)動(dòng)。其他功能還包括背景要素的導(dǎo)入,背景要素可以是POI(point of interest)等其他圖層,可加載到目錄及圖層最上層進(jìn)行對(duì)比。系統(tǒng)還包括常用的縮放、比例尺、書簽等基礎(chǔ)功能,輔助工具還包括高亮點(diǎn)清除功能。
系統(tǒng)實(shí)現(xiàn)如圖5所示,本文使用了兩個(gè)地區(qū)的數(shù)據(jù)進(jìn)行了實(shí)驗(yàn),系統(tǒng)能同時(shí)滿足單地區(qū)和多地區(qū)批量導(dǎo)入查詢。
圖5 系統(tǒng)實(shí)現(xiàn)批量輸入查詢示意圖
系統(tǒng)統(tǒng)計(jì)模塊中,按照查詢得到的指定二級(jí)土地類別屬性表,計(jì)算對(duì)應(yīng)一級(jí)土地大類下面積總數(shù),使用柱狀圖、餅狀圖進(jìn)行一級(jí)土地大類面積信息顯示,單位為m2。統(tǒng)計(jì)功能核心代碼如下:
//定義一維數(shù)組、表單、計(jì)算結(jié)果數(shù)組,獲取配置文件中一級(jí)類索引號(hào)以及對(duì)應(yīng)土地類別表單
int tdindex[] = 配置文件類.gettbindex();
datatable tdtb = 配置文件類.gettb();
double getyjtdarea[] = new double[對(duì)應(yīng)一級(jí)類總數(shù)];
//循環(huán)遍歷查詢結(jié)果表,判斷數(shù)據(jù)記錄是那種一級(jí)類下數(shù)據(jù),如果是,則進(jìn)行面積字段下數(shù)據(jù)加法運(yùn)算
for(int i= 0;i++;i<主程序查詢結(jié)果表.length)
{
for(int m= 0;m++;m<tdtb.length)
{
if(主程序查詢結(jié)果表[記錄行i][name].contain(tdtb[m]. toString()))
{
//判斷此二級(jí)類屬于哪個(gè)一級(jí)類
int getwzindx = 0;
for(int n= 0;n++;n<tdindex.length)
{
if(m>tdindex[n])
getwzindx = tdindex[n];
}
getyjtdarea[對(duì)應(yīng)一級(jí)類排號(hào)] =
getyjtdarea[對(duì)應(yīng)一級(jí)類排號(hào)] + 主程序查詢結(jié)果表[記錄行i][Area];
}
}
}
//最后返回一級(jí)類對(duì)應(yīng)面積總和數(shù)組getyjtdarea,再進(jìn)行相關(guān)計(jì)算分析。
土地分類統(tǒng)計(jì)數(shù)據(jù)顯示還包括所在地區(qū)的土地利用最大值、最小值、標(biāo)準(zhǔn)差,標(biāo)準(zhǔn)差的計(jì)算公式為:
式中,σ表示所在區(qū)域一級(jí)土地利用類型的面積標(biāo)準(zhǔn)差;xi表示每個(gè)一級(jí)土地利用類型對(duì)應(yīng)的面積數(shù),u為一級(jí)土地利用類型面積平均值。統(tǒng)計(jì)模塊中的最大值、最小值表示所在地區(qū)土地利用類別一級(jí)類中對(duì)應(yīng)的最大面積和最小面積,標(biāo)準(zhǔn)差大小表示地區(qū)各一級(jí)類型占地面積的差異性,標(biāo)準(zhǔn)差越大,表示檢索地區(qū)土地類型差異性大、土地類型比較單一;標(biāo)準(zhǔn)差小,表示輸入地區(qū)土地類別多樣。系統(tǒng)統(tǒng)計(jì)功能模塊實(shí)現(xiàn)如圖6所示(圖5、圖6數(shù)據(jù)為測(cè)試數(shù)據(jù),圖片處理為實(shí)現(xiàn)效果圖)。
圖6 系統(tǒng)統(tǒng)計(jì)模塊示意圖
系統(tǒng)基于ArcGIS10.1 AO組件開(kāi)發(fā),針對(duì)特定土地類型的搜索可進(jìn)行批量數(shù)據(jù)導(dǎo)入查詢、特定范圍內(nèi)土地類型面積統(tǒng)計(jì)、文檔輸出、屬性表輔助修改等功能,可實(shí)現(xiàn)多類型、大范圍數(shù)據(jù)搜索,主要應(yīng)用于快速獲取多種格式數(shù)據(jù)下特定范圍內(nèi)一級(jí)類土地面積信息。采用C/S架構(gòu)進(jìn)行維護(hù)升級(jí),保持了本地快速處理的需求,類似于批處理插件。進(jìn)一步快速獲取在遙感影像或者其他航測(cè)、航拍制圖上提取的土地類型信息,從而快速地查詢統(tǒng)計(jì)分析,有助于了解土地現(xiàn)勢(shì)性變化。
[1] 張樹(shù)文.東北地區(qū)土地利用/覆被時(shí)空特征分析[M].北京:科學(xué)出版社,2006
[2] 劉銳,陳毓齡.RS和GIS技術(shù)在土地利用動(dòng)態(tài)監(jiān)測(cè)中的應(yīng)用[J].測(cè)繪通報(bào),2011(5):76-79
[3] 陳峰云.湖北省土地利用/覆被變化及其對(duì)自然環(huán)境要素的影響[D].武漢:華中農(nóng)業(yè)大學(xué),2009
[4] 王瑋.基于RS與GIS鄖縣土地利用變化監(jiān)測(cè)及驅(qū)動(dòng)力分析[D].武漢:湖北大學(xué),2011
[5] 楊元建,石濤,張宏群,等.基于遙感的合肥市土地利用動(dòng)態(tài)變化及其成因分析[J].中國(guó)農(nóng)學(xué)通報(bào),2011,27(8):454-459
[6] 彭文甫,樊淑云,周介銘,等.基于遙感與GIS的土地利用變化對(duì)生態(tài)服務(wù)價(jià)值的影響[J].中國(guó)農(nóng)學(xué)通報(bào), 2014,30(5):195-202
[7] 李逸川.基于GIS和PLS-PP模型的土地利用變化和趨勢(shì)預(yù)測(cè)研究[D].北京:中國(guó)地質(zhì)大學(xué),2010
[8] 唐菊莉.基于RS和GIS的武漢市土地利用分類及其時(shí)空變化分析[D].北京:中國(guó)地質(zhì)大學(xué),2013
[9] 阮于洲.對(duì)地理國(guó)情監(jiān)測(cè)工作的若干思考[J].測(cè)繪通報(bào),2014(3):131-134
[10] 孟浩東,賈有良.利用ArcSDE 和ArcObjects管理宗地歷史數(shù)據(jù)[J].測(cè)繪通報(bào),2002(2):57-59
[11] 徐忠國(guó).基于ArcObjects 和COM-Add-Ins 鄉(xiāng)級(jí)土地利用總體規(guī)劃輔助編制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)土地科學(xué),2014,28(1):46-51
[12] 白亞茹,陸鑫.基于ArcObjects組件的GIS應(yīng)用軟件開(kāi)發(fā)[J].計(jì)算機(jī)工程,2007,35(4):66-68
P208
B
1672-4623(2016)12-0075-03
10.3969/j.issn.1672-4623.2016.12.024
陳宏宇,主要從事數(shù)字城市建設(shè)方面的研究。
2015-09-17。
項(xiàng)目來(lái)源:數(shù)字制圖與國(guó)土信息應(yīng)用工程國(guó)家測(cè)繪地理信息局重點(diǎn)實(shí)驗(yàn)室開(kāi)放基金資助項(xiàng)目(DM2014SC08)。