原文towardsdatascience.com/stream-ordering-how-and-why-a-geo-scientist-sometimes-needed-to-rank-rivers-on-a-map-360dce356df5?sourcecollection_archive---------4-----------------------#2024-02-14学习如何在矢量图层上获取 Strahler 或 Shreve 排序https://medium.com/mik.sarafanov?sourcepost_page---byline--360dce356df5--------------------------------https://towardsdatascience.com/?sourcepost_page---byline--360dce356df5-------------------------------- Mikhail Sarafanov·发布于面向数据科学 ·6 分钟阅读·2024 年 2 月 14 日–https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b6d08cd7cac722dd95e78caad843f3e4.png预览图片由作者提供亲爱的读者在本文中我将深入探讨一个令人兴奋的水文学话题。我将从这张图片开始https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/860173911eb3c2ea27e50b39ae2388a3.png图 1. 河流在地图上的两种表示方式a 与 b图片来源作者免责声明本文旨在为面临使用地理信息系统GIS对河流矢量图层进行排名问题的地理学家以及那些曾在地图上看到“漂亮河流”但不完全知道它们如何制作的人们提供帮助。我们将一起逐步探索空间数据如何在 GIS 应用中表示河流网络结构如何分析以及可以使用哪些可视化技术。现在问题是哪一张地图看起来更美观——对我来说下面的那一张b。实际上从常识的角度来看第二种可视化方式也更为准确。流入河床的支流越多河流就越宽广和充盈。例如世界上最大的一条河流之一——尼罗河在其源头高山地区几乎看不出是一条强大的河流而在其河口随着每一公里向海洋流去河流吸收了越来越多的支流水量也变得越来越充沛。上方所示的地图图 1b是基于河流网络的结构信息制作的。在这篇文章中我将讨论如何获取有关河流的这些附加信息以及可以为此目的使用的工具。什么是河流让我们从解释河流信息如何表示开始。在制图学和地理科学中河流通常作为一个线性矢量图层表示每个河流段以带有某些特征的线条表示。例如段长、地理坐标对象的几何形状、地面类型、平均深度、流速等动画 1。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/55068a35de90356381313aa1ade96dac.png动画 1. 空间对象的线性矢量图层。重要提示个别线性段的几何形状可以通过大量点来定义而不是仅仅通过两个点作者提供。所以通常来说如果你在地图上看到一条河流你会看到一组这些简单的几何原始元素属性表中的单独行它们组合成一个大的系统。可以使用不同的颜色来可视化存储的特征见图 2。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1c5302b9689deb29c28beeec5131de7d.png图 2. 使用颜色可视化河流段图片来源作者可视化使用的工具可以是编程语言或专门的应用程序如ArcGIS专有软件或QGIS开源软件。河流结构关于河流的属性表中的信息可以通过不同的方式收集来自遥感数据、探险、测量仪器和水文站。然而关于河流结构的信息通常是在专家看到地图上整个系统的样子时最后一刻才会指定。例如研究人员可以自行在矢量图层描述中添加一列给每个河段分配一个等级见图 3。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/44b3f232e3f8edf3ee8868145d211fa3.png图 3. 添加新字段并使用大小进行可视化图片来源作者现在我们可以看到这张图像与文章开头的地图图 1b相似。但问题随之而来可以使用什么原则来分配这些值——答案是有很多。水文中有几种公认的水流等级系统——请参阅水流等级维基页面或论文Stream orders。以下是我在工作中使用的一些方法见图 4。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9f67eff28fcf357c19220ae1925efb8d.png图 4. 水文中流域排序的几种方法图片来源作者为何如此现在是时候回答为什么要使用这种排序系统的问题了。我们可以区分两个原因可视化——使用等级作为线性对象在地图上的大小属性可以创建漂亮的地图见图 1后续分析。可以将河流网络结构的知识与其他特征相结合进行进一步分析例如识别以下模式图 5。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/08030d53fc988b7eea3d1fe7e26893f6.png图 5. 流速与 Shreve 顺序的关系图像来源作者如何使用现有工具分配流域顺序对于大型系统手动排名是非常困难的因此已经创建了专门的流域顺序工具。有两种根本不同的方法使用栅格数据数字高程模型进行流域顺序分配在矢量图层上进行流域顺序分配。上面我们描述了如何给矢量图层分配顺序。然而空间数据通常以另一种格式表示——栅格矩阵图 6。数字高程模型每个像素有特定大小的矩阵例如 90 米乘 90 米并且每个单元格中存储的海拔值特别常见。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c0caa3bc20ec5ffa801383943e028a75.png图 6. 数字高程模型DEM作为栅格图层。常用于计算流向并进而确定流域顺序图像来源作者栅格图层数字高程模型 — DEM用于计算流向矩阵和流量积累。例如ArcGIS 中的流域顺序空间分析工具就是基于这一原理工作。在本文中我不会详细描述这种算法的工作原理因为在官方文档中有很好的可视化和描述如果你想了解更多请查看流向功能页面。以下是我列出的一些可以使用栅格数据来获取 Strahler 顺序的工具ArcGIS: 使用 ArcGIS 从数字高程模型DEM计算流域顺序QGIS: 在 QGIS 中计算 Strahler 流域顺序GRASS: r.stream.order 工具。然而这一切都需要大量的栅格数据处理。如果你已经有了一个矢量图层该怎么办呢例如如果你有一个从 OpenStreetMap 加载的河流网络矢量图层就会出现这种情况。接下来我会告诉你如何在 QGIS 中获得 Shreve、Strahler 和拓扑顺序的矢量图层四年前在我们的工作中我和同事们提出了一种算法它允许我们仅基于矢量图层和最终点河流系统的终点流入湖泊/海洋/海洋的地方来计算Shreve、Strahler和Topological顺序。该算法的第一个版本在我在 Medium 上的第一篇文章中进行了描述“基于图形的河流网络段排名算法用于地理信息分析”擦去一滴怀旧的泪水。最近我终于有时间写了一些更清晰的文档并准备了插件更新。在 QGIS 中进行水流排序时可以使用 Lines Ranking 插件。使用时需要加载矢量图层将其重新投影到所需的度量投影并指定最终点你可以直接点击地图——将获得以下结果图 7。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6974d9721fa58198b9fdc5ccf7030004.png图 7. 使用矢量图层和 QGIS Lines Ranking 插件对鄂毕河进行的拓扑水流顺序现在亲爱的读者你已经更深入地了解了水文学中的水流排序主题并学会了如何使用不同的工具从原始数据栅格或矢量中获得它。一旦掌握了河流结构的信息你就可以制作出美丽清晰的可视化或者通过将获得的信息与其他特征结合继续进行分析。有用的链接Lines ranking 插件文档linesranking.readthedocs.io/en/latest插件源代码的仓库github.com/ChrisLisbon/QGIS_LinesRankingPlugin关于水文学中水流顺序的讲座由 Mikhail Sarafanov 提供