当前位置: 首页 > news >正文

gis怎么提取水系_ArcGIS水文分析实战教程(7)细说流域提取

ArcGIS水文分析实战教程(7)细说流域提取

本章导读:流域是水文领域上是频繁出现的词汇,贯穿整个水文专业。由于流域涉及到的空间范围非常的广,一般不能通过测量的方式去精确划定。而且流域这一词在水利行业上属于管理上的词汇,用作划分水利单位的职能范围。而水文学上的流域就相对来说更倾向于学术,其指向在地理学上称分水岭,在空间物理上叫集水区。在GIS中对于流域的划分,都是基于DEM数据计算,这样能够比较精准(相对于人为的划定区域)的确定流域范围,为水文结果提供合理的论证。本章会从一些实际的问题出发去说明流域提取要注意的一些问题。BY 李远祥

流域提取

流域提取,或者叫集水区提取,是根据河流、流向和出水口共同确定其空间范围。从水文学和地理学上,其区域必须是与河流有对应关系。所以,在流域提取之前,必须指定河流。河流数据可以从DEM数据提取,也可以从已有的矢量河流中转化过来。

如果河流数据是从DEM中提取的,那么对河流的划定就一定要仔细,必须要对流量栅格进行正确的估算,以确保河流的尺度,这样通过符合研究口径的河流才能正确的提取出所对应的流域。流量计算和河流提取,可以分别参考《ArcGIS水文分析实战教程(5)细说流向与流量》和《ArcGIS水文分析实战教程(6)河流提取与河网分级》的内容。

上述的这种情况一般都是比较理想的。所谓的理想,就是河流和流域数据都是出自于同一份DEM,原则上重合得比较好。但如果研究的对象是已经划定的矢量河流,从矢量河流转换成栅格河流去参与计算,两份数据之间会存在差距,往往会导致结果偏差很大。

如果是研究小流域,这些小流域一般都是一些不显眼的小河流,甚至很少能在地图上查找出来,那么通过DEM方式直接提取流域,能很好的解决问题。

提取的办法很简单,ArcGIS提供了【分水岭】工具用作划定流域。其帮助说明对于GIS人员和水文人员都非常难理解,甚至很多人都没法搞懂其中的参数。下图是该工具的界面:

1460000010003469

【流向栅格数据】比较好理解,但下面的【输入栅格数据或要素倾泻点数据】就有点让人摸不着头脑。

要素倾泻点数据一般就是出水口,在上一章中笔者已经讨论过可以通过河流分级之后提取了和流线,并利用【要素折点转点】工具来提取其终点作为出水口。但如果这种方式提取的出水口必须要使用【捕捉倾泻点】工具来重新校正。

而现实中大多数水文研究者对于这个参数,使用的就是其水文站点数据,因为他们研究的对象一般都是针对水文站的数据确定其上游流域,以寻找上游流域与水文站数据之间的关联关系。这种模式同样是需要通过【捕捉倾泻点】工具来校正。因为数据不是来自于DEM本身,需要现在DEM中找到最近的流量值最大的点才作为计算用的倾泻点。

捕捉倾泻点

正是其他参与计算的数据,不管是河流还是倾泻点(出水口、水文站) ,也不管是栅格还是矢量的,只要他们不是从同一份DEM中分析出来的,都需要跟DEM进行校正,这个校正的过程就是【捕捉倾泻点】。其目的是要找到这个点附近的区域流量栅格中的最大值,确保这个流量值是由上游区域贡献的流量。否则,实际输出的倾泻点数据有可能与之叠加的流量栅格不是该区域的最大值,导致出现非常细小的流域面。

来看【捕捉倾泻点】工具的一些参数设置,如下图

1460000010003470

第一个参数【输入栅格数据或者倾泻点数据】,这里可以是倾泻点的栅格数据和矢量数据。如果是矢量数据,工具会自动转化为栅格数据之后进行计算。站位水文分析角度来说,这个数据一般就是水文站位置、研究的断面位置。

【蓄积栅格数据】指的就是流量统计的数据。

【捕捉距离】是个可选参数,但这个参数一定要注意,默认值为0,意思是找到附近最大的流量的栅格作为该点对应的出水口位置。但如果输入的点刚好在多条河流的附近,就有可能捕捉到其他河流对应的流量栅格。 所以,必须对自身参与计算的数据进行摸底,特别是多个倾泻点距离较近的时候,必须设置合理的搜索距离。

1460000010003471

只要数据没有原则上的错误,捕捉到的结果必定在原来倾泻点的附近,如下图,捕捉到的像元点都在倾泻点的边上,是一个栅格数据。

1460000010003472

分水岭

【分水岭】工具的使用前面介绍过,有了上一步的捕捉到的倾泻点数据,【分水岭】工具就非常容易使用了。

先来看第一种情况,倾泻点是外部数据,与原始DEM数据没有关系的情况。利用捕捉倾泻点工具先生成新的倾泻点数据,然后才利用分水岭工具进行分析。

1460000010003473

结果如下图,流域范围被提取出来。

1460000010003474

只要再使用【数据管理】工具箱里面的【栅格转面】就可以将该流域的矢量面提取出来。

