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.