鄭逢令,儲少林,任玉平,賽里克·都曼
(新疆畜牧科學院草業(yè)研究所,新疆 烏魯木齊 830000)
開源軟件具有代碼公開、在遵守一定協(xié)議的前提下可自由使用并根據需要更改源代碼等優(yōu)點,對比動輒需支付幾萬到幾十萬元人民幣費用的純商業(yè)軟件,使用開源空間信息軟件的成本非常低[1-2]。在開源空間信息技術領域,以地理資源分析支持系統(tǒng)(geohraphic resources analysis support system,GRASS)GIS為核心軟件,C語言系列為基礎開發(fā)語言的軟件,因其技術成熟、系列完整、成本低廉的優(yōu)點,在眾多領域得到了廣泛應用[3-5]。但由于相關中文參考資料的稀缺,加之中國有特定的地理數據和投影坐標系,所以在中國草業(yè)空間信息領域此方面的研究較缺乏。草業(yè)領域中的許多工作如草地資源調查、退牧還草工程、草地生態(tài)退化與修復,都常會面對處理數量龐大、類型多樣的柵格數據,最常見的如地形圖、遙感圖像、作為數字化底圖的各種圖片形式的草地類型圖、草地利用現狀圖等,而目前完成這些工作使用的軟件都是成本較高的商業(yè)軟件,如MAPINFO、ARCGIS、ERDAS等[6-8]。目前國內對這方面的關注程度雖然越來越高,但已有的研究多集中在比較窄的領域特別是web GIS方面,或側重各種開源空間信息技術一般性的介紹[3,9-10],而對利用開源技術解決實際生產或科研上遇到的問題,鮮有涉及。怎樣利用開源空間技術處理草業(yè)相關的空間數據,用以代替昂貴的商業(yè)軟件,是值得去深入挖掘的[4]。為此,以功能齊全的開源空間信息軟件GRASS GIS軟件,利用開源技術對草地遙感和草業(yè)空間信息數據中常用的柵格數據進行處理,以此作為開源空間信息技術應用于草業(yè)的初步研究探索。
GRASS(geographic resources analysis support system)GIS即地理資源分析支持系統(tǒng),是基于通用公共許可協(xié)議(GNU general public license GNU GPL)的一個開源軟件,具備數據管理、圖像處理、數字制圖、空間建模和數據可視化等功能。它是使用標準C語言編寫的一套基于文件結構的平臺,對用戶端采用功能分層模式,并且支持柵格數據文件和矢量數據文件,GRASS是一個開放的地理信息系統(tǒng)資源,GRASS軟件作為一款功能強大的開源地理信息軟件,同時具有處理遙感數據的功能。它主要功能包括地理數據管理、圖像處理、圖表生成、空間建模和許多數據可視化顯示等[11-13]。
在使用GRASS GIS(或簡稱GRASS)軟件之前,必須要設置數據區(qū)域,數據集合,因為柵格數據在 GRASS中是以特有的格式存在的。GRASS中使用的GUI界面主要是tk/tcl和wx-python界面。
GRASS采用目錄形式存儲數據,最高級的目錄稱為GRASS Database,在GRASS Database中,GRASS會為每一個項目區(qū)域自動創(chuàng)建一個子目錄樹(區(qū)域-Location)。所有項目數據都存儲在Location子目錄下。Location又可以被細分為地圖子目錄,稱為地圖集(mapsets)。GRASS就是以這樣的結構組織存取數據的。
要設置數據的區(qū)域,必須要正確設置軟件的投影。在GRASS中,通常有3種方式來設置投影和區(qū)域[12-13]。
2.1 導入已含有正確投影信息的數據創(chuàng)建區(qū)域有些情況下,數據已經包含了所有必需的投影信息,使用導入模塊將投影信息與數據一并導入。因此,可以使用數據中的投影信息生成新的區(qū)域。
2.2 輸入EPSG代碼創(chuàng)建區(qū)域通過輸入適當的EPSG代碼,自動指定投影(請參閱http://www.epsg.org/)。這會為區(qū)域指定標準投影和國家格網系統(tǒng)的參數。可以在進入EPSG codes界面后瀏覽與各個投影系統(tǒng)相對應的EPSG代碼或元數據中找到。
如果項目區(qū)域有EPSG代碼,那么它可以用來自動創(chuàng)建新區(qū)域。點擊按鈕“Create Location from EPSG”并輸入適當的代碼值。點擊按鈕“EPSG Codes”會列出已有的代碼值,如新疆地區(qū)常用的UTM投影坐標系45N帶的EPSG Code為32645(+proj=utm+zone=45+ellps=WGS84+datum=WGS84+units=m+no_defs)。
2.3 文本模式下創(chuàng)建自定義區(qū)域因為中國大比例尺的地形圖基本采用北京54坐標系和西安80坐標系,在特定的坐標系背景下,使用前2種方式很難創(chuàng)建正確和詳細的區(qū)域參數,因此以文本模式創(chuàng)建自定義區(qū)域這一方式顯得尤為重要。以在退牧還草實際工作中用到的和田地區(qū)北京54坐標系下的地形圖投影設置為例,說明在GRASS軟件環(huán)境下高斯投影坐標系的設置。
為了定義區(qū)域的投影,點擊按鈕“Create New Location”。GRASS自動切換到文本模式下(圖1),此處GRASS Database為grassdata,設置Location為gauss14,mapset取默認的PERMANENT。在此可以輸入創(chuàng)建新區(qū)域的數據。
根據提示按ESC+ENTER鍵進入下一步驟。選擇區(qū)域的坐標系統(tǒng),這里選擇D(圖2)。

圖1 文本模式下自定義區(qū)域參數

圖2 文本模式下區(qū)域坐標系統(tǒng)的選擇
接下來,根據提示選擇并設置與北京54坐標系對應的tmerc(橫軸莫卡托)投影(圖 3A、B),s-42(pulovo 1942)橢球體(圖3C),并設置本次使用地形圖gauss14帶以下關鍵參數(圖3D):

最后設置區(qū)域的四至界限和像元大小,就完成了一副Gauss投影的北京54坐標系14帶(6度帶)地形圖的區(qū)域設置(圖4)。
柵格數據在空間信息軟件中常用而必要的操作主要有:數據輸入、柵格數據的配準、波段合成、圖像鑲嵌和剪切、投影變換、數據的輸出。至于其他相關操作,請參閱相關文獻或網站[11-13]。
3.1 柵格數據的輸入通過File菜單下的Import raster map,可以很容易地將常用柵格格式輸入到GRASS中,表1為GRASS中可導入的柵格格式與相應的模塊。
本研究中,使用r.in.gdal模塊將一副掃描地形圖 test.JPG輸入到 GRASS,打開 GRASS(tcltk或w xpython圖形界面),隨意進入一個區(qū)域和圖集,進入GRASS主界面,通過import raster map->import raster data using GDAL,然后在r.in.gdal圖形界面下,瀏覽文件夾,選擇彩色地形圖test.JPG,確定導入,在此界面下選擇輸出的柵格名和Location名為 test。重新打開GRASS,登錄界面中便會出現剛才創(chuàng)建的test區(qū)域(location),選擇permanent圖集進入GRASS主界面。這時可以看到新出現的 test區(qū)域,在permanent地圖集中有紅綠藍3個單色波段,這是GRASS自動將原始圖像分成了這3個波段,3個波段為一組(GROUP),所有軟件功能作用到任一個單色波段,也同時視為作用到其他2個波段。需要時可使用r.composite模塊合成為RGB圖像。選擇一副test.blue波段在display窗口中打開,至此已經成功輸入JPG格式的地形圖(圖5),其他格式也是如此操作,篇幅所限,不在此多做說明,感興趣的讀者可參閱相關資料。
3.2 柵格數據配準將掃描輸入的地形圖柵格配準處理成具有地理參考坐標的圖像數據,賦予投影等重要參數,是進行其他重要操作的先決條件。
要利用前面導入的test.JPG圖像,建立一個區(qū)域,介紹柵格圖像的配準方法和步驟。

圖3 文本模式下北京54坐標系統(tǒng)的設置

圖4 北京54坐標系14帶(6度帶)地形圖的區(qū)域設置

表1 Grass中可導入的常用柵格數據及相應模塊

圖5 JPG柵格圖像輸入

圖6 配準前柵格圖像圖集、組和圖像的選擇
1)首先進入先前所建的gauss14區(qū)域目錄,在文件下拉菜單中選擇georectify選項開始配準工作。
2)選擇Location test,permanent test,在這里選擇group test,圖像選擇 test-blue,然后georectify,開始配準(圖6)。
3)在跳出的界面下,選擇GCP取點,可利用放大、縮小、PAN等工具輔助選點,rectify method選擇1ST即可。點至少要取4個(圖7)。
4)在滿足RMS誤差的要求下(根據工作要求不同,誤差的要求也不同),點擊rectify maps,GRASS進行配準狀態(tài)并完成配準。

