ArcGIS:根据DEM数据提取区域水系

利用DEM数据提取区域水系是常见水文分析应用。可通过ArcGIS对高程DEM数据进行水文分析,为地表水流建模获取水系数据。文章详细介绍了使用ArcGIS从DEM数据中提取区域水系的步骤,包括填洼、流向分析、流量分析等。

前言

利用DEM数据提取区域水系是常见的水文分析应用,为了获取区域的矢量水系数据,我们可以通过ArcGIS对高程DEM数据进行水文分析,为地表水流建立模型,进而获取到该地的水系数据,DEM数据精度越高,获取到的水系数据精度也就越高。以下介绍如何用ArcGIS提供的工具提取水系。

0、认识需要哪些工具

提取水系需要用到的工具有:

  • 填洼
  • 流向分析
  • 流量分析
  • 栅格计算器
  • 栅格河网矢量化
    在这里插入图片描述

1、填洼

  • 洼地的形成有两种情况:一种是真实的地理情况,如盆地,湖泊,喀斯特地貌等;另外一种是人为因素,造成的地形误差。如果不进行填洼,在进行水流方向分析计算时,往往会得到不合理甚至错误的水流方向,对后面汇流累计量,河流提取等操作也会造成影响。
    在这里插入图片描述
  • 填洼结果,使得部分高程负数校正
    在这里插入图片描述

2、流向分析

  • 流向分析是为了计算水流会向哪个方向流动,为计算流量做准备。
### 使用 ArcGISDEM 数据提取小流域分水岭的步骤 基于无凹陷点的 DEM 数据,可以通过以下方法和工具在 ArcGIS提取小流域分水岭。此过程涉及多个水文分析工具,包括填充、流向计算、流量累积、河网提取、定义倾泻点以及分水岭分析等。 #### 1. 准备 DEM 数据 确保输入的 DEM 数据已处理为无凹陷点(Sink-Free DEM)。如果原始 DEM 数据存在凹陷点,可以使用 **Fill** 工具进行填充[^1]。 ```python arcpy.gp.Fill_sa("DEM", "Filled_DEM") ``` #### 2. 计算流向 利用填充后的 DEM 数据,通过 **Flow Direction** 工具生成流向栅格数据。该工具将根据地形特征计算水流的方向,并输出流向栅格文件(FlowDir.tif)。 ```python arcpy.gp.FlowDirection_sa("Filled_DEM", "FlowDir") ``` #### 3. 计算流量累积 使用 **Flow Accumulation** 工具计算每个像元的累积流量,生成流量累积栅格数据(FlowAccum.tif)。这一步有助于识别河网的位置。 ```python arcpy.gp.FlowAccumulation_sa("FlowDir", "FlowAccum") ``` #### 4. 提取河网 设定一个阈值(Threshold),将累积流量大于该阈值的像元定义为河道。使用 **Con** 工具或 **Raster Calculator** 工具提取河网数据(Stream.tif)。 ```python arcpy.gp.Con_sa("FlowAccum", "1", "Stream", "#", "\"Value\" >= 100") ``` #### 5. 定义倾泻点(流域出口点) 在任意工作文件夹中新建倾泻点 Shapefile 文件(OutPoint.shp),命名为“OutPoint.shp”。此点应尽量标在上一步提取出来的河道水系线上,作为指定的流域出口点[^2]。 ```python # 手动创建 OutPoint.shp 并添加坐标 ``` #### 6. 提取分水岭 打开 **集水区工具**(Spatial Analyst 工具/水文分析/集水区),输入流向栅格数据(FlowDir.tif)、倾泻点 Shapefile(OutPoint.shp),输出分水岭 Shapefile(Watershed.shp)[^2]。 ```python arcpy.gp.Watershed_sa("FlowDir", "OutPoint.shp", "Watershed") ``` #### 7. 验证与优化 对提取的分水岭结果进行验证,确保其符合实际地形特征。如有需要,可调整阈值或重新定义倾泻点以优化结果。 --- ### 示例代码总结 以下是完整的 Python 脚本示例,用于自动化上述流程: ```python import arcpy # 设置工作空间 arcpy.env.workspace = "C:/path/to/your/data" # 填充 DEM arcpy.gp.Fill_sa("DEM", "Filled_DEM") # 计算流向 arcpy.gp.FlowDirection_sa("Filled_DEM", "FlowDir") # 计算流量累积 arcpy.gp.FlowAccumulation_sa("FlowDir", "FlowAccum") # 提取河网(假设阈值为 100) arcpy.gp.Con_sa("FlowAccum", "1", "Stream", "#", "\"Value\" >= 100") # 创建倾泻点(手动操作) # 提取分水岭 arcpy.gp.Watershed_sa("FlowDir", "OutPoint.shp", "Watershed") ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Oruizn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值