本章导读:前面的十几个章节几乎都是通过使用 DEM 数据进行水利数据的提取,水利数据都是基于地形进行衍生。但现实中一般很难得到非常精确的 DEM 数据,如果 DEM 的精度不能确保,那么提取出来的数据很难与其他现有的矢量数据进行叠加使用。本章通过 ArcHydro 工具对地形进行修正,修正后的地形则可以与现有的矢量数据进行叠加使用,更加贴合实际情况。 BY 李远祥
前面十几个章节的内容几乎都是围绕 DEM 数据衍生出诸如河流、流域等水利要素。这种做法有它的好处也有它的弊端。
好处是利用地形能够快速的生成河流和流域,便于从自然角度上圈出对应的水文范围;DEM 本身带有地形起伏的信息,而经过流向分析之后,提取出来的自然河流本身带准确的流向,这样可以为后期水文信息化提供了精细而准确的数据来源。
弊端也是非常明显。首先地形数据本身很难获取(至少在国内是这样的情况),包括等值线、高程控制点或者原始的 DEM 数据,这给基于地形的水文分析带来了一定的困扰。虽然网上也可以下载到全球免费的 DEM 数据,但 30 米精度的 DEM 对于大江大河没有太大的问题,对于小河流和小流域,那是在不敢恭维。其次,很多水文单位已经有固定的河流矢量数据(这些河流一般都是通过实际测绘进行标绘的),并且所有的断面数据均基于这些现有的矢量河流数据进行标绘,所以,不论是 DEM 提取的河流还是出水口、河源、节点等都无法跟现有的矢量数据进行叠加使用。
先来看看测绘的河流与 DEM 提取的河流的差异。笔者利用网上免费的 30 米 DEM 数据进行河流的提取,提取结果如下。
再来对比一下通过测量回来的矢量河流
从两图对比可以看出,DEM 计算出来的河流虽然能够查找出一些区域上可能没有测绘的河流,但它生成的河流比较偏平直,细节部分表现不足,这是有 DEM 数据精度导致。
接下来将两个图层叠加对比一下,还是存在一定的偏差的。如下图所示
在不做任何处理的前提下,通过 DEM 衍生出来的水利要素,基本上不能直接使用,它只能反映出一定的河流关系,而不是实际河流的位置。就算 DEM 精度再高,但提取出来的河流与测绘的河流还是两份不一样的数据,始终还是会存在偏差的。
再来看流向的问题。如果使用河流线要素的数字化方向(绘制河流图形时起点和终点决定了其数字化方向)作为河流的流向,那么,DEM 提取的河流的流向是绝对正确的,这根本上不需要到实地去调查(沿海出海的河流受涨潮的影响存在时间的差异)。
下图是基于 DEM 提取的河流,使用地形渲染去显示 DEM ,反映地形的起伏,用箭头符号描述河流线的数字化方向。
可以看到,河流基本上是从地形高的地方流向地形低洼的地区。这说明河流方向是正确的。
再来看同样区域的测绘的河流,其流向很大程度取决于内业标会时的规范性。如果按照河流的自然流向进行标绘,流向当然不会出现问题。但如果只是标绘出图形,而没有考虑流向,那么就会出现下图的情况,河流方向逆反。
如果在后期手动去修改河流流向,不是不可以,但工作量还是比较大的,需要将 DEM 的河流叠加上去作为参考,在编辑状态下修改测绘河流的数字化方向。
如何解决测绘数据与 DEM 衍生数据的使用问题?答案很简单,就是改进地形数据。利用测绘的河流作为参考,写入到 DEM 中,从而实现地形改善,让测绘的河流所在的像元都处于水流的最低点。 这个过程可以理解为将测绘的河流数据刻入到地形中,在地形中形成一条汇水的渠道。
ArcMap 原生的工具中没有提供地形修正的工具,这就必须依赖于外部工具 ArcHydro Tools 。这是一个非常专业的水文分析工具集合,是基于 ArcGIS 平台的扩展。ArcHydro Tools 由来已久,ArcGIS 9.x 就已经有该工具集,而且开发团队会适配每一个版本的 ArcGIS 。可以从官方的下载地址去找到它。地址如下 http://downloads.esri.com/archydro/archydro/ ,从官网中可以看到,其包含了文档、程序包、样例数据等。
在 Setup 项中可以下载到各个 ArcGIS 版本适配的程序。没有区分所谓的 .1 版本,对应的都是大版本号。目前连 ArcGIS Pro 的版本都有。
ArcHydroTools 是一个只有几十兆的安装包,安装完之后可以在 ArcMap 找到工具条和工具箱,与 ArcMap 传统的模式一样,工具与工具箱的工具还是比较对应的。当然,工具箱的话可以制作成为 GP 工具,发布成 GP 服务。
由于 ArcGIS10.1 之后 ArcGIS Server 已经是64位应用程序,所以,如果要在 Server 端发布 GP 服务,32位和64位的 ArcHydroTools 应用都必须安装。
ArcHydroTools 有非常多的工具,这里作详细介绍,关键功能上扩展了原生 Hydro 工具箱中的工具。回到本文的关键问题,如何通过改善地形去生成合适的河流要素。
ArcHydroTools 工具条中在地形处理的工具集合,可以找到 DEM Reconditioning 工具。
这个工具的主要作用是将线要素强加到 DEM 上来修正 DEM 数据。其操作比较简单,就是输入 DEM 以及河流要素,设置一些缓冲值和平滑值,运算之后会将河流刻入到 DEM 中。
其中后面的几个参数分别对应
- Stream Buffer:输入河流的缓冲值: 这是对线性要素进行缓冲的单元格数。
- Smooth drop/raise:如果是正值, 这是线性要素在垂直方向将要下降的值;否则,是线性要素在垂直方向要升高的值。这个值用来把DEM值插入缓冲区(缓冲边界和线性要素之间)。
- Sharp drop/raise: 如果是正值,这是线性要素在垂直方向将要下降的额外值;否则,是线性要素在垂直方向将要升高的额外值。这个结果作用于平滑缓冲插值之上,它用来保护线性要素。
再来看看运行的结果,使用默认的参数值进行计算。
可以看到生成的 AgreeDEM 中,黑色渲染部分基本上就是测绘河流的形状,将其在 DEM 中挖出一道道负值的深沟,这样在做流向分析的时候,水流自然会留到深沟中,形成与测绘河流形状一样的河流。
利用这个修正后的 DEM ,使用同样的河流提取流程和参数进行计算,生成的结果就非常贴合测绘的河流。如下图所示
再来看 DEM 生成的河流与测绘的河流的契合程度如何。下图蓝色线为 DEM 提取的河流,红色线为测绘的河流。
从图上可以看到,DEM 生成的河流基本上与原始河流契合。河流分叉又汇合的两个河段被融合成一个河段,这种情况是由于这两个分叉河段位置上比较靠近,工具的容差值较大造成的。
笔者使用的 DEM 数据为 30 米,按照默认缓冲参数为5个像元,那么改善的距离就是150米,两个河段各150米则距离小于300米的两个河段都会被融合。所以要根据实际的情况去输入一些参数。
对提取的河流显示流向,这一次所有的河流方向都是正确的了,并且与原始河流完全贴合。
接下来再来对比一下 DEM 修正前后的流域。
从两图可以看到 DEM 修正之后,流域面的多边形机会不会出现拉直线的现象。这比较符合分水岭围蔽的实现情况。
DEM 修正之后带来的好处是连锁的,由于加入了测绘的河流进行修正,当调小提取阈值,提取更小的河流时,这些小河流同样会通过地形很好的接入到测绘的河流中,并且河流的形状也更加贴近实际测量值。下图是调整阈值后生成的更小级别的河流。
从图上来看,支流的情况也是比较良好的。
修正了 DEM 之后,意味着可以将 DEM 衍生出来的数据与测绘回来的数据进行共用。这时候加入断面数据进行分析,分析的结果也更加准确。
ArcHydroTools 里面的工具,几乎全部不支持动态投影,这与 ArcMap 原生工具是有一定差异的。所以,在使用工具条或者工具箱工具的时候,输入的数据必须坐标系一致。例如,使用前面所说的 DEM Reconditioning 工具,DEM 与 河流坐标系不一致,工具使用会导致 999999 的错误。工具条工具使用时会弹出诸如
如果出现这些问题,那就需要对参与计算的数据进行坐标转换,确保所有的数据坐标系都一致,这个错误就不再出现了。
利用 ArcHydroTools 中的 DEM Reconditioning 工具,使用测绘的河流数据进行修正 DEM 数据,可以让 DEM 衍生出来的水文要素更加贴近测量数据,并且生成更加准确的结果。
更多的GIS主流和非主流技术,可以持续关注CSDN的GIS制图乐园,以及微信公众号【GIS制图乐园】。BY 李远祥