制图工具(10)河流流向分析计算

        加载河流(水系线)数据,其数据分布和形态一般如下图所示:

图片

一、需求背景

        在【制图工具(8)河流连通性检查】工具中,我们给出了河流流向错误的检查方法,并在河流流向错误的地方输出位置点和错误类型。相比于最原始的逐条人工检查,已经进步到辅助定位错误的位置和类型,极大的减少了人工干预的工作量。犹如使用步枪狙杀目标而非漫天箭雨。

图片

        直到后来,你希望你的工作效率是这样的:

图片

二、需求分析

        河流连通性检查工具,是从纯河流线段的走向来分析和实现的。工具默认,数据中的绝大多数河流的流向是正确的,可能只需要更改少数的河流流向,且最大限度的保留了数据生产“前辈”的作业成果,不要轻易去推翻它。

        但是,当接收的数据,本身就不靠谱,或者说没法相信她的质量时,你需要的,可能就是推翻它,重新来过……

        你收集获取到的项目数据可能是数十万、数百万的水系线要素,如下图所示:

图片

        这时候,一种能更快速、并能批量解决水系流向的功能需求,就显得异常迫切。

三、河流流向分析计算工具

        河网流向分析计算工具用于解决水系线数据流向错误的问题。工具基于河流流向分析的结果,并提供了“翻转线”的功能,能一次解决河流流向问题。

图片

  3.1 河流连通性检查工具运行过程

图片

        水系线数据,用30米分辨率的DEM 分析后,8624条记录中找到了581条水系流向错误的记录,如下图:

图片

3.2 工具参数说明

图片

注意事项:

分析结果无新的要素类输出,在输入要素内增加“ele_dif”字段,字段值小于0的,为水系流向错误的河段。若输入要素不能改变字段内容时,需提前做好数据备份。

工具输出:

无。

图片

### ArcGIS 中河流和汇水区的分析方法 #### 使用 DEM 数据进行汇水区划分的过程 ArcGIS 提供了一套完整的工具链来完成基于数字高程模型(DEM)的水文分析。通过这些工具可以实现从原始地形数据到最终汇水区划分的结果。以下是具体的分析方法和技术细节: 1. **填充洼地** 地形数据中可能存在一些人为或自然形成的凹陷区域,这会影响水流路径的准确性。因此,在开始任何水文分析之前,通常需要先运行“Fill”工具来移除这些低洼区域[^3]。 2. **计算流向栅格** 填充后的 DEM 可以用来生成流向栅格(Flow Direction)。这是后续所有水文分析的基础,它定义了每个像元的地表水流动方向。使用 “Flow Direction” 工具完成这一操作[^1]。 3. **累积流量栅格** 流向栅格进一步被用于创建累积流量栅格(Flow Accumulation),该栅格表示每个像元上游贡献面积大小。较大的值意味着更多的水量汇聚于此位置,从而有助于识别潜在河道的位置。 4. **河网提取与分级** 设置阈值可以从累积流量栅格中提取出河网矢量图层。“Stream Link” 和 “Stream Order” 等工具可以帮助对所提取出来的河流网络进行编号并赋予不同等级,以便更好地理解其结构特性及其相互关系。 5. **确定汇水边界** 利用上述得到的信息,“Watershed” 工具可以根据指定点位或者线段自动勾勒出对应的分水岭轮廓即汇水区范围。 6. **验证结果精度** 对比实际观测站点的数据以及其他辅助资料校核所得成果的质量如何;必要时调整参数重新执行部分环节直至满足需求为止。 #### 应用场景及意义 水文分析不仅限于理论探讨层面,在实践中有诸多重要用途如评估洪涝风险、寻找最佳灌溉方案以及指导城市扩张规划等方面均发挥着不可替代的作用[^2]。借助 GIS 技术的支持使得复杂繁琐的传统手工绘图方式得以简化优化成为可能。 ```python import arcpy # 定义工作空间 arcpy.env.workspace = r"C:\path\to\your\data" # Fill tool to remove sinks from the DEM filled_dem = arcpy.sa.Fill("input_dem") # Flow direction analysis flow_direction = arcpy.sa.FlowDirection(filled_dem) # Calculate flow accumulation raster flow_accumulation = arcpy.sa.FlowAccumulation(flow_direction) # Stream definition based on threshold value stream_raster = Con(flow_accumulation > 100, 1) # Convert stream raster into vector format streams_vector = arcpy.RasterToPolyline_conversion(stream_raster, "output_streams.shp", simplify=True) # Watershed delineation using pour points or streams as input watersheds = arcpy.sa.Watershed(flow_direction, "pour_points_or_streams") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

craybb

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

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

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

打赏作者

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

抵扣说明:

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

余额充值