基于Arc—Engine的地形分析子系统开发
2017-10-17滕鸿伟廉著升邵东桥
滕鸿伟+廉著升+邵东桥
摘要:基于DEM的地形分析是GIS研究的重要内容,能为土壤侵蚀、流域管理与规划以及水文分析等提供有效技术保障,具有广泛的应用前景。本文以陕西李家寨DEM数据为例,使用C#开发语言和Arc-Engine开发组件,依据系统需求分析,进行系统模块设计,实现了以DEM数据为主的地形分析子系统。系统构成包括基本功能模块、表面分析模块、水文分析模块和扩展模块四部分。开发系统兼容性好并满足了数据格式的交换;分析功能丰富,包括了地表参数的计算、可视域分析、填挖方分析功能、流域水文信息管理及其地形湿度指数计算等。该系统操作简单,用户界面方便,实用性强。我们最终的软件开发结果可完全用于地形相关分析,具有重要的实践意义。
关键词:DEM;地形分析;水文分析;Arc-Engine
前言
随着地理信息技术的不断发展,地形分析技术已经日益完善,并且已经在自然灾害的防治、城市规划和城市环境的保护、天气预报等众多领域得到了广泛的应用。地形分析过程主要以栅格数据为数据源。栅格DEM是地形制图和地形分析的常用输入数据,可派生出如坡度、坡向、剖面曲率、平面曲率、多种地形因子,是地形分析和各领域应用的基础。DEM不仅仅是地形信息的简单表达,其更深层的价值在于它所蕴含的各种地形地貌结构信息,近年来许多学者以DEM数据为基础地理数据提取了各种地形信息。石春力等利用90m分辨率的天津市蓟县的沙河流域DEM数据提取了该地区的河网等水文因子;刘学军等通过理论与数据独立的方法研究了DEM的结构特征对提取坡度、坡向的影响。张东方,胡昆以数字高程模型在分布式水文模型中的研究应用,同时进行了流向、流量、河网提取等操作。朱庆等实现了一种从规则格网DEM数据中提取汇流区域及其子区域准确高效的算法。彭思岭等人以山东省济南市以现有的31个雨量观测点的雨量数据绘制出了济南市汛期等雨量线。毕华兴等人用TNT-mips地理信息系统工具对日本东北地区池峰山地形进行了研究。宋冰等模拟黄土高原微地形特征对填洼量算法进行了研究。严建钢等利用ArcGIS软件从5m分辨率的陕西省延安市大南沟小流域DEM数中提取了该地区的河道沟系。
基于Arc-Engine的二次开发技术是组件GIS开发重要内容。现已有很多学者开发出了各种高效使用的GIS系统。基于以上阐述,针对各种地形的DEM数据采用组件式二次开发技术开发出实用高效地形分析系统,面向不同的用户提供地形和水文方面的数据信息服务,以支持用户更多掌握了解地形信息,为相关部门决策提供支持。
1.系统需求分析与设计
1.1需求分析
在系统开发前通过大量的调研和用户沟通后确定了用户对该系统需求。该系统的需求主要有:实现数据的基本读取操作,进行有效的空间插值操作,并在水文分析及地形湿度指数模拟方面发挥重要作用。
1.2开发环境
基于Arc-Engine的地形分析子系统采用的二次开发组件是ESRI公司的ArcEngine10.0。Arc-Engine中具有数目众多的COM对象,在NET环境下將这些对象组织到不同的命名空间中,Arc-Engine是进行GIS二次开发的优秀平台,Arc-Engine的对象与开发平台选择无关,它由一组核心ArcGIS Objects包组成,可以用于各种编程接口中。在Arc-Engine组件的支持下,可实现诸多地理信息分析的功能。
1 3模块设计
根据系统构建的目的,系统分为四大模块:基本操作模块、表面分析模块、水文分析模块以及扩展模块。
2.地形分析子系统的表面分析
2.1坡度分析
坡度表示地表的倾斜程度,在地貌学中定义为地面上一点水平方向与该点切线方向的夹角。地面上任意一点的坡度值均介于0°~90°之间,坡度值大小与地势的走向有关,随着坡度值的增大地势逐渐变陡,反之平缓。本文利用Arc-Engme类库中的Geo-Analyst类提供的Slope接口来提取坡度栅格。通过坡度分析的结果如图2.1。
根据对坡度分析的对比发现海拔较低的地区坡度较小,随着海拔的升高坡度呈递增趋势。根据分析结果可知研究区域的坡度值集中在15°~35°之间,小于15°和大于35°的区域占研究区的面积较少。坡度小于15°的区域地势比较平缓适宜人类居住和从事各类生产活动,同时这一地区的自然生态环境状况深受人类活动的影响。在坡度大于35°的区域山地特征显著,人类活动较少,植被覆盖面积较大。
2.2坡向分析
把地面任意一点真北方向与该点切平面的法线在水平面的投影之间的夹角称为坡度。本文利用Arc-Engine类库中的Geo-Analyst类提供的Aspect接口来提取坡向栅格。该接口只需输入表面栅格数据就可以提取出坡向栅格。输出栅格所表示的坡向是输入栅格中每个像元到期相邻像元方向上的最大下坡方向,因而也可以将坡向理解为坡度的方向。输出的坡向栅格中坡向值介于0°~360°之间,其中正北方向为0°按顺时针方向计算。最终的坡向提取结果如图2.2所示。
2.3视域分析
视域是指由地表的一个或多个观测点可以看到的地表范围,在地表分析中将提取视点可视范围的过程称为视域分析。本文通过Arc-Engine类库中的Geo-Analyst类提供的Visibility接口提取视域栅格,该接口需要输入栅格参数分别是表面栅格数据,输入的观察点据和使用者所选用的操作类型。基于栅格的视域分析的三个步骤第一步在观测点和目标之间创建视线;第二步沿着视线用插值方法生成中间点的高程值,这些中间点通常是格网线与实现的交点。第三步判断中间点的高程值与视点高程值的大小,若小于视点高程则这点可视,如果大于视点高程则不可视。将所有的栅格像元作为目标像元执行以上步骤,直到将每一个像元归为可视或不是像元。最终的可视域分析结果如图2.3所示。endprint
2.4等值线分析
本文中通过Arc-Engine类库中的Geo-Analyst类提供的Counter接口来完成等值线操作。Counter接口需要输入两个参数分别是表面栅格数据、z因子。图2.4是由输入的高程栅格数据提取等高线的结果。提取等高线的过程是将栅格数据中高程值相等的栅格像元连接起来生成等高线。由分析结果中等值线的分布可以获取整个表面分析值变化情况,若等值线的间距比较小,则表示整个区域研究值的变化比较小,等值线间距比较大,则表示研究区域研究值变化比较大。应用该系统设置参数其起始等值线为0,等值线间距为10m。
系统通过对等值线的分析处理,结果显示在山脊点附近等高线比较密集,地势变化较大,在沟谷地区等高线非常稀疏,地势几乎无变化。
3.基于DEM数据的流域水文分析
水文分析是进行流域尺度徑流模拟以及地表水量平衡等研究的重要过程。本模块利用Arc-Engine类库中Spa-tial-Analyst类中的水文处理接口提取流域的各种水文因子。最终实现了研究区的河网分级。水文分析过程主要包括:填洼;流向及流量计算;汇流计算;河网分级。基于坡度数据与汇流累计数据,我们提取了研究区的地形湿度指数数据。
3.1填洼
DEM是对三维地表的有效模拟方法,但是由于数据内插方法的精度不足或是对喀斯特地貌等真实地形的模拟需要,导致DEM数据表面存在洼地。但是在提取流向前必须对地表这些洼地进行填洼处理,防止在提取流向时出现水流由高程低的栅格像元流向高程比其高的栅格像元。提取流向前对流域栅格执行填洼的目的是填充栅格数据表面的洼地,除去数据的小瑕疵。本文利用Arc-Engine类库中Spatial-Analyst类中Fill接口完成了表面DEM数据的填洼操作。
3.2水流方向
水流方向是指水流离开栅格像元时指向其周围的哪个邻接像元。目前学者已经确定的能够提取水流方向的算法有很多,每一种算法的都有各自不同的前提或假设,因此提取出的流向精度也不尽相同。基本算法思想可以大致分为单流向算法(SFD)和多流向算法(MFD)以及其他算法。本文采用Arc-Engine类库中Spmial-Analyst类中Flow-Direc-ton接口,以无洼地DEM数据为源数据提取出了研究区域的水流方向栅格数据。
3.3汇流累计量
本文利用采用Arc-Engine类库中Spatial Analyst类中Flow Accumulation接口以D8算法计算得到的流向数据为源数据计算获取流量栅格。栅格中每个像元的流量是由流经此像元所有栅格的流量累加得到的。Flow Accumulation接口需要输入两个参数分别是流向栅格数据和可选择性输入的权重栅格数据。由分析结果可知地势变化比较大的地区,特别是山脊线的两侧汇流累积量比较大,而在地势起伏比较小的地区特别是地势平坦的地区汇流累积量比较小。
3.4河网分级
本系统利用Arc-Engine类库中Spmial Analyst类中的Stream-Order接口完成了栅格河网的分级操作。研究区域内河网密集,用Strahler分级方法得到的分析结果如图3.1所示,统计图中数据得出Strahler分级方法可以得到95条河网弧段,其中一级弧段74条占总弧段数的77.8%二级弧段21条占总弧段数的22.2%。其中二级弧段中只有5条中段没有一级弧段相交,其余16条二级弧段中断均有一级弧段与其相交占二级弧段总数的68.6%。Shreve分级法将该河网数据分为6级其中二级弧段11条、三级弧段3条、四级弧段2条、五级弧段和六级弧段各1条(如图3.2所示)。由河网分级结果和高程数据变化可以看出研究区域地势起伏度比较大,河流数目众多但汇流程度较小。
4.地形湿度指数
以数字高程模型(DEM)为基础提取地形湿度指数,该因子综合了地形和土壤特性对土壤水分分布的影响,在流域土壤水分空间分布研究中具有重要的应用价值。因而可以认为地形湿度指数是一种对径流长度、流域面积等的定量描述。本文以Arc-Engine类库中Spmial Analyst类中能够支持栅格运算表达式的IMapAlgebraop接口完成了地形湿度指数的提取操作。地形湿度模拟计算结果如图4.1所示。
综上分析可知,研究区的地形湿度指数介于6到20之间,坡度越小地形湿度指数越大;汇流累计量越大地形湿度指数越大。也就是说坡度较小且汇流累积量较大的区域土壤容易饱和而产流。沟谷地区地势平缓坡度介于0°~10°之间且汇流量较大位于2000左右,地形湿度指数较大,大于19;在高程变化较大的坡顶地区坡度介于36°~45°之间,但是该区域汇流累积量较小,地形湿度指数位于6.5左右。因而该地区沟谷地区容易汇流,但是坡度较大山脊附近不易汇流。
5.结语
本系统以Visual Studi02010作为开发平台,结合Ale-Engine强大的图形显示、数据处理功能和良好的可视化效果及空间分析模块中的各种空间分析接口,利用C#语言实现了地形分析子系统的开发。
本文基于Arc-Engine的地形分析子系统开发基本实现了水文分析以及地形分析的相关应用,然后针对系统的算法优化以及分析模块的优化均有待进一步提高。不可否认的是,基于Arc-Engine的组件式二次开发可在地学相关分析及矿产类应用中发挥巨大作用。endprint