详解ArcGIS 水文分析模型构建

news2025/2/24 7:14:39

目录

前言

项目环境、条件

Dem 数据预览

ArcGIS模型构建器

模型搭建

填洼

流向

流量

河流长度

栅格计算器

河流链接

河网分级

栅格河网矢量化

绘制倾泻点

栅格流域提取

集水区

盆域分析

栅格转面

模型应用

导出 py 文件

完善脚本

最终效果

结束语


前言

在地理信息系统(GIS)领域,水文分析是一项至关重要的任务,它涉及到对地表水流动路径、河流网络、流域划分等关键水文特征分析。这些分析对于水资源管理、洪水预警、环境规划以及城市排水系统设计等众多领域都具有重要的应用价值。

本文旨在探讨ArcGIS中水文分析的全过程,并展示如何构建一个可复用的水文分析模型。通过本文的学习和实践,读者将能够深入了解ArcGIS在水文分析方面的应用,掌握从数据预处理到模型构建、从模型运行到结果输出的整个流程。此外,本文还将介绍如何将ArcGIS模型脚本化,以提高模型的复用性和自动化程度。

在接下来的章节中,我们将详细介绍水文分析的各个步骤,包括资料背景的准备、操作中可能出现的问题及注意事项、分析框架的梳理、水文模型的搭建、模型思维和图形化界面的构建等。通过这些内容的学习,读者将能够全面掌握 ArcGIS 水文分析的相关知识和技能。

项目环境、条件

  • ArcGIS 10.8 中文包
  • 已开启 Spatial Analyst Tools 分析工具
  • Win 10 数据集 30 m dem 栅格数据集 

 ArcGIS 10.2 也几乎一样,部分工具可能由翻译问题,建议初学者完全按照本文的文档结构进行。

Dem 数据预览

DEM(Digital Elevation Model,数字高程模型)是一种用于表示地表地形起伏的数字模型。它通过规则格网的矩阵形式,记录每个格网单元的高程值,从而在计算机中构建出地形的三维模型。DEM 是地理信息系统(GIS)中重要的空间数据类型之一,广泛应用于地形分析、水文模拟、城市规划、地质灾害评估等多个领域。 Dem 可以通过地理空间数据云、QGIS 插件、CAD 地形文件生产等多种方式获取。此前有介绍,本文不多赘述。

image.png

ArcGIS模型构建器

ArcGIS模型构建器是Esri公司开发的ArcGIS软件中的一个强大工具,它允许用户通过图形化界面来创建、编辑和运行一系列自动化的GIS分析模型。模型构建器的核心优势在于能够将复杂的GIS分析流程简化为一系列可视化的步骤,使得用户无需编写代码即可完成复杂的空间分析任务。 可以在空白文件夹下,点击按钮打开,也可以在文件夹内,右键打开。 

image.png

 建议像笔者一样,建立好文件夹框架,依次新建文件数据库-工具集-模型。 

image.png

 在模型构建器中,数据类型如下,本文将用到项目数据、工具、派生数据和值等类型。 

image.png

 将数据、工具等可以直接拖入模型界面中,非常方便。

模型搭建

填洼

dem-填洼-fill 

填洼(Fill)是去除 dem 中的洼地(sinks)或凹陷(depressions)。这些洼地在地形分析中可能会导致错误的水流方向和流域划分,需要通过填洼操作来纠正。 

image.png

image.png

流向

fill-流向-FlowDirection

注意选着 fill 时需要选择蓝色循环的那个,为变量值。 

image.png

image.png

image.png

流量

FlowDirection-流量-fillacc 

image.png

image.png

 根据栅格数值大小隐约能看出河流的线条。 

image.png

 点击栅格可以查询该处的数值,通过这种方法判断最小径流的值,后面有用。 

image.png

河流长度

FlowDirection-河流长度-flowlength 测量方向选择 upstream。

水流长度工具的主要用途是计算给定盆地内最长水流的长度。该度量值常用于计算盆地的聚集时间。这可使用 UPSTREAM 选项来完成。该工具也可通过将权重栅格用作下坡运动的阻抗,来创建假设降雨和径流事件的距离-面积图。 

