1、实验五 ArcGIS Hydrology 一、 实验准备 1. 水文分析处理步骤: 2. 处理数据:前期实验得到的tingrid.img DEM数据 3. 处理工具:ArcToolBox工具箱中的spatial analyst tools下的Hydrology 二、 无洼地DEM生成 1. 水流方向提取 1) 在 ArcMap 中用左键单击 ArcToolbox图标,启动 ArcToolbox。 2) 打开水文分析模块。启动 ArcToolbox,展开 Analysis Tools 工具箱,打开 hydrology工具集。 3) 双击 Flow Direction 工
2、具,打开如下图所示水流方向(Flow Direction)计算对话框。 a) Input surface data 文本框中选择输入数据tingrid。 b) Output flow direction raster 文本框中命名计算出来的水流方向文件名 为 FlowDir_ting3,并选择保存路径。 c) 在 Force all edge cells to flow outward(Optional)前的复选框前打钩,所有在 DEM 数据边缘的栅格的水流方向全部是流出 DEM数据区域。默认为不选择。 d) drop raster 输出。drop raster 是该栅格
3、在其水流方向上与其临近的栅格之间的高程差与距离的比值,以百分比的形式记录。它反映了在整个区域中最大坡降的分布情况。这一步为可选步骤。 e) 单击 OK,进行水流方向计算过程。 f) 计算完成后,计算出的水流方向数据如下图所示: 2. 洼地计算 1) 洼地计算 a) 双击 hydrology 工具集中的 Sink 工具,弹出洼地计算对话框,如下图 b) 在 Input flow direction raster 文本框中,选择水流方向数据 flowdir_ting3。 c) 在 Output raster 文本框中,选择存放的路径以及重新命名输出文件为 sink_tin
4、g3。 d) 单击 OK 进行洼地计算。结果如下图所示,深色的区域是洼地。 2) 洼地深度计算 a) 双击 hydrology 工具集中的 watershed 工具, 弹出流域计算对话框, 如下图所示,用来计算洼地的贡献区域。 b) 在 Input flow direction raster 文本框中选择水流方向数据 flowdir_ting3,在 Input raster or feature pour point 文本框中输入洼地数据 sink_ting3,在 pour point field 文本框中选择value。 c) 在 Output raster 文本框中
5、设置输出数据的名称为Watersh_Flow1。 d) 单击 OK,进行洼地贡献区域的计算。显示结果如下图所示。 e) 计算每个洼地所形成的贡献区域的最低高程。双击 spatial analysis tools 工具箱中 zonal 工具集下的 zonal statistic 工具, 弹出如下图所示的分区统计对话框。 在 Input raster or feature zonal data文本框中,选择洼地贡献区域数据Watersh_Flow1; 在 Input value raster文本框中输入希望进行统计分析的数据层,现在需要统计洼地贡献区域的最低高程,选 ti
6、ngrid1作为 value raster。 在 Output raster文本框中将输出数据文件命名为 zonalmin,存放路径保持不变。 统计类型选择。在统计类型选择的下拉菜单中有软件所提供的一些统计类型:分别是在分带区域中统计的每一个分带的平均值(mean)、最大值(maximum) 、最小值(minimum)、分带中的属性值的变化值(rang) 、标准差(std)以及总和(sum)。这里选择最小值作为统计类型。 以上设置完毕之后,单击 OK,完成计算。 f) 计算每个洼地贡献区域出口的最低高程即洼地出水口高程。双击 spatial analysis tools 工具箱中
7、 zonal 工具集下的 zonal fill 工具,弹出如图所示的分区统计对话框。 在Input zone raster文本框中选择Watersh_Flow1, 在Input weight raster文本框中选择tingrid1,在 Output raster 文本框中将输出数据文件名改为 zonalmax,然后单击 OK,进行运算。 g) 计算洼地深度。加载 Spatial Analyst 模块,点击 Spatial Analyst 模块的下拉箭头,点击 raster calculator 菜单工具,如下图,在文本框里面输入 sinkdep = ( [zonalmax] -
8、 [zonalmin]),然后点击 evaluate 进行计算。 经过以上七步的运算,就可到如下图所示的所有洼地贡献区域的洼地深度。通过对研究区地形的分析,可以确定出哪些是由数据误差而产生的洼地,哪些洼地区域又是真实的反映地表形态,从而根据洼地深度来设置合理的填充阈值,使得生成的无洼地DEM更准确的反映地表形态。 3. 洼地填充 1) 双击 hydrology工具集中的 fill 工具,弹出如图所示的洼地填充对话框。 2) 在 Input surface raster文本框中,选择需要进行洼地填充的原始DEM数据。 3) 在 Output surface raster
9、文本框中设置输出文件名为Fill-tingrid3。 4) Z limit——填充阈值,当设置一个数之后,在洼地填充过程中,那些洼地深度大于阈值的地方将作为真实地形保留,不予填充;系统默认情况是不设阈值,也就是所有的洼地区域都将被填平。 5) 单击 OK,进行洼地填平计算,计算后的无洼地 DEM 见下图所示。 三、 汇流累积量 1. 基于无洼地 DEM 的水流方向的计算。计算方法同上有洼地的DEM水流方向的计算一样。将生成的水流方向文件命名为 fdirfill。 2. 汇流累积量的计算,如图所示。在得到水流方向之后,可以利用水流方向数据来计算汇流累积量。双击hydrolo
10、gy 工具集中的 fill accumulation工具,打开汇流累积量计算对话框。 1) 在 Input flow direction raster 文本框中,选择由无洼地 DEM 生成的水流方向栅格数据 fdirfill。 2) 在 Output accumulation raster 文本框中,将数据文件名修改为 flowacc。 3) 在 Input weight raster 文本框中输入配权数据,配权数据一般是表示降水、土壤以及植被等对径流影响的因素分布不平衡而形成的,更能详细模拟该区域的地表特征。如果无数据,系统默认为所有的栅格配以相同的权值 1,那么计算出来的汇
11、流累积量的数值就代表着该栅格位置流入的栅格数的多少。 4) 点击 OK,完成计算。结果见下图所示。 四、 水流长度 1. 双击 hydrology 工具集中的 flow length 工具,弹出水流长度的计算对话框,如图所示,用来计算水流长度的大小。 2. 在 Input flow direction raster文本框中选择基于无洼地DEM提取出的水流方向数据 fdirfill。 3. 在Output raster文本框中选择并命名输出的水流长度栅格数据文件名称。 分别进行顺流计算和朔流计算,输出的数据文件命名为 Flowlendown和 Flowlenup。 4
12、 计算方向提供了两种选择,分别为 Downstream(顺流计算)和 Upstream(朔流计算)。 5. 输入计算配权栅格数据。那么对于 flow length 来说,Downstream 记录着其沿着水流方向到下游流域出水口中最长距离所流经的栅格数; Upstream则记录着其沿着水流方向到上游栅格的最长的距离的栅格数。 6. 当设置完成后,点击 OK完成。两种方向计算出的结果图像如下图所示。 Flowlendown Flowlenup 五、 河网的提取 1. 河网的生成 1) 河网的生成是基于汇流累积矩阵的,首先应该计算出研究区域
13、的汇流累积矩阵。汇流。这里用上面计算的汇流累计栅格数据 flowacc 作为基础数据。 2) 设定阈值。阈值的设定在河网的提取过程是很重要的,并且直接影响到河网的提取结果。阈值的设定应遵循科学、合理的原则。首先应该考虑到研究的对象,研究对象中的沟谷的最小级别,不同级别的沟谷所对应的不同的阈值;其次考虑到研究区域的状况,不同的研究区域相同级别的沟谷需要的阈值也是不同的。所以,在设定阈值时,应充分对研究区域和研究对象进行分析,通过不断的实验和利用现有地形图等其它数据辅助检验的方法来确定能满足研究需要并且符合研究区域地形地貌条件的合适的阈值。 3) 栅格形式的河网的形成。栅格河网的生成是利用
14、 map algebra 工具集中的 multi map output 工具中的 con 命令或者 setnull命令计算的,他们都是基于栅格进行有条件的查询并将查询结果赋予新的栅格数据中。计算的思想是利用所设定的阈值进行整区域的分析并生成一个新的栅格图层,在生成栅格数据中将那些汇流量大于设定阈值的栅格的属性值设定为 1,而小于或等于设定阈值的栅格的属性值设定为无数据。栅格河网的生成是利用设定一个河网生成阈值,也可以利用 ArcMap中的 Spatial Analysis 分析模块下的Raster Calculator 来计算出所有大于设定阈值的栅格,这些栅格就是河网的潜在位置。将计算出来的栅
15、格河网命名为streamnet。 方法一:map algebra 生成阈值100的河网 方法二:Raster Calculator生成阈值1000的河网 4) 栅格河网矢量化。在 hydrology 工具集中提供了将上一步生成的栅格河网进行矢量化的工具 stream to feature,通过 stream to feature 就可以得到矢量形式的河网图。栅格数据的矢量化时,选择的是最短的路线绘制成线。双击 hydrology 工具集中的 stream to feature 工具,如下图 5) 在 Input stream raster文本框中, 选择 stream
16、net1;在 Input flow direction raster文本框中,输入由无洼地计算出来的水流方向数据 fdirfill;在 Output polyline features 文本框中将输出的数据命名为 streamfea3。生成的矢量数据如图所示。 2. stream link 的生成 1) Stream link基于水流方向数据和栅格河网数据计算,首先在 ArcMap 里将水流方向数据 fdirfill 和栅格河网数据 streamnet3 打开。 2) 双击 hydrology工具集中的 stream link 工具,弹出如图所示的 stream link 计算的
17、对话框。在 Input stream raster文本框中选择 streamnet3,在 Input flow direction raster文本框中选择 fdirfill。在 Output raster 文本框中将输出数据名称设为 StreamLink。然后点击 OK进行运算。 3) 经过 Stream link 计算之后,它将栅格河网分成不包含汇合点栅格河网片段,并将片断进行记录,在属性表中除了记录该片段的 ID号之外,还记录着每个片段所包含的栅格数。如图所示。 3. 河网分级的生成 1) 同 Stream link 的计算一样,stream order的计算也是基于水流
18、方向数据和栅格河网数据的基础上,首先在ArcMap里将水流方向数据fdirfill和栅格河网数据streamras打开。 2) 双击hydrology工具集中的stream order工具,弹出stream order计算的对话框。在Input stream raster文本框中选择streamnet3,在Input flow direction raster文本框中选择fdirfill。分别用 Strahler 分级和 Shreve 分级对河网进行分级,改输出数据名称分别设为Streamostr 和Streamoshr,单击 OK完成。计算出的两种河网分级分别如下图所示: Strah
19、ler 分级 Shreve 分级 六、 流域的分割 1. 流域盆地的确定 在 ArcGIS中, 流域盆地的计算是利用 hydrology工具集中的 basin 工具来进行计算的。 1) 双击 hydrology工具集中的 basin 工具,打开流域盆地计算的对话框。如下图所示。 2) 输入数据为水流方向数据 fdirfill,设置输出数据文件名为 basin。 3) 点击 OK完成。结果如下 2. 汇水区出水口的确定 经过上一步得到的流域盆地是一个比较大的流域盆地,在很多的水文分析中,还需要基于更小的流域单元进行分析,那么就需要将这些流域从大的流域中
20、分解出来,那么就需要进行流域的分割。而流域的分割首先是要确定小级别的流域的出水口的位置,小级别的流域出水口的位置可以用 spatial analysis tools工具箱下的 hydrology工具集中的 snap pour point 的工具寻找。它的思想是利用一个记录着 point 点栅格数据,在这个数据层中,那些属性值存在的点作为潜在的出水点,在该点位置上在指定距离内在汇流累积量的数据层上搜索那些具有较高汇流累积量栅格点的位置,这些搜索到的栅格点就是小级别的流域的出水点。也可以利用已有的出水点的矢量数据。 如果没有出水点的栅格或矢量数据,可以用已有河网数据进一步生成的 stream li
21、nk 数据作为汇水区的出水口数据。因为 stream link 数据中隐含着河网中每一条河网弧段的联结信息,包括弧段的起点和终点等,相对而言,弧段的终点就是该汇水区域的出水口所在位置. 3. 集水流域的生成 对于低级的集水区的生成,可以使用 hydrology工具集中的 watershed 工具生成。其思想如下:先确定一个出水点,也就是该集水区的最低点,然后结合水流方向数据,分析搜索出该出水点上游所有流过该出水口的栅格,直到所有的该集水区的栅格都确定了位置,也就是搜索到流域的边界,分水岭的位置。 1) 首先在 ArcMap 中打开水流方向数据 fdirfill 和流
22、域出口点数据 streamlink,因为集水流域的计算需要流域出口点的位置数据和水流方向数据。水流方向数据使用基于无洼地 DEM 计算出的 fdirfill 数据。对于流域出口点数据,可以使用streamlink 数据,因为在它的属性中具有每条河网弧段信息,而这些河网弧段的形成则是有其附近的栅格构成的贡献区域的汇流结果,这个贡献区域也就是该河网弧段的集水区域。 2) 双击 hydrology工具集中的 watershed工具,打开集水区域(贡献区域)计算的对话框。分别在水流方向数据和出水口数据输入的文本框中选择 fdirfill 和 streamlink 数据,在输出数据中将输出的文件名改为 watershed。 3) 点击 OK,进行集水区域的计算,计算结果如图所示,为了更好的表现流域的分割效果,在此窗口中还将上面计算的流域盆地和矢量河网的数据打开,从结果中可以知道,通过 streamlink 作为流域的出水口数据所得到的集水区域是每一条河网弧段集水区域,也就是要研究的最小沟谷的集水区域,它将一个大的流域盆地按照河网弧段将其分为一个个的小的集水盆地。