圖7 GCP點的選擇
3.3 鑲嵌和裁剪在GRASS中做圖像鑲嵌可以通過r.mosaic這個模塊完成,一次最多可以完成4副相鄰柵格圖像的鑲嵌。對圖像任意區(qū)域和形狀的剪切要通過MASK這個功能完成。在地形圖的處理中,要去掉相鄰地形圖的邊框以外的部分,拼接邊框以內的內容,常用到裁剪操作。以下就使用配準過的圖像重點說明使用MASK功能是如何完成這一操作的。
先在GRASS中打開已經配準好一副已經配準過的14帶的118號地形圖圖像。要形成用作MASK的圖像,一般要先沿著地形圖邊框成一個覆蓋邊框以內的面(質心+圖形邊界),這里將此矢量文件稱作maskvec,然后通過矢量轉化為柵格的功能(文件->轉換地圖類型->矢量轉柵格),將新建的 maskvec文件轉換成柵格文件maskg(圖8),接著在柵格菜單中選 mask這一項,用作mask的柵格圖像是maskg(圖9)。
這時在display窗口中看到的地形圖就是去掉邊框外內容的圖像。這樣就可以做其他的操作如拼接等(圖10)。
3.4 柵格圖像投影變換在GRASS中,要進行柵格數據的投影變換,先要設置好目標投影,目標投影可以是已存在的投影,如果沒有現成的,一定要設置對投影的參數和目標投影的范圍,然后進行投影變換。下面就常用的高斯投影下的北京54坐標系和經緯度坐標系之間的轉換做一個說明。
1)進入根據前面3.3章節(jié)所述方法設置好經緯度區(qū)域(范圍要大于或等于與北京54坐標系區(qū)域,地形圖可參考四至坐標),這里設置的區(qū)域名稱是 testll。
2)選擇柵格->制作地圖->reproject(投影變換)(圖11)。

