详解ArcGIS 水文分析模型构建

目录

前言

项目环境、条件

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)

  

  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全技术心得体会

网络与信息安全技术心得体会 通过对网络安全这门课程的学习,我进一步了解了网络安全技术的相关知识。大致来说,所谓网络安全指的是对网络系统中各类软硬件和数据信息等提供保护屏障,确保数据信息不受到恶意侵入、窃取等破坏,保证…

modelbox验证expand和condition共用后,是否顺序保持

如图,在expand之后接了个condition,上下两个流中每一对数据buffer的顺序性是否还会保持? 笔者修改让condition在遇到奇数和偶数时的走向不同。 然后在response单元输出每一对数据,发现顺序都不变。且在处理时,输出会卡…

【C语言深度解剖】(16):C语言的文件读写操作

🤡博客主页:醉竺 🥰本文专栏:《C语言深度解剖》 😻欢迎关注:感谢大家的点赞评论关注,祝您学有所成! ✨✨💜💛想要学习更多C语言深度解剖点击专栏链接查看&…

微服务框架Go-kit 01 - 基础示例

一、Go kit简介 Go kit 是一个用于构建可扩展、灵活和可维护微服务的框架和工具集合。它提供了一系列库和组件,涵盖了微服务开发的各个方面,包括服务发现、负载均衡、通信、日志记录、请求跟踪、限流、熔断等。 Go kit 构建微服务时遵循一种类似于传统…

成都爱尔胡建斌院长提醒近视超过600度,记得每年检查眼底!

高度近视是指近视度数在600度及以上的一种屈光不正的状态。 近视的眼睛必定是变形的。在正常情况下,人的眼球类似球体,但随着近视加深,眼轴变长,眼球体积逐渐增大,整个眼球从圆球型向椭圆球形发展,而眼球壁…

HTTPS 协议原理详解

HTTPS 协议原理详解 什么是 HTTPS 协议什么是 SSL/TSL 层HTTPS 使用到的加密算法HTTPS 中 TLS 层的加密过程详解HTTPS 加密过程中用到的数字证书 什么是 HTTPS 协议 HTTPS (全称:Hypertext Transfer Protocol Secure ),是以安全为…

栈(基于动态顺序表实现的栈)

栈的简单介绍 关于栈的性质咳咳 栈:栈是一种特殊的线性表,其中只让在一端插入和删除元素。 后进先出 进行插入删除的那一端叫栈顶,另一端叫栈底 我们实现的栈是基于一个动态顺序表的的栈,会实现栈的 入栈,出栈,获取…

Python知识点复习

文章目录 Input & OutputVariables & Data typesPython字符串重复(字符串乘法)字符串和数字连接在一起print时,要强制类型转换int为str用input()得到的用户输入,是str类型,如果要以int形式计算的话&#xff0c…

Dijkstra算法在《庆余年》中的应用:范闲的皇宫之旅

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

C语言 数组——向函数传递数组

目录 把数组传给函数(Passing Arrays to Functions) 向函数传递一维数组 向函数传递二维数组 数组在学生成绩管理中的应用 例:计算每个学生的平均分 把数组传给函数(Passing Arrays to Functions) 向函数传递一维…

校园霸凌行为监测AI预警系统

校园霸凌行为监测AI预警系统基于AI视觉智能分析算法,校园霸凌行为监测AI预警系统通过已安装的监控摄像头对校园现场画面进行实时监测。校园霸凌行为监测AI预警系统能够自动识别学生的违规行为,包括打架、跌倒、偷偷翻墙、人员聚众、攀高、抽烟等行为&…

【C++】右值引用 移动语义

目录 前言一、右值引用与移动语义1.1 左值引用和右值引用1.2 右值引用使用场景和意义1.3 右值引用引用左值及其一些更深入的使用场景分析1.3.1 完美转发 二、新的类功能三、可变参数模板 前言 本篇文章我们继续来聊聊C11新增的一些语法——右值引用,我们在之前就已…

马蹄集 oj赛(双周赛第二十七次)

目录 栈的min 外卖递送 奇偶序列 sort 五彩斑斓的世界 括号家族 名次并列 栈间 双端队列 合并货物 逆序对 活动分组 栈的min 难度:黄金巴 占用内存:128 M时间限制:1秒 小码哥又被安排任务了,这次他需要要设计一个堆栈,他除了可以满足正常的栈…

Spring Security整合Gitee第三方登录

文章目录 学习链接环境准备1. 搭建基本web应用引入依赖ThirdApp启动类创建index页面application.yml配置访问测试 2. 引入security引入依赖ProjectConfig访问测试 第三方认证简介注册gitee客户端实现1引入依赖application.yml配置文件创建index.html页面启动类InfoControllerPr…

【openlayers系统学习】3.4波段数学计算(计算NDVI)

四、波段数学计算(计算NDVI) 我们已经看到了如何使用 ol/source/GeoTIFF​ 源代码来渲染真彩色和假彩色合成。我们通过将缩放的反射率值直接渲染到红色、绿色或蓝色显示通道中的一个来实现这一点。还可以对来自GeoTIFF(或其他数据瓦片源&…

javaSwing购物系统项目(文档+视频+源码)

摘要 由Java swing实现的一款简单的购物程序,数据库采用的是mysql,该项目非常简单,实现了管理员对商品类型和商品的管理及用户注册登录后浏览商品、加入购物车、购买商品等功能,旨在学习Java 图形界面开发 系统实现 我们先来管理…

20240516-Flyme AIOS 特种兵发布会

目录 1 Flyme AIOS 2 路演功能 2.1 拖拽流转 2.2 任务剧本自定义 2.3 智能体商店 2.4 实况通知 2.5 AI壁纸 3 MYVU 3.1 翻译功能 3.2 AR导航-骑行 3.3 AI语音转文字-科技向善 3.4 Flyme AR-提词器增强 1 Flyme AIOS 1)目标:All in AI&#…

Android:OkHttp网络请求框架的使用

目录 一,OkHttp简介 二,OkHttp请求处理流程 三,OkHttp环境配置 四,OkHttp的使用 1.get网络请求 2.post上传表单数据 3.post上传json格式数据 4.文件上传 5.文件下载 一,OkHttp简介 OkHttp是square公司推出的一…

淘宝api接口是什么意思?api接口申请资格是什么?

淘宝其开放性和灵活性为开发者提供了广阔的创新空间。而淘宝API接口,作为连接淘宝平台与外部应用的桥梁,发挥着至关重要的作用。那么,淘宝api接口是什么意思? 一、淘宝API接口是什么意思? 淘宝API接口,全称…

UNI-APP设置屏幕保持常亮-不熄灭屏幕

前言 最近在实际开发过程中,我们会发现在自己使用的app当中会根据系统无操作熄灭屏幕对于一下需要长时间保持屏幕的业务就很不友好,uni-app也是提供了相应方法加上代码之后-注意app端没报错-不生效就是权限问题-需要设置相对应权限-打自定义包 代码实现…