鄭逢令,儲少林,任玉平,賽里克·都曼
(新疆畜牧科學(xué)院草業(yè)研究所,新疆 烏魯木齊 830000)
開源軟件具有代碼公開、在遵守一定協(xié)議的前提下可自由使用并根據(jù)需要更改源代碼等優(yōu)點,對比動輒需支付幾萬到幾十萬元人民幣費用的純商業(yè)軟件,使用開源空間信息軟件的成本非常低[1-2]。在開源空間信息技術(shù)領(lǐng)域,以地理資源分析支持系統(tǒng)(geohraphic resources analysis support system,GRASS)GIS為核心軟件,C語言系列為基礎(chǔ)開發(fā)語言的軟件,因其技術(shù)成熟、系列完整、成本低廉的優(yōu)點,在眾多領(lǐng)域得到了廣泛應(yīng)用[3-5]。但由于相關(guān)中文參考資料的稀缺,加之中國有特定的地理數(shù)據(jù)和投影坐標(biāo)系,所以在中國草業(yè)空間信息領(lǐng)域此方面的研究較缺乏。草業(yè)領(lǐng)域中的許多工作如草地資源調(diào)查、退牧還草工程、草地生態(tài)退化與修復(fù),都常會面對處理數(shù)量龐大、類型多樣的柵格數(shù)據(jù),最常見的如地形圖、遙感圖像、作為數(shù)字化底圖的各種圖片形式的草地類型圖、草地利用現(xiàn)狀圖等,而目前完成這些工作使用的軟件都是成本較高的商業(yè)軟件,如MAPINFO、ARCGIS、ERDAS等[6-8]。目前國內(nèi)對這方面的關(guān)注程度雖然越來越高,但已有的研究多集中在比較窄的領(lǐng)域特別是web GIS方面,或側(cè)重各種開源空間信息技術(shù)一般性的介紹[3,9-10],而對利用開源技術(shù)解決實際生產(chǎn)或科研上遇到的問題,鮮有涉及。怎樣利用開源空間技術(shù)處理草業(yè)相關(guān)的空間數(shù)據(jù),用以代替昂貴的商業(yè)軟件,是值得去深入挖掘的[4]。為此,以功能齊全的開源空間信息軟件GRASS GIS軟件,利用開源技術(shù)對草地遙感和草業(yè)空間信息數(shù)據(jù)中常用的柵格數(shù)據(jù)進(jìn)行處理,以此作為開源空間信息技術(shù)應(yīng)用于草業(yè)的初步研究探索。
GRASS(geographic resources analysis support system)GIS即地理資源分析支持系統(tǒng),是基于通用公共許可協(xié)議(GNU general public license GNU GPL)的一個開源軟件,具備數(shù)據(jù)管理、圖像處理、數(shù)字制圖、空間建模和數(shù)據(jù)可視化等功能。它是使用標(biāo)準(zhǔn)C語言編寫的一套基于文件結(jié)構(gòu)的平臺,對用戶端采用功能分層模式,并且支持柵格數(shù)據(jù)文件和矢量數(shù)據(jù)文件,GRASS是一個開放的地理信息系統(tǒng)資源,GRASS軟件作為一款功能強大的開源地理信息軟件,同時具有處理遙感數(shù)據(jù)的功能。它主要功能包括地理數(shù)據(jù)管理、圖像處理、圖表生成、空間建模和許多數(shù)據(jù)可視化顯示等[11-13]。
在使用GRASS GIS(或簡稱GRASS)軟件之前,必須要設(shè)置數(shù)據(jù)區(qū)域,數(shù)據(jù)集合,因為柵格數(shù)據(jù)在 GRASS中是以特有的格式存在的。GRASS中使用的GUI界面主要是tk/tcl和wx-python界面。
GRASS采用目錄形式存儲數(shù)據(jù),最高級的目錄稱為GRASS Database,在GRASS Database中,GRASS會為每一個項目區(qū)域自動創(chuàng)建一個子目錄樹(區(qū)域-Location)。所有項目數(shù)據(jù)都存儲在Location子目錄下。Location又可以被細(xì)分為地圖子目錄,稱為地圖集(mapsets)。GRASS就是以這樣的結(jié)構(gòu)組織存取數(shù)據(jù)的。
要設(shè)置數(shù)據(jù)的區(qū)域,必須要正確設(shè)置軟件的投影。在GRASS中,通常有3種方式來設(shè)置投影和區(qū)域[12-13]。
2.1 導(dǎo)入已含有正確投影信息的數(shù)據(jù)創(chuàng)建區(qū)域有些情況下,數(shù)據(jù)已經(jīng)包含了所有必需的投影信息,使用導(dǎo)入模塊將投影信息與數(shù)據(jù)一并導(dǎo)入。因此,可以使用數(shù)據(jù)中的投影信息生成新的區(qū)域。
2.2 輸入EPSG代碼創(chuàng)建區(qū)域通過輸入適當(dāng)?shù)腅PSG代碼,自動指定投影(請參閱http://www.epsg.org/)。這會為區(qū)域指定標(biāo)準(zhǔn)投影和國家格網(wǎng)系統(tǒng)的參數(shù)。可以在進(jìn)入EPSG codes界面后瀏覽與各個投影系統(tǒng)相對應(yīng)的EPSG代碼或元數(shù)據(jù)中找到。
如果項目區(qū)域有EPSG代碼,那么它可以用來自動創(chuàng)建新區(qū)域。點擊按鈕“Create Location from EPSG”并輸入適當(dāng)?shù)拇a值。點擊按鈕“EPSG Codes”會列出已有的代碼值,如新疆地區(qū)常用的UTM投影坐標(biāo)系45N帶的EPSG Code為32645(+proj=utm+zone=45+ellps=WGS84+datum=WGS84+units=m+no_defs)。
2.3 文本模式下創(chuàng)建自定義區(qū)域因為中國大比例尺的地形圖基本采用北京54坐標(biāo)系和西安80坐標(biāo)系,在特定的坐標(biāo)系背景下,使用前2種方式很難創(chuàng)建正確和詳細(xì)的區(qū)域參數(shù),因此以文本模式創(chuàng)建自定義區(qū)域這一方式顯得尤為重要。以在退牧還草實際工作中用到的和田地區(qū)北京54坐標(biāo)系下的地形圖投影設(shè)置為例,說明在GRASS軟件環(huán)境下高斯投影坐標(biāo)系的設(shè)置。
為了定義區(qū)域的投影,點擊按鈕“Create New Location”。GRASS自動切換到文本模式下(圖1),此處GRASS Database為grassdata,設(shè)置Location為gauss14,mapset取默認(rèn)的PERMANENT。在此可以輸入創(chuàng)建新區(qū)域的數(shù)據(jù)。
根據(jù)提示按ESC+ENTER鍵進(jìn)入下一步驟。選擇區(qū)域的坐標(biāo)系統(tǒng),這里選擇D(圖2)。
圖1 文本模式下自定義區(qū)域參數(shù)
圖2 文本模式下區(qū)域坐標(biāo)系統(tǒng)的選擇
接下來,根據(jù)提示選擇并設(shè)置與北京54坐標(biāo)系對應(yīng)的tmerc(橫軸莫卡托)投影(圖 3A、B),s-42(pulovo 1942)橢球體(圖3C),并設(shè)置本次使用地形圖gauss14帶以下關(guān)鍵參數(shù)(圖3D):
最后設(shè)置區(qū)域的四至界限和像元大小,就完成了一副Gauss投影的北京54坐標(biāo)系14帶(6度帶)地形圖的區(qū)域設(shè)置(圖4)。
柵格數(shù)據(jù)在空間信息軟件中常用而必要的操作主要有:數(shù)據(jù)輸入、柵格數(shù)據(jù)的配準(zhǔn)、波段合成、圖像鑲嵌和剪切、投影變換、數(shù)據(jù)的輸出。至于其他相關(guān)操作,請參閱相關(guān)文獻(xiàn)或網(wǎng)站[11-13]。
3.1 柵格數(shù)據(jù)的輸入通過File菜單下的Import raster map,可以很容易地將常用柵格格式輸入到GRASS中,表1為GRASS中可導(dǎo)入的柵格格式與相應(yīng)的模塊。
本研究中,使用r.in.gdal模塊將一副掃描地形圖 test.JPG輸入到 GRASS,打開 GRASS(tcltk或w xpython圖形界面),隨意進(jìn)入一個區(qū)域和圖集,進(jìn)入GRASS主界面,通過import raster map->import raster data using GDAL,然后在r.in.gdal圖形界面下,瀏覽文件夾,選擇彩色地形圖test.JPG,確定導(dǎo)入,在此界面下選擇輸出的柵格名和Location名為 test。重新打開GRASS,登錄界面中便會出現(xiàn)剛才創(chuàng)建的test區(qū)域(location),選擇permanent圖集進(jìn)入GRASS主界面。這時可以看到新出現(xiàn)的 test區(qū)域,在permanent地圖集中有紅綠藍(lán)3個單色波段,這是GRASS自動將原始圖像分成了這3個波段,3個波段為一組(GROUP),所有軟件功能作用到任一個單色波段,也同時視為作用到其他2個波段。需要時可使用r.composite模塊合成為RGB圖像。選擇一副test.blue波段在display窗口中打開,至此已經(jīng)成功輸入JPG格式的地形圖(圖5),其他格式也是如此操作,篇幅所限,不在此多做說明,感興趣的讀者可參閱相關(guān)資料。
3.2 柵格數(shù)據(jù)配準(zhǔn)將掃描輸入的地形圖柵格配準(zhǔn)處理成具有地理參考坐標(biāo)的圖像數(shù)據(jù),賦予投影等重要參數(shù),是進(jìn)行其他重要操作的先決條件。
要利用前面導(dǎo)入的test.JPG圖像,建立一個區(qū)域,介紹柵格圖像的配準(zhǔn)方法和步驟。
圖3 文本模式下北京54坐標(biāo)系統(tǒng)的設(shè)置
圖4 北京54坐標(biāo)系14帶(6度帶)地形圖的區(qū)域設(shè)置
表1 Grass中可導(dǎo)入的常用柵格數(shù)據(jù)及相應(yīng)模塊
圖5 JPG柵格圖像輸入
圖6 配準(zhǔn)前柵格圖像圖集、組和圖像的選擇
1)首先進(jìn)入先前所建的gauss14區(qū)域目錄,在文件下拉菜單中選擇georectify選項開始配準(zhǔn)工作。
2)選擇Location test,permanent test,在這里選擇group test,圖像選擇 test-blue,然后georectify,開始配準(zhǔn)(圖6)。
3)在跳出的界面下,選擇GCP取點,可利用放大、縮小、PAN等工具輔助選點,rectify method選擇1ST即可。點至少要取4個(圖7)。
4)在滿足RMS誤差的要求下(根據(jù)工作要求不同,誤差的要求也不同),點擊rectify maps,GRASS進(jìn)行配準(zhǔn)狀態(tài)并完成配準(zhǔn)。
圖7 GCP點的選擇
3.3 鑲嵌和裁剪在GRASS中做圖像鑲嵌可以通過r.mosaic這個模塊完成,一次最多可以完成4副相鄰柵格圖像的鑲嵌。對圖像任意區(qū)域和形狀的剪切要通過MASK這個功能完成。在地形圖的處理中,要去掉相鄰地形圖的邊框以外的部分,拼接邊框以內(nèi)的內(nèi)容,常用到裁剪操作。以下就使用配準(zhǔn)過的圖像重點說明使用MASK功能是如何完成這一操作的。
先在GRASS中打開已經(jīng)配準(zhǔn)好一副已經(jīng)配準(zhǔn)過的14帶的118號地形圖圖像。要形成用作MASK的圖像,一般要先沿著地形圖邊框成一個覆蓋邊框以內(nèi)的面(質(zhì)心+圖形邊界),這里將此矢量文件稱作maskvec,然后通過矢量轉(zhuǎn)化為柵格的功能(文件->轉(zhuǎn)換地圖類型->矢量轉(zhuǎn)柵格),將新建的 maskvec文件轉(zhuǎn)換成柵格文件maskg(圖8),接著在柵格菜單中選 mask這一項,用作mask的柵格圖像是maskg(圖9)。
這時在display窗口中看到的地形圖就是去掉邊框外內(nèi)容的圖像。這樣就可以做其他的操作如拼接等(圖10)。
3.4 柵格圖像投影變換在GRASS中,要進(jìn)行柵格數(shù)據(jù)的投影變換,先要設(shè)置好目標(biāo)投影,目標(biāo)投影可以是已存在的投影,如果沒有現(xiàn)成的,一定要設(shè)置對投影的參數(shù)和目標(biāo)投影的范圍,然后進(jìn)行投影變換。下面就常用的高斯投影下的北京54坐標(biāo)系和經(jīng)緯度坐標(biāo)系之間的轉(zhuǎn)換做一個說明。
1)進(jìn)入根據(jù)前面3.3章節(jié)所述方法設(shè)置好經(jīng)緯度區(qū)域(范圍要大于或等于與北京54坐標(biāo)系區(qū)域,地形圖可參考四至坐標(biāo)),這里設(shè)置的區(qū)域名稱是 testll。
2)選擇柵格->制作地圖->reproject(投影變換)(圖11)。
圖8 GRASS中矢量轉(zhuǎn)柵格的操作
圖9 GRASS中選擇用作 MASK的柵格
圖10 使用MASK功能后只保留邊框內(nèi)的內(nèi)容
圖11 在tk/tck界面下manager窗口中選擇重投影工具
3)在跳出的界面中,Location選擇gauss14,被投影的柵格圖像可選test組中的任意圖像,這里選擇 test.blue3108,投影后的名稱這里填testpro,其他選擇默認(rèn)值即可(圖12)。
4)運行后,成功重投影成對應(yīng)經(jīng)緯度的圖像,圖13中Map Display 1為投影后的圖像,在輸出窗口中可以看到其區(qū)域范圍和投影設(shè)置。
3.5 柵格圖像輸出經(jīng)過配準(zhǔn)校正、重投影、鑲嵌剪切等基本操作,得到合適的結(jié)果圖像后,如果要在其他軟件中繼續(xù)使用,一般需要將GRASS中特殊格式的數(shù)據(jù)轉(zhuǎn)化成通用柵格數(shù)據(jù),GRASS有專門的柵格輸出模塊(File->Export raster map),可方便的輸出各種常見柵格格式,參見3.1節(jié)柵格數(shù)據(jù)的輸入的有關(guān)內(nèi)容。
圖12 選擇投影前圖像的和投影后圖像名稱
圖13 投影后圖像
GRASS軟件完全可以完美處理草業(yè)空間柵格數(shù)據(jù)與矢量數(shù)據(jù),其開源的特點,使得其使用起來成本很低,更可以修改源代碼以適應(yīng)草業(yè)行業(yè)或特定區(qū)域的應(yīng)用,雖然其基本操作與大多數(shù)商業(yè)軟件相比有很大的不同而讓初學(xué)者無所適從,但從GRASS軟件發(fā)展的歷程來看,大的趨向是操作簡單化、平臺多樣化,功能日趨完善和強大。更令人興奮的是,GRASS與同是開源軟件的QGIS 、POSTGRESQL 、POSTGIS 、MAPSERVER 的整合日益完善[12],而且當(dāng)GRASS作為一個地理信息和遙感系統(tǒng)的SERVER端時,能顯示出更強大的威力,如Geobrain項目中[14-15],GRASS就是一個服務(wù)器端強大的數(shù)據(jù)處理中心??偠灾?GRASS作為一個開源空間信息領(lǐng)域的核心軟件,在開源和草業(yè)空間信息領(lǐng)域都必將發(fā)揮巨大的影響。
[1]孫劍.GIS的開源夢想[J].軟件世界,2007,16:50-51.
[2]高昂.GIS項目中的開放源代碼選擇[J].程序員,2007(5):82-85.
[3]胡慶武,陳亞男,周洋,等.開源GIS進(jìn)展及其典型應(yīng)用研究[J].地理信息世界,2009(1):46-54.
[4]吳楓,鄭逢令.開源空間信息技術(shù)在草業(yè)上的應(yīng)用前景[J].草食家畜,2009(1):50-51.
[5]路金閣,楊永國.基于開源軟件的WebGIS服務(wù)器構(gòu)建[J].測繪與空間地理信息,2008,31(5):145-147.
[6]趙軍,王雪平,金蓉.ArcGIS在草地資源規(guī)劃中的應(yīng)用[J].草業(yè)科學(xué),2007,23(3):1-4.
[7]唐川江,周俗,張緒校,等.基于“3S”技術(shù)的阿壩縣退牧還草工程效益監(jiān)測[J].草業(yè)科學(xué),2006,23(6):55-62.
[8]靳瑰麗,安沙舟,范燕敏,等.MapInfoGIS在幾種草地類型圖數(shù)字化方法中的應(yīng)用[J].草業(yè)科學(xué),2008,25(7):24-28.
[9]熊靜,張菁.基于MapServer的遙感影像發(fā)布系統(tǒng)的研究[J].遙感應(yīng)用,2007(1):53-57.
[10]Otto Dassau,Stephan Holl.GRASS 6.0中文手冊[EB/OL]張俊,譯.(2005-07-12).http://www.gdfhannover.de/lit_html/grass60_v1.2_zh_CN/index.html.
[11]M artin.GRASS Documentation[EB/OL].2008-06-28.http://grass.fbk.eu/gdp/index.php.
[12]Neteler.GRASS Mailing Lists[EB/OL].2009-08-19.http://grass.fbk.eu/community/support.php.
[13]Neteler M,Mitasova H.Open Source GIS:A GRASS GIS Approach[M].New York:Springer,2007.
[14]Di L P.Geobrain User Guider[EB/OL].2008-06-18.http://geobrain.laits.gmu.edu/OnAS/User_Guide.pdf,.
[15]Di L,M cDonald K.The NASA HDF-EOS Web GIS Software Suite(NWGISS)[A].Earth Science Satellite Remote Sensing[M].Berlin:Springer-Verlag,2005.