ArcGIS水文分析实战教程(3)DEM数据准备
ArcGIS的水文分析工具需要DEM数据才能执行,因此在使用之前必须要准备好DEM数据并且针对DEM数据进行预处理。本章节内容介绍如何根据已有的数据制作和处理DEM,并实现水文分析前的数据预处理。BY 李远祥
ArcGIS的水文分析工具集是对地表形成径流的模拟,使用DEM作为计算的参数,主要的后期数据都是准对DEM进行生成的,如流向栅格、流量栅格这两个重要的参数。
DEM制作
对于能够直接拿到DEM数据的人来说,基本上可以忽略掉这个章节的内容。在大多数情况下,水文分析人员是没有DEM数据的,尽管可以从网上可以下载到插值后30米的全球免费的DEM数据,但由于数据的精度太低,作为普通的大流域研究勉强可以使用,但作为中小流域级别的研究那就相当无力了。
一般情况下,某一研究区域的等高线和部分高程控制点数据,以及行政边界数据是可以协调到的。但由于ArcGIS的水文分析工具需要的是DEM数据,那就需要利用这些数据生成原始的DEM。
生成DEM的方式很多人会想到利用等值线和高程控制点生成Tin,然后利用Tin转换为DEM。这种方式非常普遍。不论在GIS的教程还是水文学的教程中都有介绍。
ArcGIS的3D分析扩展模块提供了上述的工具进行转换,也算是在同一个软件中一起处理所有的问题了。
下图是一份常见的等高线、高程控制点、边界等数据。
数据出了边界之外,每一层的数据中都带有高程属性。调用ArcGIS 3D分析模块,【3D Analyst】--【数据管理】--【创建TIN】双击调用。
从图上看,凡是涉及到有高程值的数据必须悬赏高程字段,但工具中的SF Type 就相当不好选了。如果是高程控制点,那么选择【Mass_Points】绝对没有异议。但等高线部分可以选择的除了【Mass_Points】之外还有【Hard_Line】和【Soft_Line】。
这里硬线和软线到底怎么选择?ArcGIS的工具提示是
隔断线和面表面类型具有 Hard 和 Soft 限定符,指示要素所表示的沿表面的斜坡是平滑还是尖锐的不连续部分。
这是一个比较难懂的说明。大致上可以理解为两条等高线之间如果构成不规则三角形,采用Hard的话在这两条线之间的区域会平滑一些,采用Soft的话基本上就是直接过渡,形成最大的高差。
这本来是一个测绘学的问题,但由于现在要在水文分析前使用,那么这些细节参数就值得推敲了。前面章节已经详细介绍过ArcGIS的水文分析工具的基础算法是D8单流向算法,径流只会向一个方向流动。笔者认为,如果等高距过大和等高线密度比较稀疏,采用Hard的做法是比较好的,防止出现了尖锐的三角形顶点,导致弯曲的径流拉直线生成,但这种做法也就是对径流线进行了一些平滑,损失一些精度。如果数据的精度比较高,区域的等高线稠密并且控制点足够多,推荐使用soft的方式,这样径流线会更加精准流动。
对于具有大面积水,如湖泊、水库等地类,那就可以设置为Replace类型。这样在遇到水面边界的时候不会进行三角化处理,统一以一个高程值填充了该区域。
在创建Tin工具中大量出现了Hard和Soft的选项,原理跟上面所说的一样,需要考虑的最主要因素就是等高线的稠密程度。
对于行政边界来说,一般采用clip类型来处理,在边界处裁剪掉数据。不然,在边界处就会出现非常深得三角点。
而另一类型Erase ,则是挖空区域,使其没有镂空没有数据。不过这种情况很少见。
关于sf type的说明,可以查看ArcGIS相关帮助。但这一部门相当难以理解,即便测绘人员能够理解,但由于缺乏水文分析原理的支撑,一般也不清楚使用不同的方式会对水文分析结果产生哪些影响。
接下来就可以通过【3D Analyst】--【转换】--【由Tin转出】--【Tin转栅格】工具转成DEM数据。值得注意的是,该处的类型选择必须选择浮点型,如下图
为什么要选择浮点型去构建DEM。如果站在测绘的这个程度上,浮点型的DEM跟整形的区别不大,毕竟都是通过TIN去构建生成的,一些小数点位数实际意义不大。但站在水文分析的去考虑就不一样了。前面章节已经说明过ArcGIS的水文分析是基于D8单流向算法的,在有凹陷的DEM数据下会形成断流,从而不能汇聚成河流。而整形的DEM时对TIN的高程作了四舍五入的操作,硬生生的将地形起伏特征去除。别看都是小数点后的数值,D8算法决定了其流向,哪怕是相差0.001米,足以改变流向。取整后的DEM数据会形成特殊的凹陷区或者平坦区,从而导致径流无法自然形成。而这些凹陷区(平坦区域实际上属于大得凹陷区)在ArcGIS的水文分析工具中称之为“汇”,是必须找出来并且填平的。
该工具中还有【采样距离】参数,采样距离默认使用的是OBSERVATIONS设置,表示该DEM像元的列数,也就说用多少列来表示该区域。建议使用另一参数CELLSIZE,这可以直接定义像元网格的大小。如果使用OBSERVATIONS,后期还需要通过区域宽长和列数去换算单位网格的大小,非常不方便。水文分析的汇水区大小定义时,笔者认为还是使用单位网格大小比较直观。可以参考前面的文章,里面有详细的叙述。
这样DEM就生成完毕,可以作为水文分析的基础数据了。
另一种DEM快捷生成方法
如果使用等值线+高程控制点方式去生成TIN,在由TIN转DEM,对一般水文分析人员,甚至是部分GIS人员都比较难以理解清楚其每个参数的作用。由于DEM数据是要作为水文分析的基础,因此很多参数的调整必须谨慎选择,所以,水文分析的原理是十分重要的。
如果害怕上述方式过于复杂和难懂,可以尝试一种新的方法,那就是【地形转栅格】工具。这个工具在【spatial】扩展模块中,不需要用到3D分析模块,与水文分析工具同属于一个扩展。Esri将其工具放置在【插值分析】工具箱,如下图所示
可见该工具其定位。但不得不说该工具确实非常的强大,看下图的设置
其操作非常简单,它定义了地形中常见的九种类型:
- PointElevation - 表示表面高程的点要素类。Field 用于存储点的高程。
- Contour - 表示高程等值线的线要素类。Field 用于存储等值线的高程。
- Stream - 河流位置的线要素类。所有弧线必须定向为指向下游。要素类中应该仅包含单条弧线组成的河流。此输入类型没有 Field 选项。
- Sink - 表示已知地形凹陷的点要素类。此工具不会试图将任何明确指定为汇的点从分析中移除。所用 Field 应存储了合理的汇高程。如果选择了 NONE,将仅使用汇的位置。
- Boundary - 包含表示输出栅格外边界的单个面的要素类。在输出栅格中,位于此边界以外的像元将为 NoData。此选项可用于在创建最终输出栅格之前沿海岸线裁剪出水域。此输入类型没有 Field 选项。
- Lake - 指定湖泊位置的面要素类。湖面内的所有输出栅格像元均将指定为沿湖岸线所有像元高程值中最小的那个高程值。此输入类型没有 Field 选项。
- Cliff - 悬崖的线要素类。必须对悬崖线要素进行定向以使线的左侧位于悬崖的低侧,线的右侧位于悬崖的高侧。此输入类型没有 Field 选项。
- Exclusion - 输入数据应被忽略的区域的面要素类。这些面允许从插值过程中移除高程数据。通常将其用于移除与堤壁和桥相关联的高程数据。这样就可以内插带有连续地形结构的基础山谷。此输入类型没有 Field 选项。
- Coast - 包含沿海地区轮廓的面要素类。位于这些面之外的最终输出栅格中的像元会被设置为小于用户所指定的最小高度限制的值。此输入类型没有 Field 选项。
考虑得非常周到,不是说九种地形数据必须都有,而是针对性的越齐全越好。还有一点就是该工具对等高线的支持非常友好,如果输入要素数据类型为等值线,则算法将先根据等值线的曲率生成概化的表面形态。然后该算法会将等值线作为高程信息的源。等值线最适合大比例数据,因为此时等值线和拐角可准确地指示出河流和山脊。在较小比例下,对等值线的拐角点进行数字化并将其用作输入点要素类可能同样有效且消耗更少。可以看到该工具出来的结果本身就能很好的呈现山脊和河流。在水文分析中这就是分水线和水系了。
关键部分还有在可选参数中,地形强化参数。默认使用的是ENFORCE。
- ENFORCE— 该算法将尝试移除遇到的所有汇,无论是“真”是“伪”汇。
- NO_ENFORCE— 汇不会被填充。
- ENFORCE_WITH_SINK— 输入要素数据中已指出为汇的点表示已知的地形凹陷并且将不会被更改。输入要素数据中未指出的所有汇均将视为伪汇,算法将尝试填充此汇。伪汇数量超过 8,000 个将导致工具无法使用。
这样的话在数据生成过程中就已经移除掉“汇”,避免了后期的处理。
笔者认为这个工具简直就是为水文分析工具而生的。属于非常好的辅助工具。既简单而且有实在,将水文分析所需的数据特性很好的表现出来。该工具在ArcGIS10.0及更高的版本中有集成。
总结
对于水文分析前的DEM数据生成,有着非常明显的定义,传统的测绘人员是不清楚这些细节的;而水文研究者对于GIS数据更是完全不了解。本章的主要特点就是从水文分析原理的角度去解释DEM制作的一些细节,力图让DEM数据能够准确的还原基础地形,并且准确的生成主要的地形特征。
如果读者对水文分析感兴趣的话,可以持续关注CSDN的GIS制图乐园,以及微信公众号【GIS制图乐园】。BY 李远祥