地形鞍部的提取(ArcPy实现)

1、背景

相邻两山头之间呈马鞍形的低凹部分称为鞍部。鞍部点是重要的地形控制点,它和山顶点、山谷点及山脊线、山谷线等构成地形特征点线,对地形具有很强的控制作用。因此,因此,对这些地形特征点、线的分析研究在数字地形分析中具有很重要的意义。同时,由于鞍部点的特殊地貌形态,是的鞍部点的提取方法较山顶点低谷底点更难,目前都还存在一定的技术局限性。

2、目的

利用水文分析的方法提取地形鞍部点;

通过多种GIS空间分析方法的应用,提高对知识的综合运用能力。

3、要求

利用水文分析模块和空间分析模块相应功能提取样区地形鞍部点。

4、数据

25m分辨率的DEM数据,面积约为59平方千米。(数据来自汤国安《arcgis地理信息系统空间分析实验教程(第二版))

5、算法思想

鞍部具有独特的形态特征,可被认为是原始地形中的山脊和反地形中的山脊回合的地方,因此可通过提取正反地形的山脊线并求其交点,获得鞍部点,鞍部点的提取流程如下图所示。

6、模型构建器


注意:这里山脊和反山脊的提取只需要提取到流量等于0的地方。

7、ArcPy实现

# -*- coding: utf-8 -*-
import arcpy
from arcpy.sa import *
print "输入示例:D:\桌面\Chp11\Ex2"
arcpy.env.workspace = raw_input("请输入数据所在的文件绝对路径:").decode('utf-8')
# 变量z(正)开头为山脊线提取的前部分步骤,变量f(负)开头为山谷线提取的前部分步骤
zdx = Test('dem' - FocalStatistics('dem', "Rectangle 11 11 CELL", "MEAN"), 'value>0')  # 求正地形
za = Fill('dem')  # 填洼
zb = FlowDirection(za)  # 流向
zc = FlowAccumulation(zb)  # 流量
zd = Test(zc, 'value=0')  # 条件测试
fa = Abs(Minus(5000, "dem"))  # 作差取绝对值
fb = FlowDirection(fa)  # 流向
fc = FlowAccumulation(fb)  # 流量
fd = Test(fc, 'value=0')  # 条件测试
c = Con(zd*fd*zdx, 1)  # 条件函数
arcpy.RasterToPoint_conversion(c, "鞍部点")  # 栅格转点

8、结果


注:生成的鞍部点有点多,得后续配合等高线数据和晕渲图对矢量形式的鞍部点数据进行编辑,剔除那些处于样区边缘以及内部的伪鞍部点。最后得到的鞍部点数据如下图所示:

实验结束 byebye·~

>>点我跳转 > 文章推荐

posted @ 2021-10-05 23:25  槑孒  阅读(450)  评论(0编辑  收藏  举报