image.png

image.png

栅格计算器

栅格计算器 或者条件函数 栅格计算器(Raster Calculator) 条件函数 Con(FlowAccu>R,1) 目的是将流量栅格数据中提取河流的部分,公式为"flowacc" >= 1000。 在模型构建器中使用左右%代表变量。新增一个变量,作为流量限值 R,建议通过流量栅格 (flowacc), 点击查询河流的最小栅格,我这里根据实际情况,选择输入 1000。 

image.png

具体公式以自己实验为准,添加变量后,修改为"%fillacc%" >= "%任意值%" 

image.png

 记得点击任意值,添加 1000,这样以后只需要修改这个值,就可以调整河流长度了。 Acc 1000 结果,可见满足条件的,也就是河流为 1,不满足的为 0. 

image.png

河流链接

acc1000+FlowDirection=Streamlink by 河流链接

河流链接的作用有:构建连续的河流网络:河流链接工具能够识别并连接相邻的河流段,确保河流网络在空间上是连贯和正确的。分配唯一标识符:给河流网络中的每个部分分配唯一的 ID,便于管理和进一步分析。这有助于区分不同的河流分支和主流,以及分析它们各自的属性(如流量、长度等)。优化数据结构,减少在模型中处理大量独立线段时的复杂性。

image.png

image.png

河网分级

acc1000+FlowDirection=StreamOrder by 河网分级

河网结构用于识别河流上下级,常见的河网分级方法有斯特拉勒(Strahler)、希科特(Horton)和谢内(Shreve)等。斯特拉勒法是最常用的,它基于河流交汇规则来分配等级,即每次支流汇入时,如果两支流的等级相同,则合并后的河段等级加1;如果不同,则高等级保持不变。 

image.png

image.png

栅格河网矢量化

StreamOrder+FlowDirection=StreamOrder1000 by 栅格河网矢量化

顾名思义,栅格河网矢量化就是将河流网络的栅格数据转换成矢量数据格式,便于分析、可视化及水文建模应用。注意如果要增加河流长度等字段,需要在投影坐标系下进行。 

image.png

image.png

绘制倾泻点

StreamOrder 1000+end=FeatureVert_1000 By要素折点转点 

倾泻点是指汇流区域中具有最低高程的边界象元。它标志着水从一个流域流向另一个流域的出口点,或者是水流离开一个封闭流域(如盆地)的地点。 可以通过要素折点转点生成,也可以根据自己手工增加,形式是一些离散的点。 要素折点转点,顾名思义,指通过矢量线的折点或转点然后生成点,有 all、mindle、end、start、both_ends、dangle(悬挂点,指离散点) 等类型,绘制倾泻选择 end 。

image.png

 倾泻点非常关键,是汇水区分析的重要参数,除了自动生成的点外,可以根据实际需要,添加、删除点。 

河流与倾泻点

栅格流域提取

集水区

FlowDirection+FeatureVert_1000=倾泻点字段为空=watersh

集水区也就是分水岭,根据流向和倾泻点一起做的汇水范围。有倾泻点的会比盆域分析更细,他与倾泻点的点位有很大关系。

image.png

image.png

盆域分析

流向 FlowDirection 盆域分析= basin 盆域分析,也就是流域分析,可以理解为没有倾泻点的大范围流域分析。 

image.png

image.png

栅格转面

RasterT_basin /RasterT_watersh

上述流域栅格,转为矢量图层。用于可视化和计算,作用与栅格河网矢量化类似。 basin/watersh 栅格转面

image.png

子流域范围.png

至此,水文分析基本结束。 调试模型,运行成功。 

image.png

调整模型架构,让连接线不交叉。 

image.png

模型应用

导出 py 文件

