許水燕,沈明霞,何瑞銀,張 瑜,劉龍申,叢靜華
(1.南京農業(yè)大學 工學院,江蘇 南京 210031;2.南京森林公安高等??茖W校,江蘇南京 210046)
森林資源是我國自然資源的重要組成部分,是林業(yè)生產、經濟建設的物質基礎,是人民生活的物資財富,也是良好生態(tài)環(huán)境的重要保障。但每年頻繁發(fā)生的森林火災,給森林資源和生態(tài)環(huán)境帶來了嚴重危害,并造成了巨大的經濟損失。林火監(jiān)測系統(tǒng)是減少火災危害有效的方法。監(jiān)測點的選址是森林防火監(jiān)測系統(tǒng)的重要部分,合理布局監(jiān)測點既可節(jié)約成本,又可最大范圍地監(jiān)測森林的覆蓋面積。
根據區(qū)域地理環(huán)境的特點,綜合考慮資源配置、市場潛力、交通條件、地形特征、環(huán)境影響等因素,在區(qū)域范圍內選擇最佳位置,是GIS的一個典型應用領域。GIS技術在監(jiān)測點選址決策中發(fā)揮重要的作用,成為選址的可視性分析平臺。目前主要是利用ESRI的ArcGIS Desktop軟件平臺來進行山頂點的提取和可視性分析,而利用ArcEngine的COM和.NET組件來開發(fā)監(jiān)測點的選址功能比較少。以Microsoft Visual Studio 2005為系統(tǒng)開發(fā)平臺,采用C#.NET語言和ArcEngine開發(fā)組件,研究了森林山頂點的提取和可視性分析并計算盲區(qū)的面積,并以白狼林場為例研發(fā)了選址功能軟件。
森林防火監(jiān)測系統(tǒng)中監(jiān)測點的選址關系著監(jiān)測點可視性的覆蓋范圍和成本的投入。通常,為了在森林選擇一個視野開闊、覆蓋面積大的監(jiān)測點,把監(jiān)測點建設在山頂上,并通過空間分析中的地形分析生成森林的數字高程模型進行可視性分析。本研究的地形圖是內蒙古興安盟白狼林場的DEM數據,采用C#.NET作為開發(fā)前端,基于ArcEngine來進行設計開發(fā),來說明GIS開發(fā)中ArcEngine開發(fā)的系統(tǒng)設計與實現。利用 ArcEngine提供的 COM.NET和C#.NET的API開發(fā)森林監(jiān)測點的選址功能軟件,系統(tǒng)的總體設計如圖1所示。
由于DEM蘊涵了豐富的地性信息,為準確、快速獲取山頂點信息提供了良好的數據基礎。以柵格窗口分析的局部高差比較法為基本算法,通過對山頂點形態(tài)特征的分析,并基于GIS柵格數據鄰域分析功能從DEM數據中提取山頂點。利用ArcEngine進行山頂點提取的流程如圖2所示。
圖1 系統(tǒng)的總體設計框架
圖2 山頂點提取的流程
鄰域統(tǒng)計是一個鄰域函數,即輸出柵格數據集中每個位置的值都是輸入數據中相應位置下指定的鄰域單元的函數。山頂點指在特定鄰域分析范圍內,該點的海拔都比周圍點高的區(qū)域。最大值柵格矩陣數據pRaster是利用鄰域分析求矩形窗口最大值的方法,而矩形窗口大小由白狼地貌形態(tài)設定為11×11。根據 ArcEngine提供 的 接 口INeighborhoodOp對白狼林業(yè)局的DEM進行鄰域統(tǒng)計,代碼如下:ESRI.ArcGIS.SpatialAnalyst.IN-eighborhoodOp pNbrOP=newRasterNeighborhoodOp-Class();IRasterNeighborhood pNbr=newRaster-NeighborhoodClass();pNbr.SetRectangle(11,11, esriGeoAnalysisUnitsEnum. esriUnitsMap );IGeoDataset pOutput = pNbrOP. FocalStatistics((IGeoDataset) DEM, esriGeoAnalysisStatisticsE-num.esriGeoAnalysisStatsMaximum,pNbr,false)。
因為山頂點是區(qū)域內海拔最高點,故山頂點的位置就在鄰域分析后獲得最大值柵格矩陣數據pRaster與DEM相減所得到的差值為零的格網。利用ArcEngine的柵格的數學運算功能IMathOp接口中的Minus來計算差值為零的網格故代碼如下:IMathOp pMapthOP=new RasterMathOpsClass();IGeoDataset pOutputRaster = pMapthOP. Minus((IGeoDataset)pRaster,(IGeoDataset)DEM)。
重分類是基于原有數值,對原有數值重新進行分類整理從而得到一組新值并輸出。對經過柵格計算出來所得到的數據pRaster1進行重新分類。代碼如下:ESRI.ArcGIS.SpatialAnalystTools.Reclassify re=new ESRI.ArcGIS.SpatialAnalystTools.Reclassify();re.in_ raster=pRaster1;re.reclass_ field=Value;re.missing_ values=false;re.out_raster=@ ″E:Re.img″。
由于會出現局部區(qū)域地勢相對平坦,所以在鄰域分析中會出現連片最高點分布從而出現偽頂點,此時需要把柵格轉為面要素進行處理,只留下中心點作為山頂點。把重分類得到的柵格數據pRaster2利用ConversionTools接口的 RasterToPoint轉化為面要素。
ESRI.ArcGIS. ConversionTools. RasterToPoint RatoPoint=new ESRI.ArcGIS.ConversionTools.RasterToPoint();RatoPoint.in_raster=pRaster2;RatoPoint.out_ point_ features= @″E: peak.shp″。
經過前面的分析之后所得到的白狼林業(yè)局的山頂點如圖3所示。
圖3 白狼林業(yè)局山頂點的提取結果
可視性分析是研究從單個或者多個監(jiān)測點所能看到的地形范圍或者與其它目標點間可見與否,是以監(jiān)測點為源頭發(fā)出射線的高程與對應地面高程的比較。本文討論基于規(guī)則網格模型 (RSG),并利用點對點的視線 (line of sight,LOS)的計算和基于LOS的可視域計算進行可視性分析。
LOS是指從監(jiān)測點O開始并通過目標點 T的射線。如果目標點可視,則這兩點通視。山上每個點可被表示為三維向量 (X,Y,Z),其中 (X,Y)是經緯度坐標,Z是其對應的高程。于是,判斷O和T是否通視的依據為:OT線段上的任一點向量坐標 m≡ (mX,mY,mZ) =pO+t(pD-pO),0<t<1高于對應的高程點,其中pO為監(jiān)測點向量坐標,pT為目標點的向量坐標。如圖4所示,山上有監(jiān)測點O和A,B,C,D,T 5個目標點,根據判斷法則,山形上加粗的區(qū)域都是從監(jiān)測點可視的,即D點和T點均可視的,而從A點到D點下面的所有區(qū)域都是不可視的,即B點和C點均不可視的。
圖4 觀察點和目標點的可視性
可視域分析是以一個山頂點為監(jiān)測點,研究某一區(qū)域通視情況的地形分析。視域計算的原理是:以監(jiān)測點為中心,以一定的方位線,通視的地方繪線,不通視的地方斷開。視域的大小根據監(jiān)測范圍內的所有點與監(jiān)測點的視線來計算。如果從監(jiān)測點到目標所建立的視線中間有高程大于這兩點所建立的視線表示目標無法觀測到,基于 DEM的可視域分析是根據監(jiān)測點、監(jiān)測范圍和山體高程,計算出在監(jiān)測點向四周瞭望所能夠看到的最大范圍。利用ArcEngine三維分析的接口ViewShed進行編程,代碼如下:ESRI.ArcGIS.Analyst3DTools.Viewshed pviewshed1=new ESRI.ArcGIS.Analyst3DTools.Viewshed();pviewshed1.in_observer_features=@ ″D: MyShapeFile.shp″;//觀 察 點 文 件pviewshed1.in_raster=@ ″D: maskcut.img″;pviewshed1.out_raster=@ ″D: viewshed.img″;pviewshed1.z_factor=0.2。
圖5為內蒙古白狼林業(yè)局的局部DEM數據經過可視域分析后的結果圖。圖5中小三角形符號代表觀察點,白色區(qū)域代表觀察點的可視部分,黑色區(qū)域則為不可視部分即盲區(qū)。
圖5 可視域的分析結果
經過可視域分析后所得到的柵格數據viewshed.img,viewshed文件屬性里面有字段COUNT,COUNT代表著種類的柵格單元總數,而柵格面積S等于柵格單元數C乘以一個柵格單元的面積A。若可視部分的柵格單元總數為C1,不可視部分的柵格單元總數為C2,可視部分的面積為S1,不可視部分的面積為 S2,可視區(qū)域的覆蓋率F1,不可視區(qū)域的覆蓋率F2,則:
基于ArcEngine開發(fā)的森林防火監(jiān)測系統(tǒng)監(jiān)測點的選址軟件,以內蒙古興安盟白狼林業(yè)局電子地圖為例的主界面如圖6所示。
系統(tǒng)的GIS基本功能包括電子地圖的打開、圖層加載、放大、縮小、漫游、保存、全圖顯示、比例控制顯示、查詢、距離、面積量測、查找、圖層控制顯示區(qū)等基本操作。
圖6 主界面的功能
點擊山頂點提取按鈕可以提取DEM數據的山頂點。點擊區(qū)域選擇按鈕可以提取出在MapControl控件中利用鼠標點擊兩個點作為半徑的圓區(qū)域內的山頂點并閃爍顯示,并把這些山頂點按海拔從大到小把相關信息的經緯度、高程和山名等顯示在Listview1列表中。
點擊Listview1列表中任何一個山頂點,則GroupBox控件的觀察點信息會顯示對應山頂點的經緯度和海拔信息,并會在MapControl控件中用紅色圓點標注出這個山頂點。
圖7 可視的分析界面
可視分析后的界面如圖7所示。由于考慮到系統(tǒng)用到的云臺的觀察范圍是15 km,所以本課題研究的是以一個觀察點為圓心和半徑為15 km的圓區(qū)域的可視與不可視區(qū)域,并分別計算出該區(qū)域內盲區(qū)和可見部分的表面積。點擊區(qū)域裁剪按鈕先裁剪出來以觀察點為中心的15 km范圍內的區(qū)域,再點擊可視分析按鈕就能在MapControl控件中看到區(qū)域范圍內的盲區(qū)部分和可見部分2種不同顏色。再點擊查看結果按鈕就可以看到Listview2列表中顯示出可見部分和不可見部分各自的面積和覆蓋率。
利用ArcEngine組件和C#.NET開發(fā)語言研發(fā)了監(jiān)測點的選址功能軟件,與應用傳統(tǒng)的選址方法相比,節(jié)省了因大量的實地考察而耗費巨大的人力、物力和財力。選擇在內蒙古白狼林場進行了初步試驗,試驗結果表明:系統(tǒng)利用GIS柵格數據鄰域分析方法可以快速準確地從DEM數據中提取山頂點,通過可視性分析計算出盲區(qū)的面積,合理布局監(jiān)測點。課題組將繼續(xù)研究選址軟件的三維可視化功能,從而更加直觀、準確的布局監(jiān)測點。
[1]鄔倫,劉瑜,張晶,等.地理信息系統(tǒng):原理、方法和應用 [M].北京:科學出版社,2001.
[2]Lee J,Snyder P K,Fisher P F.Modeling the Effect of Data Errors on Feature Extraction from Digital Elevation Models[J].Photogrammetric Engineering and Remote Sensing,1992,58(10):1461-1467.
[3]Andrea B C,Vicente T R,Valentino S,et al.Geomorphometric Analysis for Characterizing Landforms in Morelos State [J].Geomorphology,2005,67:407- 422.
[4]Toriwaki J,Fukumura T.Extraction of Structural Information from Grey Pictures [J]. ComputerGraphics and Image Processing,1978(7):30-51.
[5]Wood J.The Geomorphological Characterization of Digital Elevation Models [D].Leilester:University of Leicester,1996.
[6]Peucker T K,Douglas D H.Detection of Surface Specific Point by Local Parallel Processing of Discrete Terrain Elevation Data[J].Computer Graphics and Imagine Processing,1975(4):375-387.
[7]李淑貞,姚玲.GIS在城市生活垃圾衛(wèi)生填埋場選址中的應用 [J].地理空間信息,2006,4(3):35-36.
[8]劉瑩.ArcGIS Engine的開發(fā)與應用研究 [J].城市勘測,2006,(2):37-39.
[9]湯國安.ArcGIS地理信息系統(tǒng)空間分析試驗教程 [M].北京:科學出版社,2006:304-307.