拓冰建站拓冰建站
首页 / 资讯中心 / 正文

ArcGIS水文分析实用指南:从坡降到补给长度比的关键工具与流程

搞水文分析的人估计都有这种体会ArcGIS里真正常用的工具翻来覆去就那么几个但每个背后都藏着不少容易踩的坑。今天这篇我把几个平时做流域分析、河流形态刻画时经常碰到的小功能集中聊一遍——坡降、流动方向、剖面线、弯曲系数、河系密度还有个相对冷门的补给长度比。这些名词看着各自独立实际上当你拿到一个DEM想提取河网、算流域特征、评估河道形态时它们就是一条完整的工作链。适合刚接触ArcGIS水文模块的学生也适合做地理国情监测、水利规划、地质调查的朋友参考。每个知识点我都会把原理、操作步骤、参数含义和实际项目里容易翻车的细节一次性说清楚能帮我少走弯路的经验我也不会藏着。1. 坡降计算不只是陡不陡那么简单1.1 坡降到底算的是什么坡降在ArcGIS里对应的是Slope工具但很多人一上来就点甚至搞不清输出结果是度数还是百分比。坡降本质上描述的是地表单位水平距离内的高程变化率数学表达是地面倾角的正切值。简单说就是告诉你这块地有多陡。ArcGIS里Slope工具的输出有两种单位DEGREE度和PERCENT_RISE百分比。百分比的算法是tan(坡度角)×100%所以45度的坡对应的是100%的坡降。这两种单位在实际应用中差别很大做水土流失分析通常用百分比做坡度分级图一般用度。我见过不少初学者拿百分比结果去做分级边界值完全对不上图看着怪怪的其实就是单位选错了。1.2 手把手操作步骤打开ArcToolbox路径是Spatial Analyst Tools → Surface → Slope。输入栅格选DEM输出路径自己定Z factor这个参数要注意Z unit是Meter就填1如果DEM是英尺就要换算成0.3048。这里不换算出来的坡降值会偏差很大。实际项目里我用得最多的流程是这样先检查DEM有没有异常值用栅格统计里的最小值最大值看一下如果有负值或者离谱的高程先处理掉。运行Slope工具输出度数结果。用栅格计算器重分类比如把0-5度、5-15度、15-25度、25度以上分成四类对应平原、缓坡、陡坡、峻坡。这里有个经验坡降结果受DEM分辨率影响极大。同一个区域30米分辨率的DEM和12.5米分辨率的DEM算出来的坡降分布曲线会差很多。分辨率越高坡降值整体会偏大因为更多微地形细节被保留下来了。如果你要做跨区域对比必须统一DEM来源和分辨率。1.3 坡降图的实际应用场景坡降图最典型的应用是建设用地适宜性评价。我做过一个西南山区的项目当地规划局要求25度以上不得作为建设用地。我们直接把坡降图重分类成0和1的二值图叠加到土地利用图上就筛出了大批违建潜力区。另一个常见场景是山地灾害评估。坡降和坡度变率坡向变化率结合可以识别潜在的滑坡危险区。这时候光有坡降图不够还要算坡向、曲率组合成多因子评价模型。坡降就是基础输入。2. 流动方向水文分析的基石但90%的人第一步就错了2.1 D8算法和那个容易忽略的填洼步骤流动方向Flow Direction是所有水文分析的前提河网提取、汇流累积量、流域划分全靠它。ArcGIS默认用的是D8算法思路是对每一个栅格单元比较它周围8个邻域单元格的高程确定最陡下降方向然后给这个方向赋一个特定编码值。这个编码不是随便设置的是2的幂次方1、2、4、8、16、32、64、128二进制上对应每一个方向位。之所以这样设计是为了后续可以在一个数据集里组合多重流向。你如果看到输出栅格的值都是这种奇怪的数字别慌那正是方向编码。但这里有个关键步骤很多新手完全不知道计算流动方向之前必须先用Fill工具填洼。DEM里天然存在很多洼地凹陷可能是真实的喀斯特漏斗也可能是DEM生成过程中的噪声。如果不填洼水流到了洼地就困住了无法继续向下流淌后续河网提取就断成了无数截。2.2 填洼的阈值选择和能不填就不填的例外Fill工具的Z limit参数也叫fill threshold控制只填深度小于等于这个值的洼地。默认是0也就是所有洼地全填平。这个默认值在绝大多数DEM分析场景下是对的但有两个例外一种是喀斯特地貌区真实的漏斗地形会被填掉导致地表径流路径失真。在这种区域要么不填洼要么设置一个很小的阈值只填掉数值噪声级的洼地。另一种是城市建成区人工地形路堤、隧道、下穿通道导致许多洼地其实是真实存在的排水死角。做城市内涝模拟时我不建议直接用全填平的DEM应该用建筑、道路数据修整DEM后再填洼。实操建议用Spatial Analyst Tools → Hydrology → Fill填洼前先做一个原始DEM的直方图看点位的分布。如果地形整体平缓比如华北平原阈值可以设0如果山地起伏大阈值可以设10-20米。设得越小保留的真实地形细节越多。2.3 流动方向结果怎么读运行Flow Direction后用符号化选择Unique Values显示你会看到8个不同颜色区域。每个颜色对应一个方向编码流向是从当前格到8邻域中坡度最陡的那个格。方向值是2的幂次方但有个特例如果周围8格都比当前格高或都相同这个格就会被标记为洼地或平坦区编码是0或某个特殊值。读图技巧用箭头符号化比用色块直观得多。在图层属性里切换到Categorized选择流向字段然后设置一个自定义箭头符号库。这样你能清楚地看到水流是怎么从山脊流向山谷的也能快速判断哪里还有异常汇水区。3. 剖面线把地形切开来看比等高线直观十倍3.1 剖面线工具藏在哪里剖面线Profile功能在ArcGIS里往往被忽略但它做河道纵剖面、山谷横断面、道路选线视野分析时非常有用。3D Analyst模块里有两个工具可以生成剖面图Profile Graph直接对3D线要素生成剖面图输出是一个图形窗口能交互查看。Stack Profile可以同时生成多条线的剖面图适合对比分析。关键的坑在于Profile Graph要求输入的是3D线也就是每个折点都带有Z值。你如果在ArcMap里随手画了一条2D线跑工具会报输入要素缺少Z值或者干脆不出图。解决方法是用Interpolate Shape工具3D Analyst Tools → Functional Surface → Interpolate Shape把2D线投影到DEM表面上为每个折点插值出Z值。参数很简单输入线要素、选择DEM作为表面Z factor填1输出就是一条3D线。3.2 一个完整的河道纵剖面制作流程做河道纵剖面的完整步骤用河网提取结果或矢量化河流中心线得到河道线要素。用Interpolate Shape把河道线转成3D线插值表面用DEM。运行Profile Graph弹出剖面图窗口。在剖面图上右键可以导出数据到Excel或者导出为图片。剖面图横轴是河道累计长度纵轴是海拔高度。从这张图上能直接读出河道比降的变化趋势。比降大的河段坡陡往往是急流险滩段比降接近0的河段通常是壅水区或平原缓流段。我做过一个河流生态修复的项目就是用这个方法快速识别出三条支流的平均比降差异从而确定哪些河段适合做自然恢复哪些需要人工干预。导数据这个步骤特别值得强调。ArcGIS的剖面图窗口导出的数据是剖面线上每个采样点的X、Y距离和Z值。拿到Excel里你可以自己算比降、绘制自定义图件精度和灵活性比ArcGIS默认图高多了。3.3 剖面线的变体用法横断面和工程填挖方评估除了河道纵剖面剖面线工具还可以用来做山谷横断面分析。你需要先用Buffer工具生成垂直于河流的断面线然后同样用Interpolate Shape赋Z值再生成剖面图。这种横断面对桥位选址、过河管线设计非常关键。如果手头有设计水位线比如50年一遇洪水位可以用Profile Graph把设计水位叠加上去直接判断哪段河堤高程不足。ArcGIS里可以新建一个辅助面把水位作为曲面剖面线在同一平面内对比显示。这比传统CAD里手动画断面有效率得多。4. 弯曲系数河道的弯不弯原来有量化标准4.1 弯曲系数的计算公式和分级弯曲系数Sinuosity是描述河流平面形态弯曲程度的核心指标定义是河段实际长度与河段两端点直线距离的比值。公式很简单弯曲系数 河道实际长度 / 直线长度1.0-1.3相对顺直型河道1.3-1.5微弯型河道1.5-2.0弯曲型河道2.0高弯度曲流型河道这个指标在河型分类、航道评估、河岸稳定性评价里非常基础。判断一条河是弯曲型还是辫状型弯曲系数是硬指标之一。4.2 ArcGIS里的计算路径ArcGIS里没有一键算弯曲系数的按钮但它是个纯粹的几何计算问题步骤很清晰用河流中心线矢量数据按河段分段例如按两条支流的交汇点分段。用Dissolve工具把整条河段合并成一条线或用Split Line At Vertices把长线拆成若干段。添加字段用Geometry计算每条河段的自定义长度注意要使用投影坐标系。用Feature Vertices To PointsPoint Type的START和END提取每段的起点和终点。用Point Distance计算起点到终点的直线长度。在属性表里用字段计算器求比值length字段 / 直线距离字段。但这个流程有个坑Feature Vertices To Points提取起点和终点时如果一条河段的始末点正好在支流汇合处提取出来的点可能不完全匹配。稳妥的做法是先用河流编码字段分组再对每个分组做起点和终点匹配。4.3 实际操作中的同源异形问题弯曲系数对于同一条河来说会因为你如何分段而产生完全不同的结果。比如一条逐年向东摆动的河流如果你把整条河从源头到入海口作为一个整体算弯曲系数可能是1.6如果切成10个河段分别算有的河段可能才1.1有的却高达2.2。这暴露了一个重要原则弯曲系数必须在合理的河段尺度上计算通常以2-3倍河宽的长度作为一个计算单元或者在支流汇入口、河道突变处作为分段节点。我看过一篇论文里写某河流弯曲系数是1.8为典型弯曲河流但没写清分段方式和河段编号这个结论其实很难复现。所以在自己的项目里一定要把河段编号、分段节点坐标、计算长度一并存储到属性表里留作可追溯的记录。5. 河系密度刻画流域毛细血管发育程度的关键指标5.1 河系密度的概念和公式河系密度Drainage Density指的是单位流域面积内的河流总长度。公式是河系密度 流域内河流总长度 / 流域面积单位通常是km/km²部分地区用m/km²。这个值越小说明流域地表越不易产流下渗能力强河网发育稀疏值越大说明流域切割程度深地表径流能力强侵蚀发育充分。实际意义举个例子同样是年降水1000mm的两个流域A流域河系密度是1.2km/km²B流域是3.5km/km²。那B流域的洪水响应会明显更快因为河流路径短、水系密集降水很快汇入河道。这个指标对洪水预报、流域产流能力评估都很有价值。5.2 河网提取的阈值选择决定密度值可靠性的命门河系密度计算的核心约束不在密度工具本身而在河网提取这一步。ArcGIS里提取河网的标准流程是DEM填洼 → Flow Direction → Flow Accumulation汇流累积量。在汇流累积量栅格上设置阈值比如累积量1000提取河网。用Stream to Feature把栅格河网转成矢量线。在流域内统计河网总长度除以流域面积。阈值的选择对河系密度结果影响极大。同一个DEM阈值设为500和5000提取出来的河网长度可能差3-5倍。阈值越小河网越毛糙包含了大量季节性冲沟阈值越大河网越光秃只剩主河道。我在这上面踩过坑。有次做滇西北某小流域的对比分析用了阈值500提取河网算出来河系密度是2.8隔壁团队用阈值5000算出来1.1。两边数据一对发现差异全部来自阈值设置而不是流域本身的差异。个人建议在没有统一规范的情况下阈值取汇流累积量栅格均值的1-3倍比较合理或者根据流域面积反推。如果是做多流域对比必须统一阈值标准并在报告里明确写出提取参数。5.3 Line Density工具的用法和易踩的坑河网矢量准备好后用Spatial Analyst Tools → Density → Line Density计算密度栅格。参数有Population field如果不填按线的条数计算如果填一个长度字段按长度计算。Search radius搜索半径决定密度计算时扫描的范围。Output cell size输出像元大小直接影响栅格结果的平滑度。最容易被忽略的是Search radius。默认值是基于数据范围自动算的在多数情况下偏大导致密度图过于平滑山区小流域的特征被磨掉。实际做的时候建议先做几个不同搜索半径的测试图选一个在视觉上最能反映河网分布的。我的经验是搜索半径取DEM分辨率的10-30倍比较合适。6. 补给长度比一个容易混淆但实际很有用的综合指标6.1 这个指标到底指什么补给长度比不是ArcGIS工具面板里的一个现成功能按钮但在水文地貌分析中它确实是个有用的综合参数。国内一些文献里把补给长度比定义为流域水系范围内各级河道总长度与流域补给区或河道缓冲区面积之间的比例关系。它的本质是描述单位补给面积能支撑多长的河道发育。这和河系密度看着有点像但角度不同。河系密度是河网总长度与流域总面积之比强调的是流域整体排水效率补给长度比则是把补给区域限定在河道周边的集水区比如河流的汇水缓冲区、裂隙补给带更强调河流的支撑源范围。在岩溶区、干旱区这种地表水与地下水交互复杂的区域补给长度比比河系密度更能解释水系的发育差异。如果你在文献里看到不同的定义也别奇怪。这个指标在不同学科里侧重点不同地貌学里侧重描述河网拓扑水资源学里侧重反映补给带的产流能力。用的时候最好先明确自己的问题导向。6.2 在ArcGIS里的实现思路既然没有现成工具我就说一下自己实现这个指标的方式用河网矢量数据做Buffer工具生成缓冲区。缓冲区半径建议用DEM分辨率乘以一个倍数比如100-300米或者参考河流平滩宽度的实际调查值。把缓冲区与DEM叠加裁剪出补给区栅格。用Zonal Geometry工具统计补给区面积。河网总长度除以补给区面积得到补给长度比。另一种做法是基于集水区先用Watershed工具划分出每一段河道的汇水子流域把子流域面积当作该段的补给面积然后用该段河道的累计长度 / 子流域面积计算。这种方式物理意义更明确和河网的拓扑结构挂钩。6.3 应用举例和注意事项我做喀斯特地区水系对比时用过这个指标。地表河发育的流域和地下河为主的流域河系密度差异可能不大但补给长度比差异明显。因为岩溶区很多降水直接通过落水洞进入地下系统地表水系的补给区其实很小单位补给面积对应的地表河道长度反而很大。单纯看河系密度很可能低估地下水系统对地表形态的影响。需要注意这个指标对河网提取精度极其敏感。上游伪河道如果没被剔除会导致总长度虚高补给长度比失真。建议提取河网后用最小河长阈值比如200米过滤掉零碎弧段再做长度统计。另外缓冲区宽度的选择直接决定指标值不同文献之间很难直接对比。我在自己的报告里专门列了一个参数表把缓冲区半径、DEM分辨率、河网阈值全部写清楚方便别人复现或做敏感性分析。7. 六个知识点串成一条完整的水文分析流程单独看每个知识点都比较独立实际项目里它们通常是一条流水线DEM预处理填洼 → 流向计算 → 汇流累积量 → 河网提取 → 流域划分 → 后续的密度、剖面、弯曲系数、补给长度比我给一个建议顺序拿到DEM先做填洼和流向这两步决定了后续所有结果的上限。然后提取河网设置好汇流阈值。河网一旦确定河系密度、弯曲系数、补给长度比都建立在同一套河网基础上这样结果才可以互相佐证。剖面线和坡降可以在更早的阶段做因为它们针对的是地形表面本身的形态不依赖河网提取结果。如果要出报告建议所有指标的提取参数都截图存档包括阈值、分辨率、坐标系。每次我在项目验收时被问到你这个河网怎么来的、阈值多少都能直接翻出参数表这能让报告可信度提升不少。我个人做水文分析的一个习惯所有步骤保留中间结果。填洼后的DEM、流向栅格、累积量栅格、阈值提取的河网每一步都存成独立的栅格/矢量文件。这不仅是工业规范更是能力。因为一旦后续修改了阈值你不需要从头跑整套流程只需重跑河网提取及之后的步骤即可。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门