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.