dem_stream_network — DEM 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),所以在平坦的填海地上流容易集中到一處 ―― 閾值降得過低會出現網格狀的偽河道。

詳細使用指南

• dem_terrain_analysis 族使用指南

參考(範例資料、文獻)

• 範例資料目錄(下載 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.