visibility op• 資料種類:depth → image2d
• 呼叫: import fullseye as fs; fs.ledger.dem_viewshed(dem, cell_size, observer_rc, observer_height_m=1.7, target_height_m=0.0, max_distance_m=None)(要直接呼叫實作,import demops; demops.dem_viewshed(dem, cell_size, observer_rc, observer_height_m=1.7, target_height_m=0.0, max_distance_m=None);從台帳取用則 opsdem.get("dem_viewshed"))
從 1 個點出發的可視區域(1 = 可見)。判定視線是否被地形遮擋。
observer_rc 為 (row, col)。觀測點本身永遠可見。
步驟:眼睛高度 eye = z[observer] + observer_height_m。將到各網格單元的視線 ceil(hypot(H, W)) 等分,若途中地形的仰角 (z_mid - eye) / d_mid 有超過目標仰角 (z + target_height_m - eye) / d 的網格單元,則為遮蔽(0)。途中的點捨入到最近鄰網格單元,因此斜向視線含有網格誤差。不考慮地球曲率與大氣折射(超過數 km 時另行修正)。
• dem:(H, W) [m],3x3 以上,拒絕哨兵值(與 dem_slope 相同的約定)。nan 網格單元因比較為假,既不遮蔽也不被遮蔽,維持為 1。
• cell_size:[m],正值。用於距離判定。
• observer_rc:網格內的 (row, col) 整數。超出範圍或不是 pair 則為 ValueError。
• observer_height_m / target_height_m:離地高度 [m]。預設為眼睛高度 1.7 m 與地表 0 m。若求鐵塔的可視域,則調高 observer_height_m。
• max_distance_m:比這更遠的網格單元為 0(省略時無限制)。
• 回傳值:(H, W) float64 的 1 / 0。觀測點永遠為 1。
• 計算量:整個網格 × ceil(hypot(H, W)) 次向量運算。
dem_horizon_angle / dem_sky_view_factor 則反過來給出「從各網格單元能看到多少天空」。
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• 演算法的正典(作者、年份)與用途見上面的族使用指南。
• dem_terrain_analysis_tour — py -3.11 examples/dem_terrain_analysis_tour.py
• poc_stockpile_volume — py -3.11 examples/poc_stockpile_volume.py
image2d 作為輸入)—
visibility)dem_horizon_angle · dem_sky_view_factor
*Provenance: demops.py — DEM 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.