今天看啥  ›  专栏  ›  进击的码农设计师

基于水文分析方法提取山脊线和山谷线

进击的码农设计师  · 简书  ·  · 2019-10-25 09:08

1.提取思路:

基于水文分析方法提取山脊线和山谷线实际上是对分水线和汇水线的提取。
对于山脊线来说,它同时也是分水线,即水流的起始点。因此通过地表径流计算后,这些栅格的水流方向应该都只具有流出方向而不存在流入方向,也就是说这些栅格的汇流累积量为0,因此通过对0值的提取也就得到了山脊线。
对山谷线的提取,可以对反地形DEM数据提取山脊线,得到的就是实际上的山谷线。

2.基础操作步骤介绍:

2.1 正负地形的提取:
  • 选择【系统工具箱→Spatial Analyst Tools→邻域分析→焦点统计】工具,得到邻域大小为11×11(可以根据需要自行设置)的矩形的平均值数据层Mean_DEM。
  • 选择【系统工具箱→Spatial Analyst Tools→地图代数→栅格计算器】工具,输入 "DEM" - "Mean_DEM" 地图代数公式,得到正负地形分布区域数据层。
  • 选择【系统工具箱→Spatial Analyst Tools→重分类→重分类】工具,将大于0的区域赋值为1,小于0的区域赋值为0,得到正地形数据层zhengdixing。
  • 同样,选择【系统工具箱→Spatial Analyst Tools→重分类→重分类】工具,将大于0的区域赋值为0,小于0的区域赋值为1,得到负地形数据层fudixing。
2.2 山脊线的提取:
  • 选择【系统工具箱→Spatial Analyst Tools→水文分析→填洼】工具,对原始DEM进行洼地填充,得到无洼地DEM数据层Fill_DEM。
  • 选择【系统工具箱→Spatial Analyst Tools→水文分析→流向】工具,对无洼地DEM数据进行水流方向计算,得到流向数据层FlowDir。
  • 选择【系统工具箱→Spatial Analyst Tools→水文分析→流量】工具,计算汇流累积量,得到数据层FlowAcc。
  • 选择【系统工具箱→Spatial Analyst Tools→地图代数→栅格计算器】工具,输入地图表达式 "FlowAcc" == 0 ,提取汇流累积量为0的栅格区域,得到数据层Facc0。
  • 查看上一步得到的数据层Facc0发现其中会有一些稀疏的点也就是说很多地方不是山脊线,因此需要对数据做平滑处理。选择【系统工具箱→Spatial Analyst Tools→邻域分析→焦点统计】工具,得到邻域大小为3×3的矩形的平均值数据层Facc0_Mean。
  • 选择【系统工具箱→Spatial Analyst Tools→表面分析→等值线】工具,生成原始DEM数据的等值线数据层Contour。
  • 选择【系统工具箱→Spatial Analyst Tools→表面分析→山体阴影】工具,生成原始DEM数据的山体阴影晕渲数据层HillShade。
  • 在Facc0_Mean数据上单击右键,选择【属性】选项,进行重新分级,将数据分为两级,这时需要不断地调整分级临界点,并以之前生成的等值线图和山体阴影晕渲图作为辅助判断。属性值越接近1的栅格越有可能是山脊线的位置,最终确定分界阈值。
  • 选择【系统工具箱→Spatial Analyst Tools→重分类→重分类】工具,将上一步进行过二值化的Facc0_Mean数据层进行重分类操作。
  • 选择【系统工具箱→Spatial Analyst Tools→地图代数→栅格计算器】工具,输入地图表达式 "Reclass_Facc0" * "zhengdixing" ,将重分类得到的数据与正地形数据相乘,消除那些存在于负地形区域中的错误的山脊线。
  • 选择【系统工具箱→Spatial Analyst Tools→重分类→重分类】工具,对上一步的结果进行重分类,所有属性不为1的栅格赋值为NODATA,得到山脊线RidgeLine。
2.3 山谷线的提取:
  • 选择【系统工具箱→Spatial Analyst Tools→数学分析→减】工具,使用原始DEM中的最大值减去原始栅格,得到反地形栅格图像。
  • 反地形数据计算完成之后,山谷线的提取与上一小节的山脊线的提取步骤一样(只是不需要对反地形DEM数据进行填挖操作)。

  • 最后得到的数据要与负地形数据相乘,消除那些存在于正地形区域中的错误的山谷线,然后对结果进行重分类,所有属性不为1的栅格赋值为NODATA,得到山脊线ValleyLine。

Reference:
《ArcGIS10地理信息系统空间分析实验教程(第二版)》




原文地址:访问原文地址
快照地址: 访问文章快照