可以导出 py 文件,进行模型复用。在 ArcGIS 环境中导入脚本,注意导入前修改绝对地址注意保持一致。另外它基于 ArcPy 模块,一个专为 ArcGIS 设计的空间分析和数据处理库。因此,它的运行环境依赖于 ArcGIS,使用 ArcGIS Python 2.X 环境编写的。不能用于 python 3 中。 经过测试,代码并不能直接使用,需要重新编译后才能使用,后续会出一期 python 水文分析的文章。

完善脚本

  1. 将 dem 输入变为变量,方法为新增变量-栅格数据集,然后选择对应的 dem 位置。
  2. 重命名,将 dem 命名为输入 dem。双精度命名为输入流量下限值。
  3. 完善模型参数,模型-模型属性-参数将输入 dem、输入流量下限值作为必填项

image.png

最终效果

点击模型打开,输入 dem 和下限值,点击运行。 

1716431898456.png

image.png

 运行成功,结果输出在模型内指定的文件夹。 

image.png

 重新运行将会替换结果文件,运行一次后,结果移动出来,再次使用。总之,非常方便。

结束语

本文通过详细探讨ArcGIS水文分析的全过程,不仅展示了如何利用ArcGIS模型构建器来创建一个高效、可复用的水文分析模型,还深入介绍了模型构建器的图形化界面和强大功能。通过本文的学习,读者可以清晰地看到,即使是GIS编程新手,也能通过模型构建器实现复杂的空间分析任务,而无需深入代码层面。

最近,我新开了微信公众号(环境猫 er),坚持发布 python 环境业务解决方案,python 办公自动化,GIS 作图经验,学习笔记,办公技巧,工具分享等内容。 坚持 Bulid in public ,希望与你一起加油,一同成长。 

还可以关注我的博客 wallflowers (maoyu92.github.io)

  

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1682671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【NumPy】关于numpy.loadtxt()函数,看这一篇文章就够了

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

有没有适合女性做的副业?盘点9个适合女生做的赚钱兼职副业

亲爱的女神们,你们是否也想在忙碌的生活中寻找一些额外的乐趣和收入呢?今天,就为大家揭秘九种特别适合女性的副业,让你在追求美丽的同时,也能轻松赚取零花钱,秒变“小金库”! 一、宅富社任务赚钱…

Default Folder X for Mac v6.0.7激活版:高效、智能的文件管理新选择

在快节奏的工作与生活中,高效管理文件已成为每个Mac用户的迫切需求。Default Folder X for Mac正是为了满足这一需求而生,它以其卓越的性能和丰富的功能,为Mac用户带来了前所未有的文件管理体验。 Default Folder X for Mac拥有直观易用的界面…

攻防世界---web---warmup

1、题目描述 2、查看源码,发现有个source.php 3、访问该文件,得到这一串代码 4、分析代码 5、访问hint.php,提示flag在ffffllllaaaagggg这个文件下 6、构造payload ?filesource.php?/../../../../../../ffffllllaaaagggg

Java基础之进制转换和位运算专题

什么是进制? 是数学中的一个概念,就是数据“逢几进位”。 例如:生活中用的计数方法 ---- 十进制。十进制就是数字逢十就要进一位。 例如:一个星期有7天,就是逢七进一;一个月有30天就是逢30进一;…

多尺度注意力机制突破性成果!低成本、高性能兼备

与传统的注意力机制相比,多尺度注意力机制引入了多个尺度的注意力权重,让模型能够更好地理解和处理复杂数据。 这种机制通过在不同尺度上捕捉输入数据的特征,让模型同时关注局部细节和全局结构,以提高对细节和上下文信息的理解&a…

【openlayers系统学习】3.5colormap详解(颜色映射)

五、colormap详解(颜色映射) ​colormap​ 包是一个很好的实用程序库,用于创建颜色图。该库已作为项目的依赖项添加(1.7美化(设置style))。要导入它,请编辑 main.js​ 以包含以下行…

AWS安全性身份和合规性之Identity and Access Management(IAM)

通过AWS Identity and Access Management(IAM),您可以指定谁或什么能够访问AWS中的服务和资源、集中管理精细权限,并分析访问权限以优化跨AWS的权限。 比如一家软件开发公司需要在AWS上创建多个开发人员账户,并对其进…

