基于ArcEngine的森林防火监测系统选址的研究与实现
2010-07-31许水燕沈明霞何瑞银刘龙申丛静华
许水燕,沈明霞,何瑞银,张 瑜,刘龙申,丛静华
(1.南京农业大学 工学院,江苏 南京 210031;2.南京森林公安高等专科学校,江苏南京 210046)
森林资源是我国自然资源的重要组成部分,是林业生产、经济建设的物质基础,是人民生活的物资财富,也是良好生态环境的重要保障。但每年频繁发生的森林火灾,给森林资源和生态环境带来了严重危害,并造成了巨大的经济损失。林火监测系统是减少火灾危害有效的方法。监测点的选址是森林防火监测系统的重要部分,合理布局监测点既可节约成本,又可最大范围地监测森林的覆盖面积。
根据区域地理环境的特点,综合考虑资源配置、市场潜力、交通条件、地形特征、环境影响等因素,在区域范围内选择最佳位置,是GIS的一个典型应用领域。GIS技术在监测点选址决策中发挥重要的作用,成为选址的可视性分析平台。目前主要是利用ESRI的ArcGIS Desktop软件平台来进行山顶点的提取和可视性分析,而利用ArcEngine的COM和.NET组件来开发监测点的选址功能比较少。以Microsoft Visual Studio 2005为系统开发平台,采用C#.NET语言和ArcEngine开发组件,研究了森林山顶点的提取和可视性分析并计算盲区的面积,并以白狼林场为例研发了选址功能软件。
1 系统总体框架
森林防火监测系统中监测点的选址关系着监测点可视性的覆盖范围和成本的投入。通常,为了在森林选择一个视野开阔、覆盖面积大的监测点,把监测点建设在山顶上,并通过空间分析中的地形分析生成森林的数字高程模型进行可视性分析。本研究的地形图是内蒙古兴安盟白狼林场的DEM数据,采用C#.NET作为开发前端,基于ArcEngine来进行设计开发,来说明GIS开发中ArcEngine开发的系统设计与实现。利用 ArcEngine提供的 COM.NET和C#.NET的API开发森林监测点的选址功能软件,系统的总体设计如图1所示。
2 山顶点提取
由于DEM蕴涵了丰富的地性信息,为准确、快速获取山顶点信息提供了良好的数据基础。以栅格窗口分析的局部高差比较法为基本算法,通过对山顶点形态特征的分析,并基于GIS栅格数据邻域分析功能从DEM数据中提取山顶点。利用ArcEngine进行山顶点提取的流程如图2所示。
2.1 邻域统计
图1 系统的总体设计框架
图2 山顶点提取的流程
邻域统计是一个邻域函数,即输出栅格数据集中每个位置的值都是输入数据中相应位置下指定的邻域单元的函数。山顶点指在特定邻域分析范围内,该点的海拔都比周围点高的区域。最大值栅格矩阵数据pRaster是利用邻域分析求矩形窗口最大值的方法,而矩形窗口大小由白狼地貌形态设定为11×11。根据 ArcEngine提供 的 接 口INeighborhoodOp对白狼林业局的DEM进行邻域统计,代码如下: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)。
2.2 栅格计算
因为山顶点是区域内海拔最高点,故山顶点的位置就在邻域分析后获得最大值栅格矩阵数据pRaster与DEM相减所得到的差值为零的格网。利用ArcEngine的栅格的数学运算功能IMathOp接口中的Minus来计算差值为零的网格故代码如下:IMathOp pMapthOP=new RasterMathOpsClass();IGeoDataset pOutputRaster = pMapthOP. Minus((IGeoDataset)pRaster,(IGeoDataset)DEM)。
2.3 重分类
重分类是基于原有数值,对原有数值重新进行分类整理从而得到一组新值并输出。对经过栅格计算出来所得到的数据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″。
2.4 栅格转为面要素
由于会出现局部区域地势相对平坦,所以在邻域分析中会出现连片最高点分布从而出现伪顶点,此时需要把栅格转为面要素进行处理,只留下中心点作为山顶点。把重分类得到的栅格数据pRaster2利用ConversionTools接口的 RasterToPoint转化为面要素。
ESRI.ArcGIS. ConversionTools. RasterToPoint RatoPoint=new ESRI.ArcGIS.ConversionTools.RasterToPoint();RatoPoint.in_raster=pRaster2;RatoPoint.out_ point_ features= @″E: peak.shp″。
2.5 提取结果分析
经过前面的分析之后所得到的白狼林业局的山顶点如图3所示。
图3 白狼林业局山顶点的提取结果
3 可视性分析
可视性分析是研究从单个或者多个监测点所能看到的地形范围或者与其它目标点间可见与否,是以监测点为源头发出射线的高程与对应地面高程的比较。本文讨论基于规则网格模型 (RSG),并利用点对点的视线 (line of sight,LOS)的计算和基于LOS的可视域计算进行可视性分析。
3.1 视线方法
LOS是指从监测点O开始并通过目标点 T的射线。如果目标点可视,则这两点通视。山上每个点可被表示为三维向量 (X,Y,Z),其中 (X,Y)是经纬度坐标,Z是其对应的高程。于是,判断O和T是否通视的依据为:OT线段上的任一点向量坐标 m≡ (mX,mY,mZ) =pO+t(pD-pO),0<t<1高于对应的高程点,其中pO为监测点向量坐标,pT为目标点的向量坐标。如图4所示,山上有监测点O和A,B,C,D,T 5个目标点,根据判断法则,山形上加粗的区域都是从监测点可视的,即D点和T点均可视的,而从A点到D点下面的所有区域都是不可视的,即B点和C点均不可视的。
图4 观察点和目标点的可视性
3.2 可视域
可视域分析是以一个山顶点为监测点,研究某一区域通视情况的地形分析。视域计算的原理是:以监测点为中心,以一定的方位线,通视的地方绘线,不通视的地方断开。视域的大小根据监测范围内的所有点与监测点的视线来计算。如果从监测点到目标所建立的视线中间有高程大于这两点所建立的视线表示目标无法观测到,基于 DEM的可视域分析是根据监测点、监测范围和山体高程,计算出在监测点向四周瞭望所能够看到的最大范围。利用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为内蒙古白狼林业局的局部DEM数据经过可视域分析后的结果图。图5中小三角形符号代表观察点,白色区域代表观察点的可视部分,黑色区域则为不可视部分即盲区。
图5 可视域的分析结果
3.3 计算盲区面积
经过可视域分析后所得到的栅格数据viewshed.img,viewshed文件属性里面有字段COUNT,COUNT代表着种类的栅格单元总数,而栅格面积S等于栅格单元数C乘以一个栅格单元的面积A。若可视部分的栅格单元总数为C1,不可视部分的栅格单元总数为C2,可视部分的面积为S1,不可视部分的面积为 S2,可视区域的覆盖率F1,不可视区域的覆盖率F2,则:
4 系统功能实现
基于ArcEngine开发的森林防火监测系统监测点的选址软件,以内蒙古兴安盟白狼林业局电子地图为例的主界面如图6所示。
4.1 GIS基本功能
系统的GIS基本功能包括电子地图的打开、图层加载、放大、缩小、漫游、保存、全图显示、比例控制显示、查询、距离、面积量测、查找、图层控制显示区等基本操作。
图6 主界面的功能
4.2 山顶点提取功能
点击山顶点提取按钮可以提取DEM数据的山顶点。点击区域选择按钮可以提取出在MapControl控件中利用鼠标点击两个点作为半径的圆区域内的山顶点并闪烁显示,并把这些山顶点按海拔从大到小把相关信息的经纬度、高程和山名等显示在Listview1列表中。
4.3 选择观察点
点击Listview1列表中任何一个山顶点,则GroupBox控件的观察点信息会显示对应山顶点的经纬度和海拔信息,并会在MapControl控件中用红色圆点标注出这个山顶点。
4.4 可视性分析功能
图7 可视的分析界面
可视分析后的界面如图7所示。由于考虑到系统用到的云台的观察范围是15 km,所以本课题研究的是以一个观察点为圆心和半径为15 km的圆区域的可视与不可视区域,并分别计算出该区域内盲区和可见部分的表面积。点击区域裁剪按钮先裁剪出来以观察点为中心的15 km范围内的区域,再点击可视分析按钮就能在MapControl控件中看到区域范围内的盲区部分和可见部分2种不同颜色。再点击查看结果按钮就可以看到Listview2列表中显示出可见部分和不可见部分各自的面积和覆盖率。
5 小结
利用ArcEngine组件和C#.NET开发语言研发了监测点的选址功能软件,与应用传统的选址方法相比,节省了因大量的实地考察而耗费巨大的人力、物力和财力。选择在内蒙古白狼林场进行了初步试验,试验结果表明:系统利用GIS栅格数据邻域分析方法可以快速准确地从DEM数据中提取山顶点,通过可视性分析计算出盲区的面积,合理布局监测点。课题组将继续研究选址软件的三维可视化功能,从而更加直观、准确的布局监测点。
[1]邬伦,刘瑜,张晶,等.地理信息系统:原理、方法和应用 [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在城市生活垃圾卫生填埋场选址中的应用 [J].地理空间信息,2006,4(3):35-36.
[8]刘莹.ArcGIS Engine的开发与应用研究 [J].城市勘测,2006,(2):37-39.
[9]汤国安.ArcGIS地理信息系统空间分析试验教程 [M].北京:科学出版社,2006:304-307.