陳永劍
(玉環(huán)市國土資源局,玉環(huán) 317600)
土地變更調(diào)查是指縣級國土資源管理部門,根據(jù)上級下發(fā)的土地利用現(xiàn)狀數(shù)據(jù)庫和遙感影像數(shù)據(jù),對土地利用現(xiàn)狀、土地權(quán)屬及行政區(qū)劃變化進(jìn)行外業(yè)實(shí)地調(diào)查,獲取變化地類圖斑、土地權(quán)屬(宗地)、行政區(qū)劃數(shù)據(jù),從而生成增量數(shù)據(jù)包以及統(tǒng)計(jì)報(bào)表,實(shí)時(shí)對土地利用數(shù)據(jù)庫更新和上報(bào)的過程。
ArcGIS for Desktop是對地理信息進(jìn)行創(chuàng)建、編輯以及分析的GIS軟件,提供了一系列的工具用于數(shù)據(jù)采集和管理、可視化、空間建模和分析、地圖制圖。ArcGIS for Desktop包含了一套帶有用戶界面的Windows應(yīng)用程序,主要包括:ArcMap是主要的應(yīng)用程序,具有基于地圖的所有功能,包括地圖制圖、數(shù)據(jù)分析和編輯等;ArcCatalog是地理數(shù)據(jù)的資源管理器,幫助用戶組織和管理所有的GIS信息,比如地圖、數(shù)據(jù)集、模型、元數(shù)據(jù)、服務(wù)等;ArcToolbox是進(jìn)行地理處理的應(yīng)用環(huán)境,提供了豐富地理信息處理工具。
土地變更調(diào)查下發(fā)的監(jiān)測圖斑現(xiàn)狀地類(前一年度調(diào)查成果地類)的面積,是變更調(diào)查過程中重要的數(shù)據(jù)基礎(chǔ),如監(jiān)測圖斑所占水田、旱地等地類的面積,主要通過以下步驟實(shí)現(xiàn):
(1)使用ArcToolbox中的Analysis Tools(分析工具)下的Intersect(相交)工具,將監(jiān)測圖斑(JCTB)圖層和地類圖斑(DLTB)圖層的交集得到的JCTBIntersect圖層,該圖層清晰顯示各監(jiān)測圖斑不同土地利用現(xiàn)狀分類分布情況;
(2)打開 JCTBIntersect圖層屬性表(Open Attribute Table),添加字段(列)(Add Field),設(shè)置字段名稱(如MJ)和類型(設(shè)置為Double型),然后選中新添加的列,右擊選中Calculate Geometry (計(jì)算幾何體),在彈出的對話框中屬性(Property)選擇Area,單位(Units)選中Square Meters(平方米),計(jì)算出各面要素圖形面積就是對應(yīng)的地類面積。
工作中需要要素圖形面積轉(zhuǎn)換成畝,可以添加新的類型為Double的列(如MJ(mu)),右擊MJ(mu)列 Calculate Field,輸入 [MJ]*0.0015,確定即得到轉(zhuǎn)換成畝的結(jié)果;監(jiān)測圖斑所占農(nóng)用地(其中耕地)、建設(shè)用地和未利用地面積可以通過地類對照表計(jì)算得到。
圖形的分割、合并主要用到ArcMap的Editor工具條中的Cut Polygon Features工具和Merge命令。
下發(fā)的監(jiān)測圖斑中存在合法用地部分、違法用地部分以及偽變化等情況,需要將單個(gè)圖斑依據(jù)審批范圍線(如農(nóng)轉(zhuǎn)用報(bào)批范圍線)、外業(yè)調(diào)查和實(shí)地勘測進(jìn)行分割。
分割監(jiān)測圖斑和地塊(多邊形要素),使用Cut Polygon Features工具,然后在多邊形上畫線草圖。分割操作后得到一個(gè)或多個(gè)多邊形,并賦給新多邊形以原要素默認(rèn)屬性值。當(dāng)分割多邊形時(shí),要確保你的草圖(sketch)完全穿過選定的多邊形。打開edge snapping有助于確保切割操作成功完成。
監(jiān)測圖斑或者地塊圖形空間分析后,得到多種地類或權(quán)屬等其他屬性的分散多邊形要素,不便于統(tǒng)計(jì)匯總和成圖,需要使用Merge命令相同屬性分散多邊形的合并,并可以將分散多邊形中某一多邊形屬性賦值給合并后的多邊形要素。
Merge命令將同一圖層(Layer)的選定要素(可以是多邊形或線)組合成一個(gè)要素,在合并時(shí),單擊 Merge 對話框中的某個(gè)值(對應(yīng)某個(gè)要素)時(shí),該功能將在地圖上閃爍,將選擇保留該要素屬性值,如將監(jiān)測圖斑中同為公路用地且相鄰的要素合并成一個(gè)要素。當(dāng)多個(gè)要素不相鄰,將創(chuàng)建由多個(gè)要素組成的新要素,例如,可以將多個(gè)島嶼(多邊形要素)合并生成一個(gè)鄉(xiāng)行政區(qū)域要素。
土地變更調(diào)查下發(fā)的監(jiān)測圖斑,需要制作土地利用現(xiàn)狀圖、土地利用規(guī)劃圖和遙感影像圖等圖件。首先要做好數(shù)據(jù)編輯處理工作:在ArcMap數(shù)據(jù)視圖(Data View)下,添加制圖的圖層監(jiān)測圖斑層、遙感影像、土地利用現(xiàn)狀層和土地利用規(guī)劃層等,對監(jiān)測圖斑分割和合并等操作,重新計(jì)算分割和合并面積,并將監(jiān)測圖斑編號(JCBH)或者其他字段標(biāo)注(Labels)在地圖上;切換到ArcMap制圖布局視圖(Layout View),通過添加地圖標(biāo)題、指北針和圖斑面積等文本標(biāo)注元素,并將這些元素(Element)移動(dòng)到合適的位置,進(jìn)行手工制圖;或者按照3.2 編寫VBA宏進(jìn)行地圖制圖。
ArcMap是ArcGIS Desktop軟件組成之一,它內(nèi)置了一種集成編程環(huán)境―VBA(Visaul Basic for Apllications)。通過VBA編程,用戶不但可以擴(kuò)展ArcMap的菜單、工具條等,而且可以完成大多數(shù)用戶的特定需求。
ArcMap中VBA編程的方法有兩種,一種是寫VBA宏,另一種是創(chuàng)建UIControl并在其事件中寫入實(shí)現(xiàn)用戶需求的代碼。本文主要介紹寫VBA宏的方法:在ArcMap界面中,單擊菜單欄中Tools命令,選擇Macros的Visual Basic Editor項(xiàng),直接啟動(dòng)ArcMap的VBA編輯器;或者選擇Macros的Macros項(xiàng),進(jìn)入Macro對話框,在 Macro Name 文本框中輸入要?jiǎng)?chuàng)建的宏的名稱,并點(diǎn)Create按鈕,啟動(dòng)VBA編輯器。
打開VBA編輯器,編寫Sub自定義過程、Function自定義函數(shù)等,主要步驟如下:
(1)獲取圖層要素類中每個(gè)要素。創(chuàng)建IQueryFilter對象,設(shè)置IQueryFilter.WhereClause屬性為屬性查詢條件(如設(shè)置FID小于200,F(xiàn)ID為圖層中從0開始的每個(gè)要素的序號,F(xiàn)ID<200),使用IFeatureClass.Search方法進(jìn)行查詢,返回IFeatureCursor接口對象,使用IFeatureCursor.NextFeature方法獲得 IFeature對象(pFeature),通過Do While Not pFeature Is Nothing Loop循環(huán),遍歷監(jiān)測圖斑要素類中每個(gè)要素。
(2)確定每個(gè)要素的制圖范圍。創(chuàng)建IEnvelope對象(指要素的外接矩形,也稱包絡(luò)線,是一個(gè)矩形區(qū)域,用來表示要素圖形的位置和形狀,是每個(gè)幾何形體的最小外接矩形,如新創(chuàng)建pEnvelope),在Do Loop循環(huán)中,獲取每個(gè)要素的 Envelope(Set pEnvelope=pFeature.Extent),使用 IEnvelope Expand方法(pEnvelope.Expand x,y,True,x,y分別是x,y方向上放大縮小比例,小于1為放大,大于1為縮小,一般x,y設(shè)置為同一值)放大縮小出圖顯示范圍,將放大縮小得到pEnvelope 賦 值 給 IActiveView.Extent(pActiveView.Extent),實(shí)現(xiàn)地圖的刷新,確定需要出圖范圍。
(3)將ArcMap中顯示的制圖范圍轉(zhuǎn)化成柵格圖片文件,通過IMap實(shí)例獲得IActiveView接口對象,定義IExporter接口變量,使用JpegExporter、TiffExporter實(shí)現(xiàn)該接口并對其中的屬性進(jìn)行賦值,使用IActiveView.Output方法將ArcMap中顯示的圖形(pActiveView.Extent)導(dǎo)出。Set pExporter=New JpegExporter,設(shè)置制圖出圖文件路徑及文件名稱(Set pExporter.ExportFileName=ExportName,文件名稱需加后綴如 .jpg 等,且每個(gè)監(jiān)測圖斑圖片文件同文件路徑不同名)。
在VBA編碼通過IFormattedTextSymbol中的創(chuàng)建各種特殊的TextSymbol,如設(shè)置對其方式(HorizontalAlignment)、字體(Font),并賦值給添加的 ITextElement對象(pTextElement),用來標(biāo)注地圖名稱、圖斑面積(通過讀取pFeature面積字段值),并設(shè)置pTextElement制圖版面上的位置;在上文的Do Loop循環(huán)結(jié)束前,并使用IGraphicsContainer的DeleteElement方法刪除IElement對象,以實(shí)現(xiàn)批量制圖的目的。
土地變更調(diào)查工作中,利用ArcGIS軟件圖形編輯和空間分析工具,對涉及到大量圖形數(shù)據(jù)處理、分析,為數(shù)據(jù)成果和統(tǒng)計(jì)報(bào)表的上報(bào)提供重要的數(shù)據(jù)基礎(chǔ)。與手工制圖相比,ArcGIS VBA批量地圖制圖,主要有以下優(yōu)點(diǎn):批量制圖速度快,節(jié)約了大量時(shí)間和精力,手工制圖一幅幅圖輸入處理費(fèi)時(shí)費(fèi)力;批量制圖整齊統(tǒng)一,手工制圖版面樣式存在不同;批量制圖圖示標(biāo)注正確,如果出現(xiàn)錯(cuò)誤,批量修改簡單快速,手工制圖文件名稱、圖斑面積等相關(guān)數(shù)據(jù)量較大難免存在輸入錯(cuò)誤;該VBA宏在變更調(diào)查等需要批量制圖提高了工作效率、制圖版面規(guī)整統(tǒng)一并且保證制圖成果的正確性。