使用Python生成一束玫瑰花

520到了,没时间买花?我们来生成一个电子的。 Python不仅是一种强大的编程语言,用于开发应用程序和分析数据,它也可以用来创造美丽的艺术作品。在这篇博客中,我们将探索如何使用Python生成一束玫瑰花的图像。 准备工作…

绿联硬盘数据恢复方法:安全、高效找回珍贵数据

在数字化时代,硬盘承载着大量的个人和企业数据,一旦数据丢失或损坏,后果往往不堪设想。绿联硬盘以其稳定的性能和良好的口碑赢得了众多用户的信赖,但即便如此,数据恢复问题仍然是用户可能面临的一大挑战。本文将为您详…

【NOIP2013普及组复赛】题4:车站分级

题4:车站分级 【题目描述】 一条单向的铁路线上,依次有编号为 1 , 2 , … , n 1,2,…,n 1,2,…,n 的 n n n 个火车站。每个火车站都有一个级别,最低为 1 1 1 级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求&#…

Snowy2.x 版本使用 Yaml

代码:https://gitee.com/xiaonuobase/snowy/tree/Snowy2.5.2/ 直接将 properties 转换成 yaml 那么你大概率会遇到下面报错: 然后你上网搜索,发现是 snakeyaml 版本的问题,1.x 版本的 snakeyaml 有安全隐患,要升级到…

C语言程序的编译

目录 一、预处理(预编译) 二、编译 三、汇编 四,链接 在前面讲到了宏的定义,那么宏在编译时候是如何发生替换的?接下来做一下详细的介绍C语言程序的编译过程主要包括以下几个步骤:预处理、编译、汇编和…

【paper】基于分布式采样的多机器人编队导航信念传播模型预测控制

Distributed Sampling-Based Model Predictive Control via Belief Propagation for Multi-Robot Formation NavigationRAL 2024.4Chao Jiang 美国 University of Wyoming 预备知识 马尔可夫随机场(Markov Random Field, MRF) 马尔可夫随机场&#xff…

【Makefile】Makefile 编译 Keil 工程(Linux 环境)

本文使用的开发板为 stm32f103C8T6,使用的驱动库为stm32标准库。 目录 一、软件下载 1、stm32 标准库 2、arm-none-eabi 工具链 3、烧录器 二、Keil 工程改造 1、Keil 工程 2、基本 Makefile 工程 3、添加启动文件 4、添加链接脚本 5、去掉 core_cm3.c 三…

AI整体架构设计4:理解AI云原生

泛AI架构设计这个专栏主要关注围绕着AI运用于实际的业务场景所需的系统架构设计,包括业务数据治理、模型训练与管理、模型部署与调度。整体基于云原生技术,旨在通过开源领域的LLMOps或者MLOps技术,充分运用低代码平台构建高性能、高效率和敏捷…

Spring Cloud Gateway 网关

一. 什么是网关(Gateway) 网关就是一个网络连接到另一个网络的关口。 在同一个项目或某一层级中,存在相似或重复的东西,我们就可以将这些相似重复的内容统一提取出来,向前或向后抽象成单独的一层。这个抽象的过程就是…

简述MyBatis中#{}引用和${}引用的区别

各位大佬光临寒舍,希望各位能赏脸给个三连,谢谢各位大佬了!!! 目录 1.有无预编译 优点 缺点 2.SQL执行的快慢 3.能否被SQL注入 4.参数输入方式 5.总结 1.有无预编译 #{}是有预编译的而${}是没有预编译的&…

深度学习之基于Yolov3的行人重识别

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 行人重识别(Person Re-Identification,简称ReID)是计算机视觉领域…

基础2 JAVA图形编程桌面:探索图形程序的抽象实现

嘿,大家好!我非常高兴又一次有机会与大家相聚,分享新的知识和经验。对于热爱编程和探索新技术的朋友们来说,今天的内容绝对不容错过。我为大家准备了一个详尽的视频教程:《基础2 JAVA 图形编程:主程序调用…