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