hydrology op• 数据种类:depth → image2d
• 调用: import fullseye as fs; fs.ledger.dem_stream_network(dem, cell_size, threshold_cells=100.0, fill=True, nodata='error')(要直接调用实现,import demops; demops.dem_stream_network(dem, cell_size, threshold_cells=100.0, fill=True, nodata='error');从台账取用则 opsdem.get("dem_stream_network"))
将汇水量超过阈值的格子单元视为河道的二值掩膜。
步骤:用 dem_flow_accumulation(dem, cell_size, fill, nodata) 求各单元的汇水单元数(自身计为 1),把 acc >= threshold_cells 设为 1,其余设为 0。缺测单元保持 nan。
• threshold_cells:视为河道的汇水单元数。正的有限值(ValueError)。想按面积决定时,换算为 面积 [m^2] / cell_size^2 再传入(此 op 只接受单元数)。
• fill=True(默认):先用 priority-flood(dem_fill_sinks,epsilon=1e-6) 填平洼地。不填的话流在洼地停止,下游汇水量偏小,河道会断开。
• nodata:"error"(默认,有 nan 则拒绝)/ "outlet"(缺测 = 出流口, 适用于水域)/ "barrier"(缺测 = 墙)。没有用常数填补空洞的选项。
• dem / cell_size 的约定与 dem_slope 相同(3x3 以上,拒绝哨兵值,[m])。
• 返回值:(H, W) float64 的 0 / 1(缺测为 nan)。不是 bool,所以传给 blob_label 等时要用 == 1 二值化。
• 计算量:汇水量的拓扑遍历是按单元数执行的 Python 循环。
基于 D8 流向(dem_flow_direction),所以在平坦的填海地上流容易集中到一处 ―― 阈值降得过低会出现网格状的伪河道。
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。
• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。
• 算法的正典(作者、年份)与用途见上面的族使用指南。
• dem_terrain_analysis_tour — py -3.11 examples/dem_terrain_analysis_tour.py
image2d 作为输入)—
hydrology)dem_fill_sinks · dem_flow_direction · dem_flow_accumulation
*Provenance: demops.py — DEM 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.