这种应用场景一般是水文分析人员为了研究该断面数据与上游流域的关系,也就是说通过检测该断面的水文数据及时发现上游流域的一些变化,反之亦然。而实际上流域提取大多数都是因为这个原因而做的。

如果这种情况没有做【捕捉倾泻点】,则会出现什么情况?由于提供的出水口位置与DEM数据的误差,这个点有可能偏在一些非常小的河流的流量最大值上。假如斯特拉勒分级方法的话,那这个点就有可能落在1级河流的出水口位置。如下图,之所以出现很多非常小的面,原因就在于此。

1460000010003475

如果不懂原理,那么永远都不可能知道这里出错的原因。这也就是笔者为什么要花大量的篇幅来说明D8算法和流量统计等原理。

另一种情况是比较理想的情况,没有采集回来的倾泻点数据,所有的数据都从DEM数据中提取。

这种情况的研究对象就不是上游流域了,而是整个河流的流域。一般来说大江大河不会用这种方式去做研究,毕竟国家大江大河的监控是非常专注的,按照目前的情况,大江大河很难出现特大洪涝灾害。洪涝灾害一般多发在中小河流。而对中小河流的流域进行提取,有助于分析其集水区对河流的影响。所以,利用DEM来提取流域(非指定外部倾泻点),一般用作小流域的提取。

其做法还是要回到【分水岭】工具中。【分水岭】工具的第一个参数,在第一种情况中我们已经使用了捕捉倾泻点后的栅格数据。使用栅格数据作为输入,除了可以是倾泻点,还可以是执行过河流链接的栅格数据。详细做法可以参考《ArcGIS水文分析实战教程(6)河流提取与河网分级》

只要明白原理,就可以非常清楚了。在水文学上,河流链接之后会生成河流链,其中也包括了河源、节点和出口。虽然ArcGIS工具的河流链接数据是只是包含了节点,但由于在链接之前已经做了河网分级,所以会带有其出口信息(也就是说这个工具自动识别了倾斜点数据)。其设置如下

1460000010003476

最终生成的结果与河流的数量是一致,如下图所示

1460000010003477

同样,如果需要转为矢量面数据,还需要使用【栅格转面】工具进行转换。如下图

1460000010003478

1460000010003479

总结

流域提取是一门学问,并不是GIS课堂上所说的只是通过DEM提取出对应的流域面就完事。流域作为水文学上基础的研究对象,其意义在于水文的相关性,流域面作为空间范围,可以圈定该空间位置的一切地理要素,时空要素与水系之间的关系。所以,必须要了解其使用的场景和实际的作用,才可以提取出这些基础的数据。

如果读者对水文分析感兴趣的话,可以持续关注CSDN的GIS制图乐园,以及微信公众号【GIS制图乐园】。BY 李远祥

相关文章:

  • ios long转float_iOS设计中字符串NSString与int及float之间的转换
  • mysql show命令用不了_MySQL SHOW 命令的使用
  • php和mysql的英文文献_毕业论文通过PHP访问MySQL外文文献
  • java字符相似_java字符串相似度算法
  • java反编译工具jadclipse_java反编译工具jad及jadclipse
  • java watch service_Java WatchService API 教程
  • deepin 15.4 mysql_Deepin 15.4 编译安装 LNMP(PHP 5.6.31 + Nginx 1.12.1 + MySQL 5.6.36)
  • java if else嵌套_替代嵌套If Else语句
  • oom java问题_Java OOM问题如何排查
  • java 视图对象_java – 从不同资源创建视图对象的最佳方法(模式?)
  • java where函数_CONSTRUCT / WHERE中的SPARQL函数
  • mysql上机考试_SQL上机试题及步骤
  • 2d unity 多物体 射线_Unity 2D射线与 3D射线 UI射线
  • java数据如何显示在HTML界面_ajax接收后台数据在html页面显示
  • java mqtt broker_mqtt broker集合
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【知识碎片】第三方登录弹窗效果
  • Codepen 每日精选(2018-3-25)
  • create-react-app项目添加less配置
  •  D - 粉碎叛乱F - 其他起义
  • hadoop集群管理系统搭建规划说明
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • isset在php5.6-和php7.0+的一些差异
  • Iterator 和 for...of 循环
  • Java小白进阶笔记(3)-初级面向对象
  • Java应用性能调优
  • LeetCode29.两数相除 JavaScript
  • Python爬虫--- 1.3 BS4库的解析器
  • Redis 中的布隆过滤器
  • Sass Day-01
  • Spring核心 Bean的高级装配
  • Vue 重置组件到初始状态
  • Zsh 开发指南(第十四篇 文件读写)
  • 复杂数据处理
  • 机器学习 vs. 深度学习
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 深度学习入门:10门免费线上课程推荐
  • 通信类
  • 温故知新之javascript面向对象
  • 新书推荐|Windows黑客编程技术详解
  • 用简单代码看卷积组块发展
  • 国内开源镜像站点
  • 我们雇佣了一只大猴子...
  • ​Python 3 新特性:类型注解
  • ​马来语翻译中文去哪比较好?
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #QT(TCP网络编程-服务端)
  • $jQuery 重写Alert样式方法
  • (4)事件处理——(7)简单事件(Simple events)
  • (差分)胡桃爱原石
  • (二十四)Flask之flask-session组件
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (离散数学)逻辑连接词