dem_skyline — GEOCAM skyline op

• 資料種類:depth → table

• 呼叫: import fullseye as fs; fs.ledger.dem_skyline(dem, cell_size, observer_rc, eye_height=1.5, az_step_deg=1.0, max_distance=None, earth_curvature=True)(要直接呼叫實作,import geocam; geocam.dem_skyline(dem, cell_size, observer_rc, eye_height=1.5, az_step_deg=1.0, max_distance=None, earth_curvature=True);從台帳取用則 opsgeocam.get("dem_skyline"))

用法

從 DEM 的 1 個點看到的全方位天際線(各方位的地平線仰角)→ table。

dem_horizon_angle 是「全部網格單元 × 1 個方位」,這個是「1 個點 × 全部方位」—— 確定固定相機的朝向需要的是後者。在各方位上以 cell_size / 2 的步長推進視線(高程用雙線性內插), 把 atan((z_j − z_0 − drop(d)) / d) 的最大值作為該方位的仰角。drop(d) = d² / (2 R_eff) 是由於地球曲率與大氣折射(有效半徑 R / (1 − 0.13))遠處的山下沉的量。視線一旦走出 DEM 就在那裡停止(到 max_distance 也停止)。DEM 之外假定「DEM 最低高程的平面一直延續到地平線」,把仰角的下限設為地平線的俯角 −sqrt(2 h / R_eff)(h = 觀測點距最低高程的高度)—— 為了不因在有限 DEM 的邊緣恰好看到低點,而把實際上因地球曲率看不到的 −7° 那樣的「洞」當作天空(在 horizon_dip_deg 中回傳)。

Args:

dem: (H, W) 高程 [m]。第 0 列是北端。

cell_size: [m/單元]。

observer_rc: 觀測點 (row, col)。可為 float(立在單元內部)。

eye_height: 相機離地高度 [m]。

az_step_deg: 方位步長 [度]。

max_distance: 視線的最大距離 [m] (None = 到 DEM 的邊緣)。

earth_curvature: False 則為平坦的地球。

Returns:

table: azimuth_deg (M,) / elevation_deg (M,) / distance_m (M,)(到決定仰角的

地點的距離)/ observer_elevation_m / horizon_dip_deg / n。方位不小於 0、

小於 360,升冪。

詳細使用指南

• geocam 族使用指南

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

• 演算法的正典(作者、年份)與用途見上面的族使用指南。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• poc_public_camera_heading — py -3.11 examples/poc_public_camera_heading.py

型別可銜接的下一個運算子(可接受 table 作為輸入)

render_skyline_view · camera_orientation_from_skyline

同類別(skyline)

skyline_extract · render_skyline_view


*Provenance: geocam.py — GEOCAM 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.