水文分析(转)

来源:互联网 发布:单片机hex文件 编辑:程序博客网 时间:2024/04/24 20:35

 转自:http://zsj860213.blog.163.com/blog/static

    水文分析是DEM数据应用的一个重要方面。利用DEM生成的集水流域和水流网络,成为大多数地表水文分析模型的主要输入数据。表面水文分析模型应用于研究与地表水流有关的各种自然现象如洪水水位及泛滥情况,或者划定受污染源影响的地区,以及预测当某一地区的地貌改变时对整个地区将造成的影响等,应用在城市和区域规划、农业及森林、交通道路等许多领域,对地球表面形状的理解也具有十分重要的意义。这些领域需要知道水流怎样流经某一地区,以及这个地区地貌的改变会以什么样的方式影响水流的流动。 基于DEM的地表水文分析的主要内容是利用水文分析工具提取地表水流径流模型的水流方向、汇流累积量、水流长度、河流网络(包括河流网络的分级等)以及对研究区的流域进行分割等。通过对这些基本水文因子的提取和基本水文分析,可以在DEM表面之上再现水流的流动过程,最终完成水文分析过程。 本章主要介绍ArcGIS水文分析模块的应用。ArcGIS提供的水文分析模块主要用来建立地表水的运动模型,辅助分析地表水流从哪里产生以及要流向何处,再现水流的流动过程。同时,通过水文分析工具的应用,也可以有助于了解排水系统和地表水流过程的一些基本的概念和关键的过程,以及怎样通过ArcGIS水文分析工具从DEM数据上获取更多的水文信息。 图11.1 ArcToolBox中的 水文分析模块 ArcGIS9将水文分析中的地表水流过程集合到ArcToolbox里,如图11.1所示。主要包括水流的地表模拟过程中的水流方向确定、洼地填平、水流累计矩阵的生成、沟谷网络的生成以及流域的分割等。 本章1至5节主要是依据水文分析中的水文因子的提取过程对ArcGIS中的水文分析工具逐一介绍。文中所用的DEM数据在光盘中chp11文件夹下的tutor文件夹里面,每个计算过程以及每一节所产生的数据存放在tutor文件夹的result文件夹里面,文件名与书中所命名相同,读者可以利用该数据进行参照联系。第6节主要是提供了三个使用水文分析工具以及水文分析思想的实例。 11.1 无洼地DEM生成 DEM被认为是比较光滑的地形表面的模拟,但是由于内插的原因以及一些真实地形