圖8 GRASS中矢量轉柵格的操作

圖9 GRASS中選擇用作 MASK的柵格

圖10 使用MASK功能后只保留邊框內的內容

圖11 在tk/tck界面下manager窗口中選擇重投影工具
3)在跳出的界面中,Location選擇gauss14,被投影的柵格圖像可選test組中的任意圖像,這里選擇 test.blue3108,投影后的名稱這里填testpro,其他選擇默認值即可(圖12)。
4)運行后,成功重投影成對應經緯度的圖像,圖13中Map Display 1為投影后的圖像,在輸出窗口中可以看到其區(qū)域范圍和投影設置。
3.5 柵格圖像輸出經過配準校正、重投影、鑲嵌剪切等基本操作,得到合適的結果圖像后,如果要在其他軟件中繼續(xù)使用,一般需要將GRASS中特殊格式的數據轉化成通用柵格數據,GRASS有專門的柵格輸出模塊(File->Export raster map),可方便的輸出各種常見柵格格式,參見3.1節(jié)柵格數據的輸入的有關內容。

圖12 選擇投影前圖像的和投影后圖像名稱

圖13 投影后圖像
GRASS軟件完全可以完美處理草業(yè)空間柵格數據與矢量數據,其開源的特點,使得其使用起來成本很低,更可以修改源代碼以適應草業(yè)行業(yè)或特定區(qū)域的應用,雖然其基本操作與大多數商業(yè)軟件相比有很大的不同而讓初學者無所適從,但從GRASS軟件發(fā)展的歷程來看,大的趨向是操作簡單化、平臺多樣化,功能日趨完善和強大。更令人興奮的是,GRASS與同是開源軟件的QGIS 、POSTGRESQL 、POSTGIS 、MAPSERVER 的整合日益完善[12],而且當GRASS作為一個地理信息和遙感系統(tǒng)的SERVER端時,能顯示出更強大的威力,如Geobrain項目中[14-15],GRASS就是一個服務器端強大的數據處理中心。總而言之,GRASS作為一個開源空間信息領域的核心軟件,在開源和草業(yè)空間信息領域都必將發(fā)揮巨大的影響。
[1]孫劍.GIS的開源夢想[J].軟件世界,2007,16:50-51.
[2]高昂.GIS項目中的開放源代碼選擇[J].程序員,2007(5):82-85.
[3]胡慶武,陳亞男,周洋,等.開源GIS進展及其典型應用研究[J].地理信息世界,2009(1):46-54.
[4]吳楓,鄭逢令.開源空間信息技術在草業(yè)上的應用前景[J].草食家畜,2009(1):50-51.
[5]路金閣,楊永國.基于開源軟件的WebGIS服務器構建[J].測繪與空間地理信息,2008,31(5):145-147.
[6]趙軍,王雪平,金蓉.ArcGIS在草地資源規(guī)劃中的應用[J].草業(yè)科學,2007,23(3):1-4.
[7]唐川江,周俗,張緒校,等.基于“3S”技術的阿壩縣退牧還草工程效益監(jiān)測[J].草業(yè)科學,2006,23(6):55-62.
[8]靳瑰麗,安沙舟,范燕敏,等.MapInfoGIS在幾種草地類型圖數字化方法中的應用[J].草業(yè)科學,2008,25(7):24-28.
[9]熊靜,張菁.基于MapServer的遙感影像發(fā)布系統(tǒng)的研究[J].遙感應用,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.