利用水文分析方法提取山脊、山谷线

时间:2024-03-29 18:37:48

1、背景

        作为地形特征线的山音线、山谷线对地形、地貌具有一定的控制作用。它们与山顶点、谷底点以及鞍部点等一起构成了地形起伏变化的骨架结构。同时由于山登线具有分水性,山谷线具有合水性特征,使得它们在地形分析中具有特殊的意义。

2、目的

       了解基于 DEM 水文分析方法提取山脊线和山谷线的原理;

        掌握水流方向、汇流累积量提取原理及方法。

3、 要求

       利用ArcGIS水文分析模块提取出样区的山脊线和山谷线,

4、数据

       25m分辨率的 DEM 数据,区域面积约 140平方千米

(百度网盘链接:https://pan.baidu.com/s/1_DHGzBkmO7ACcksoPcJE9Q 提取码:nq6o )

5、算法思想

       山脊线和山谷线的提取实质上也是分水线与汇水线的提取。因此,可以利用水文分析的方法进行提取。

       对于山脊线而言,由于它同时也是分水线,而分水线的性质即为水流的起源点。所以,通过地表径流模拟计算之后,这些栅格的水流方向都应该只具有流出方向而不存在流人方向,即概格的汇流累积量为零。因此,通过对零值的提取,就可得到分水线,即山脊线。  

        对于山谷线而言,可以利用反地形计算。即利用一个较大的数值减去原始 DEM 数据,得到与原始 DEM地形相反的地形数据,使得原始的DEM 中的山脊变成反地形的山谷,而原始DEM 中的山谷在反地形中就变成了山脊。再利用山脊线的提取方法就可以实现山谷线的提取。但是此方法提取出的山脊和山谷位置有些偏差,可以利用正、负地形加以纠正。 

       DEM永文分析方法提取山脊线和山谷的技术流程如图所示。

利用水文分析方法提取山脊、山谷线

 6、操作步骤

          1,正负地形的提取

              (1)打开原始DEM数据。

              (2)在ArcToolbox中选择【Spatial Analyst 工具】|【邻域分析】|【焦点统计】,打开焦点统计对话框,如图6.1.1所示,利用邻域分析方法以11x11的窗口计算平均值。计算结果命名为meandem,计算结果如图6.1.2所示。

利用水文分析方法提取山脊、山谷线利用水文分析方法提取山脊、山谷线

                                                                             图6.1.1:焦点统计对话框

                                       利用水文分析方法提取山脊、山谷线

                                                                         图6.1.2:焦点统计结果

              (3)点击 【Spatial Analyst 工具】|【地图代数】|【栅格计算器】工具,如图6.1.3所示,对原始 DEM 数据与邻域分析之后的数据 meandem 做减法运算,命名为d_m,其计算结果如图6.1.4所示。

      利用水文分析方法提取山脊、山谷线利用水文分析方法提取山脊、山谷线

                                                                               图6.1.3:栅格计算器

利用水文分析方法提取山脊、山谷线

                                                                                           图6.1.4:计算结果 

              (4)在ArcToolbox中选择【Spatial Analyst 工具】|【重分类】|【重分类】工具,对运算结果进行重分类,分为两级,分级界线为 0,将大于 0 的区域赋值为1(即为正地形),小于 0 的区域赋值为0,命名为zhengdixing;另一次将小于0的区域赋值为1(即为负地形),大于0的赋值为0,命名负地形。操作过程如图6.1.5所示,结果如图6.1.6、图6.1.7所示。现在重分类对话框中选择分类按钮,将类别选为2,在中断值处,将第一个值改为0,点击确定,返回重分类对话框,根据正负地形分别将新值赋为0和1,1和0。

利用水文分析方法提取山脊、山谷线利用水文分析方法提取山脊、山谷线利用水文分析方法提取山脊、山谷线

                                                                                       图6.1.5 :重分类过程

利用水文分析方法提取山脊、山谷线

                                                                             图6.1.6:正地形

利用水文分析方法提取山脊、山谷线

                                                                             图6.1.6:负地形 

          2,山脊线的提取

              (1)洼地填充:在ArcToolbox中选择【Spatial Analyst 工具】|【水文分析】|【填洼】工具,进行原始DEM挖地点填充,选择输入表面栅格数据:dem,将输出数据命名为filldem,因为选择的是将所有洼地全部填充,所有在填充容限 Z limit 为默认值。如图6.2.1所示。

利用水文分析方法提取山脊、山谷线利用水文分析方法提取山脊、山谷线

                                                                                  图6.2.1 :填洼 

              (2) 基于无洼地水流方向计算:在ArcToolbox中选择【Spatial Analyst 工具】|【水文分析】|【流向】工具,计算水流方向,文本框中选择填充过的无洼地 DEM 数据 filldem,将输出的水流方向数据命名为 flowdirfill。过程如图6.2.2所示,结果如图6.2.3所示。

利用水文分析方法提取山脊、山谷线利用水文分析方法提取山脊、山谷线

                                                                          图6.2.2:流向

利用水文分析方法提取山脊、山谷线

                                                                           图6.2.3:流向结果图

              (3汇流累积量的计算:在ArcToolbox中选择【Spatial Analyst 工具】|【水文分析】|【流量】工具,计算汇流累积量。选择flowdirfill 作为输入的水流方向数据;输出数据命名为 flowacc1。如图6.2.4所示。结果如图6.2.5所示。

利用水文分析方法提取山脊、山谷线利用水文分析方法提取山脊、山谷线

                                                                                图6.2.4:流量

利用水文分析方法提取山脊、山谷线

                                                                                图6.2.5:流量结果图

            (4)汇流累积量为零值的提取:在ArcToolbox中选择【Spatial Analyst 工具】|【地图代数】|【栅格计算器】工具,打开栅格计算对话框,在文本框中填写汇流累积量零值的提取公式: facc0 = (flowacc = 0),然后点击 evaluate 进行计算。计算结果为所有的汇流累积量为 0 的栅格,如图6.2.6所示。结果如图6.2.7所示。

           利用水文分析方法提取山脊、山谷线

                                                              图6.2.6  提取汇流累积量为0的值

利用水文分析方法提取山脊、山谷线

                                                             图6.2.7:汇流累积量为0的值

              (5)在 ArcMap 中打开 facc0,发现所提取出的栅格很乱,有很多的地方并不是山脊线的位置,因此应对这个数据进行处理。处理过程可以利用邻域分析的方法,对提取出的汇流累积量等于零值的数据使用滤波器进行 3×3 邻域分析进行光滑处理,处理后的数据命名为 neiborfacc0。如图6.2.8所示。结果如图6.2.9所示


利用水文分析方法提取山脊、山谷线利用水文分析方法提取山脊、山谷线

                                                                          图6.2.8:滤波器

利用水文分析方法提取山脊、山谷线

                                                                         图6.2.9:光滑后的结果

            (6)在ArcToolbox中选择【Spatial Analyst 工具】|【水文分析】|【等值线】工具和【Spatial Analyst 工具】|【水文分析】|【山体阴影】工具,分别生成原始 DEM 的等值线图 ctour 和晕渲图 hillshade。如图6.2.10和6.2.11所示。结果如图6.2.12所示。

利用水文分析方法提取山脊、山谷线利用水文分析方法提取山脊、山谷线

                                                                     图6.2.10 :等值线

利用水文分析方法提取山脊、山谷线利用水文分析方法提取山脊、山谷线

                                                                          图6.2.11 :山体阴影

利用水文分析方法提取山脊、山谷线

                                                                     图6.2.12 :等值线和山体阴影结果图

            (7)打开 neiborfacc0 数据的属性信息,进行重新分类,将分类级别设置为两类,不断的调整分界数据大小,并以由DEM 生成的等值线图和晕渲图为辅助判断数据。在 neiborfacc0 中,属性值越接近于 1 的栅格越有可能是山脊线的位置,这里确定的分界阈值为 0.5541。将进行过二值化的 neiborfacc0 进行重分类为 reneibor,将属性值接近 1 的那一类的属性值赋值为 1,其余的赋值为 0。如图6.2.13所示。结果如图6.2.14所示。

利用水文分析方法提取山脊、山谷线

                                                                   图6.2.13 :重分类

利用水文分析方法提取山脊、山谷线

                                                                                        图6.2.14 :重分类结果

              (8)将重分类过后的 neiborfacc0 数据与正地形数据 zhengdixing 利用 【Spatial Analyst 工具】|【地图代数】|【栅格计算器】进行相乘运算,这样就消除了那些存在在负地形区域中的错误的山脊线。如图 6.2.15所示。然后将计算结果进行重分类,如图6.2.16所示,所有属性不为 1 的栅格属性值赋为NO DATA,就得到了山脊线,结果如图6.2.17所示   

         利用水文分析方法提取山脊、山谷线

                                                           图 6.2.15:栅格计算器山脊线

         利用水文分析方法提取山脊、山谷线

                                                                          图 6.2.16:重分类山脊线

          利用水文分析方法提取山脊、山谷线

                                                                            图 6.2.17:最终山脊线图

          3,山谷线的提取

             (1)【Spatial Analyst 工具】|【地图代数】|【栅格计算器】,打开栅格计算对话框;在文本框中填写反地形的计算公式:fandem =Abs (dem-2000),点击 evaluate 进行计算。计算结果与原始 DEM 地形完全相反的反地形数据,如图6.3.1所示。

          利用水文分析方法提取山脊、山谷线

                                                                             图6.3.1:计算fandem

              (2)反地形计算完毕之后,山谷线的提取就和山脊线的提取步骤一样的,直到最终利用重分类的方法将重新分级的邻域分析后的结果二值化为止。在这里,是不需要对反地形 DEM 进行洼地填充的。计算过程中的数据名称分别为:水流方向数据为 flowdirfan,汇流累积数据为 flowacc2,零值汇流累积量提取数据为 flowacc0fan,对 flowacc0fan 进行均值 3× 3 邻域分析(滤波器)后的结果数据为 nbfacc0fan,并将其分级改为两级,分级阈值为 0.65677。(主要步骤同山脊线的提取基本相同)

             (3)将重分类过后的数据与负地形数据 fudixing 利用 【Spatial Analyst 工具】|【地图代数】|【栅格计算器】进行相乘运算,这样就消除了那些存在在负地形区域中的错误的山脊线。然后将计算结果进行重分类,所有属性不为 1 的栅格属性值赋为NO DATA。就得到了山谷线,如图 6.3.2 所示。

利用水文分析方法提取山脊、山谷线

                                                                                            图6.3.2:最终山谷线

大家发现问题的话,欢迎私信!