1
(如喀斯特地貌)的存在,使得DEM表面存在着一些凹陷的区域。那么这些区域在进行地表水流模拟时,由于低高程栅格的存在,从而使得在进行水流流向计算时在该区域的得到不合理的或错误的水流方向,因此,在进行水流方向的计算之前,应该首先对原始DEM数据进行洼地填充,得到无洼地的DEM。 11.1.1 水流方向提取 水流方向是指水流离开每一个栅格单元时的指向。在ArcGIS中通过将中心栅格的8个邻域栅格编码,水流方向便可以其中的某一值来确定,栅格方向编码如图11.2所示。 图11.2 水流流向编码 例如:如果中心栅格的水流流向左边,则其水流方向被赋值为16。输出的方向值以2的幂值指定是因为存在栅格水流方向不能确定的情况,此时须将数个方向值相加,这样在后续处理中从相加结果便可以确定相加时中心栅格的邻域栅格状况。 水流的流向是通过计算中心栅格与邻域栅格的最大距离权落差来确定。距离权落差是指中心栅格与邻域栅格的高程差除以两栅格间的距离,栅格间的距离与方向有关,如果邻域栅格对中心栅格的方向值为2、8、32、128,则栅格间的距离为2的开平方根,否则距离为1。 ArcGIS中的水流方向是利用D8算法,也就是最大距离权落差(最大坡降法)来计算水流方向的。具体计算步骤如下: 1. 在ArcMap中用左键单击ArcToolbox图标,启动ArcToolbox。 2. 打开水文分析模块。启动ArcToolbox,展开Analysis Tools工具箱,打开hydrology工具集。 3. 双击Flow Direction工具,打开如图11.3所示水流方向(Flow Direction)计算对话框。 (1) Input surface data文本框中选择输入数据dem。 (2) Output flow direction raster文本框中命名计算出来的水流方向文件名为flowdir,并选择保存路径。 (3) 在Force all edge cells to flow outward(Optional)前的复选框前打钩,所有在DEM数据边缘的栅格的水流方向全部是流出DEM数据区域。默认为不选择。这一步为可选步骤。 图11.3 水流方向Flow Direction计算对话框 (4) drop raster输出。drop raster是该栅格在其水流方向上与其临近的栅格之间的高
2
程差与距离的比值,以百分比的形式记录。它反映了在整个区域中最大坡降的分布情况。这一步为可选步骤。 (5) 单击OK,进行水流方向计算过程。 (6) 计算完成后,计算出的水流方向数据如图11.4所示。 11.1.2 洼地计算 洼地区域是水流方向不合理的地方,可以通过水流方向来判断那些地方是洼地,然后再对洼地进行填充。有一点必须清楚的是,并不是所有的洼地区域都是由于数据的误差造成的,有很多洼地区域也是地表形态的真实反映,因此,在进行洼地填充之前,必须计算洼地深度,判断哪些地区是由于数据误差造成的洼地而哪些地区又是真实的地表形态,然后在进行洼地填充的过程中,设置合理的填充阈值。 图11.5 洼地计算对话框 1. 洼地计算 (1) 双击hydrology工具集中的Sink工具,弹出洼地计算对话框,如图11.5所示。 (2) 在Input flow direction raster文本框中,选择水流方向数据flowdir。
3
(3) 在Output raster文本框中,选择存放的路径以及重新命名输出文件为sink。 (4) 单击OK进行洼地计算。结果如图11.6所示,深色的区域是洼地。 图11.6 计算出来的洼地区域 2. 洼地深度计算 (1) 双击hydrology工具集中的watershed工具,弹出流域计算对话框,如图11.7所示,用来计算洼地的贡献区域。 图11.7 洼地贡献区域计算对话窗口(watershed) (2) 在Input flow direction raster文本框中选择水流方向数据flowdir,在Input raster or feature pour point文本框中输入洼地数据sink,在pour point field文本框中选择value。 (3) 在Output raster文本框中设置输出数据的名称为watershsink。 (4) 单击OK,进行洼地贡献区域的计算。显示结果如图11.8所示。
4
(5) 计算每个洼地所形成的贡献区域的最低高程。双击spatial analysis tools工具箱中zonal工具集下的zonal statistic工具,弹出如图11.9所示的分区统计对话框。 1) 在Input raster or feature zonal data文本框中,选择洼地贡献区域数据watershsink; 2) 在Input value raster文本框中输入希望进行统计分析的数据层,现在需要统计洼地贡献区域的最低高程,选dem作为value raster。 3) 在Output raster文本框中将输出数据文件命名为zonalmin,存放路径保持不变。 4) 统计类型选择。在统计类型选择的下拉菜单中有软件所提供的一些统计类型:分别是在分带区域中统计的每一个分带的平均值(mean)、最大值(maximum)、最小值(minimum)、分带中的属性值的变化值(rang)、标准差(std)以及总和(sum)。这里选择最小值作为统计类型。 以上设置完毕之后,单击OK,完成计算。 图11.9 分区统计对话框 (6) 计算每个洼地贡献区域出口的最低高程即洼地出水口高程。双击spatial analysis tools工具箱中zonal工具集下的zonal fill工具,弹出如图11.10所示的分区统计对话框。在Input zone raster文本框中选择watershsink,在Input weight raster
5
文本框中选择dem,在Output raster文本框中将输出数据文件名改为zonalmax,然后单击OK,进行运算。 (7) 计算洼地深度。加载Spatial Analyst模块,点击Spatial Analyst模块的下拉箭头,点击raster calculator菜单工具,如图11.11,在文本框里面输入sinkdep = ( [zonalmax] - [zonalmin]),然后点击evaluate进行计算。 对于以上(4)、(5)步的计算,可以利用spatial analysis tools工具箱中的map algebra工具集的multi map output工具进行计算。双击spatial analysis tools工具箱中的map algebra工具集下的multi map output工具,弹出图11.12的对话框。 对于第(4)步,在文本框中输入:E:\chp11\tutor\result\zonalmin = zonalmin (E:\chp11\tutor\result\watershsink, E:\chp11\tutor \dem); 对于第(5)步,在文本框中输入:E:\chp11\tutor\result\zonalmax = zonalfill (E:\chp11\tutor\result \watershsink, E:\chp11\tutor \dem); 经过以上七步的运算,就可到如图11.13所示的所有洼地贡献区域的洼地深度。通过对研究区地形的分析,可以确定出哪些是由数据误差而产生的洼地,哪些洼地区域又是真实的反映地表形态,从而根据洼地深度来设置合理的填充阈值,使得生成的无洼地DEM更准确的反映地表形态。 图11.11 洼深度计算 图11.10 洼地贡献区域边缘最低高程计算对话框 图11.12 map algebra计算窗口 6
11.1.3 洼地填充 洼地填充是无洼地DEM生成的最后一个步骤。在通过洼地计算之后,知道了原始的DEM上是否存在着洼地,如果没有存在着洼地,那么原始DEM数据就直接可以用来进行以后的河网的生成、流域的分割等。而洼地深度的计算又为在填充洼地时设置填充阈值提供了很好的参考。 1. 双击hydrology工具集中的fill工具,弹出如图11.14所示的洼地填充对话框。 2. 在Input surface raster文本框中,选择需要进行洼地填充的原始DEM数据。 在Ou图11.14 洼地填充对话框 输出文件名为filldem。 Z limit——填充阈值,当值之后,在洼地填充过程中,那些洼地深度大于阈值的地方将作为真实地形保留,不予填充;系统默认情况是不设阈值,也就是所有的洼地区域都将被填平。 单击OK,进行
7
洼地填充的过程是一个反复的过程。当一个洼地区域被填平之后,这个区域与附近区域再进行洼地计算,可能有会形成新的洼地,所以呢,洼地填充是一个不断反复的过程,直到最后所有的洼地都被填平,新的洼地不再产生为止。因此,当数据量很大时,这个过程会持续一段时间。 11.2 汇流累积量 在地表径流模拟过程中,汇流累积量是基于水流方向数据计算而来的。对每一个栅格来说,其汇流累积量的大小代表着其上游有多少个栅格的水流方向最终汇流经过该栅格,汇流累积的数值越大,该区域越易形成地表径流。由水流方向数据到汇流累积量计算的过程如图11.16所示。 水流方向数据 汇流累积数据 图11.16 流水累积量的计算 8
1. 基于无洼地DEM的水流方向的计算。计算过程同上一节水流方向的计算一样,使用的DEM数据是无洼地DEM。将生成的水流方向文件命名为fdirfill。 2. 汇流累积量的计算,如图11.17所示。在得到水流方向之后,可以利用水流方向数据来计算汇流累积量。双击hydrology工具集中的的fill accumulation工具,打开汇流累积量计算对话框。 图11.17 汇流累积量计算窗口 (1) 在Input flow direction raster文本框中,选择由无洼地DEM生成的水流方向栅格数据fdirfill。 (2) 在Output accumulation raster文本框中,将数据文件名修改为flowacc。 (3) 在Input weight raster文本框中输入配权数据,配权数据一般是表示降水、土壤以及植被等对径流影响的因素分布不平衡而形成的,更能详细模拟该区域的地表特征。如果无数据,系统默认为所有的栅格配以相同的权值1,那么计算出来的汇流累积量的数值就代表着该栅格位置流入的栅格数的多少。 (4) 点击OK,完成计算。结果见图11.18所示。 图11.18 通过计算生成的汇流累积量数据 9
11.3水流长度 水流长度通常是指在地面上一点沿水流方向到其流向起点(终点)间的最大地面距离在水平面上的投影长度。水流长度是水土保持上的重要因子之一,当其他条件相同时,水力侵蚀的强度依据坡的长度来决定,坡面越长,汇聚的流量越大,其侵蚀力就越强,水流长度直接影响地面径流的速度,从而影响对地面土壤的侵蚀力。因此,对于水流长度的提取和分析,在水土保持工作中有很重要的作用。目前水流长度的提取方式主要有两种,一种是顺流计算,一种是朔流计算。顺流计算是计算地面上每一点沿水流方向到该点所在流域出水口最大地面距离的水平投影;朔流计算者是计算地面上每一点沿水流方向到其流向起点间的最大地面距离的水平投影。 对于水流长度的提取,在ArcGIS中,水流长度的提取提供了以上两种方向上的水流长度的提取方式。 1. 双击hydrology工具集中的的flow length工具,弹出水流长度的计算对话框,如图11.19所示,用来计算水流长度的大小。 2. 在Input flow direction raster文本框中选择基于无洼地DEM提取出的水流方向数据fdirfill。 3. 在Output raster文本框中选择并命名输出的水流长度栅格数据文件名称。分别进行顺流计算和朔流计算,输出的数据文件命名为Flowlendown和Flowlenup。 图11.19 flow length的计算窗口 4. 计算方向提供了两种选择,分别为Downstream(顺流计算)和Upstream(朔流计算)。 5. 输入计算配权栅格数据。那么对于flow length来说,Downstream记录着其沿着水流方向到下游流域出水口中最长距离所流经的栅格数;Upstream则记录着其沿着水流方向到上游栅格的最长的距离的栅格数。 6. 当设置完成后,点击OK完成。两种方向计算出的结果如图11.20和图11.21所示。 10
11.4河网的提取 基于DEM的水文分析,其中一个目的就是以DEM数据为基础,经过一些计算和处理而得到地表的水流网络。目前常用的河网提取方法是采用地表径流漫流模型计算:首先是在无洼地DEM上利用最大坡降的方法得到每一个栅格的水流方向;然后利用水流方向栅格数据计算出每一个栅格在水流方向上累积的栅格数,即汇流累积量,所得到的汇流累积量则代表在一个栅格位置上有多少个栅格的水流方向流经该栅格;假设每一个栅格处携带一份水流,那么栅格的汇流累积量则代表着该栅格的水流量。基于上述思想,当汇流量达到一定值的时候,就会产生地表水流,那么所有那些汇流量大于那个临界数值的栅格就是潜在的水流路径,由这些水流路径构成的网络,就是河网。 11.4.1 河网的生成 1. 河网的生成是基于汇流累积矩阵的,首先应该计算出研究区域的汇流累积矩阵。汇流累积矩阵的计算见11.2节,这里用11.2节计算的汇流累计栅格数据flowacc作为基础数据。 2. 设定阈值。阈值的设定在河网的提取过程是很重要的,并且直接影响到河网的提取结果。阈值的设定应遵循科学、合理的原则。首先应该考虑到研究的对象,研究对象中的沟谷的最小级别,不同级别的沟谷所对应的不同的阈值;其次考虑到研究区域的状况,不同的研究区域相同级别的沟谷需要的阈值也是不同的。所以,在设定阈值时,应充分对研究区域和研究对象进行分析,通过不断的实验和利用现有地形图等其它数据辅助检验的方法来确定能满足研究需要并且符合研究区域地形地貌条件的合适的阈值。 3. 栅格形式的河网的形成。栅格河网的生成是利用map algebra工具集中的multi map output工具中的con命令或者setnull命令计算的,他们都是基于栅格进行有条件的查询并将查询结果赋予新的栅格数据中。计算的思想是利用所设定的阈值进行整区域的分析并生成一个新的栅格图层,在生成栅格数据中将那些汇流量大于设定阈值的栅格的属性值设定为1,而小于或等于设定阈值的栅格的属性值设定为无数据。栅格河网的生成是利用设定一个河网生成阈值,也可以利用ArcMap中的Spatial Analysis分析模块下的Raster Calculator来计算出所有大于设定阈值的栅格,这些栅格就是河网的潜在位置。将计算出来的栅格河网命名为图11.22 栅格河网转换成矢量结构对话框 11
streamnet。 4. 栅格河网矢量化。在hydrology工具集中提供了将上一步生成的栅格河网进行矢量化的工具stream to feature,通过stream to feature就可以得到矢量形式的河网图。栅格数据的矢量化时,选择的是最短的路线绘制成线。双击hydrology工具集中的stream to feature工具,如图11.22。 在Input stream raster文本框中,选择streamnet;在Input flow direction raster文本框中,输入由无洼地计算出来的水流方向数据fdirfill;在Output polyline features 文本框中将输出的数据命名为streamfea。生成的矢量数据如图11.23所示。 图11.23 栅格河网转换成的矢量河网框 11.4.2 stream link的生成 Stream link是记录着河网中的一些节点之间的连接信息,主要记录着河网的结构信息。如图11.24所示,Stream link的每条弧段连接着两个作为出水点或汇合点的结点,或者连接着作为出水点的结点和河网起始点。 因此通过Stream link的计算,即得到每一个河网弧段的起始点和终止点。同样,也可以得到该汇水区域的出水点。这些出水点具有很重要的水文作用,对于水量、水土流失等研究具有重要意义。而且,这些出水口点的确定,也为进一步图11.24 Stream link示意图 弧段结点 12
的流域分割准备了数据。 1. Stream link基于水流方向数据和栅格河网数据计算,首先在ArcMap里将水流方向数据fdirfill和栅格河网数据streamnet打开。 2. 双击hydrology工具集中的stream link工具,弹出如图11.25所示的stream link计算的对话框。在Input stream raster文本框中选择streamnet,在Input flow direction raster文本框中选择fdirfill。在Output raster文本框中将输出数据名称设为StreamLink。然后点击OK进行运算。 经过Stream link计算之后,它将栅格河网分成不包含汇合点栅格河网片段,并将片断进行记录,在属性表中除了记录该片段的ID号之外,还记录着每个片段所包含的栅格数。根据河流的流量、形态等因素进行河流的分级。而基于DEM提取的河网的分支具有一定的水文意义。利用地表径流模拟的思想,不同的级别的河网首先是它们所代表的汇流累积量也不同,级别越高的河网,其汇流累积量也越大,那么在水文研究中,这些河网往往是主流,而那些级别较低的河网则是支流。河网的分级同样可以研究水流的运动、汇流模式,对于水土保持等也具有重要的意义。 在ArcGIS的水文分析中,提供两种常用的11.27所示,对于Strahler分级来说,它是将所有河网弧段中没有支流河网弧段分为第1级,两个1级河网弧段汇流成的河网弧段为第2级,如此下去分别为第3级,第4级,一直到河网出水口。在这种分级中,当且仅当同级别的两条河网弧段汇流成一条河网弧段时,该弧段级别才会增加,对于那些低级弧段汇入高级弧段的情况,高级弧段的级别不会改变,这也是比较常用的一种河网分级方法。对于Shreve分级而言,其第1级河网的定义与Strahler分级是相同的,所不同的是以后的分级,两条1级河网弧段汇流而成的河网弧段为2级河网弧段,那么对于以后更高级别的河网弧段,其级别的定义是由其汇入河网弧图11.26 StreamLink的属性框 图11.25 StreamLink计算对话框
13
段的级别之和,如图所示,当一条3级河网弧段和一条4级河网弧段汇流而成的新的河网弧段的级别就是7,那么这种河网分级到最后出水口的位置时,其河网的级别数刚好是该河网中所有的1级河网弧段的个数。 同Stream link的计算一样,stream orde据的基础上,首先在ArcMap里将水流方向数据fdirfill和栅格河网数据streamras打开。 双击hydrology工具集中的stream order工具,弹出stream order计算的对话框。在Input stream raster文本框中选择streamnet,在Input flow direction raster文本框中选择fdirfill。分别用Strahler分级和Shreve分级对河网进行分级,改输出数据名称分别设为Streamostr和Streamoshr,单击OK完成。计算出的两种河网分级分别如图11.28和图11.29所示。 对于stream linm to feature工具将其转化成矢量数据进行进一步的研究和分析。 14
11.5流域的分割 流域又称集水区域,是指流经其中的水流和其它物质从一个公共的出水口排出从而形成一个集中的排水区域,如图11.30所示。用来描述流域还有例如:流域盆地(basin)、集水盆地(catchment)或水流区域(contributing area)。Watershed数据显示了区域内每个流域汇水面积的大小。汇水面积是指从某个出水口(或点)流出的河流的总面积。出水口(或点)即流域内水流的出口,是整个流域的最低处。流域间的分界线即为分水岭。 分水线包围的区域称为一条河流或水系的流域,流域分水线所包围的区域面积就是流域面积。即流域是指一条河流或水系的集水区域,河流从这个集水区域获得水量的补给。任何一个天然的河网,都是由大小不等的、各种各样的水道所联合组成的,而每一个水道都有自己的特征,自己的汇水范围,即自己的流域面积,较大的流域往往是由若干较小的流域所联合组成的。 11.5.1 流域盆地的确定 流域盆地是由分水岭分割而成的汇水区域。它通过对水流方向数据的分析确定出所有相互连接并处于同一流域盆地的栅格。流域盆地的确定首先是要确定分析窗口边缘的出水口的位置,也就是说,在进行流域盆地的划分中,所有的流域盆地的出水口均处于分析窗口的边缘。当确定了出水口的位置之后,其流域盆地集水区的确定类同于洼地贡献区域的确定,也就是找出所有流入出水口的上游栅格的位置。 在ArcGIS中,流域盆地的计算是利用hydrology工具集中的basin工具来进行计算的。 1. 双击hydrology工具集中的basin工具,打开流域盆地计算的对话框。如图11.31所示。 2. 输入数据为水流方向数据fdirfill,设置输出数据文件名为basin。 3. 点击OK完成。 15
为了使计算结果更容易理解,可以将上一节计算出的矢量河网数据在同一个窗口中打开,进行辅助分析。如图11.32所示。所有的流域盆地的出口都在研究区域的边界上,利用流域盆地分析,可以从很大的一个研究区域中选择感兴趣的流域并将该流域从整个研究区域分割出来进行单独的分析。 图11.31 流域盆地计算的对话框 图11.32 计算出的流域盆地(线状图形为矢量河网数据) 11.5.2 汇水区出水口的确定 经过上一步得到的流域盆地是一个比较大的流域盆地,在很多的水文分析中,还需要基于更小的流域单元进行分析,那么就需要将这些流域从大的流域中分解出来,那么就需要进行流域的分割。而流域的分割首先是要确定小级别的流域的出水口的位置,小级别的流域出水口的位置可以用spatial analysis tools工具箱下的hydrology工具集中的snap pour point的工具寻找。它的思想是利用一个记录着point点栅格数据,在这个数据层中,那些属性值存在的点作为潜在的出水点,在该点位置上在指定距离内在汇流累积量的数据层上搜索那些具有较高汇流累积量栅格点的位置,这些搜索到的栅格点就是小级别的流域的出水点。也可以利用已有的出水点的矢量数据。 如果没有出水点的栅格或矢量数据,可以用已有河网数据进一步生成的stream link数
16
据作为汇水区的出水口数据。因为stream link数据中隐含着河网中每一条河网弧段的联结信息,包括弧段的起点和终点等,相对而言,弧段的终点就是该汇水区域的出水口所在位置。 11.5.3 集水流域的生成 对于低级的集水区的生成,可以使用hydrology工具集中的watershed工具生成。其思想如下:先确定一个出水点,也就是该集水区的最低点,然后结合水流方向数据,分析搜索出该出水点上游所有流过该出水口的栅格,直到所有的该集水区的栅格都确定了位置,也就是搜索到流域的边界,分水岭的位置。 1. 首先在ArcMap中打开水流方向数据fdirfill和流域出口点数据streamlink,因为集水流域的计算需要流域出口点的位置数据和水流方向数据。水流方向数据使用11.2节基于无洼地DEM计算出的fdirfill数据。对于流域出口点数据,可以使用11.4节计算出的streamlink数据,因为在它的属性中具有每条河网弧段信息,而这些河网弧段的形成则是有其附近的栅格构成的贡献区域的汇流结果,这个贡献区域也就是该河网弧段的集水区域。 2. 双击hydrology工具集中的watershed工具,打开集水区域(贡献区域)计算的对话框。分别在水流方向数据和出水口数据输入的文本框中选择fdirfill和streamlink数据,在输出数据中将输出的文件名改为watershed。 3. 点击OK,进行集水区域的计算,计算结果如图11.33所示,为了更好的表现流域的分割效果,在此窗口中还将上面计算的流域盆地和矢量河网的数据打开,从结果中可以知道,通过streamlink作为流域的出水口数据所得到的集水区域是每一条河网弧段11.33 17
集水区域,也就是要研究的最小沟谷的集水区域,它将一个大的流域盆地按照河网弧段将其分为一个个的小的集水盆地。