skyline op• Data kinds: depth → table
• Call: 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) (implementation को सीधे call करना हो तो 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), registry से लेना हो तो opsgeocam.get("dem_skyline"))
DEM के 1 point से दिखने वाली सभी दिशाओं की skyline (हर azimuth पर horizon elevation) → table।
dem_horizon_angle "सभी cells × 1 azimuth" है, और यह "1 point × सभी azimuths" -- fixed camera की दिशा तय करने के लिए बाद वाला चाहिए। हर azimuth में cell_size / 2 के step से line of sight आगे बढ़ाई जाती है (elevation bilinear interpolation से), और atan((z_j − z_0 − drop(d)) / d) का maximum उस azimuth का elevation angle बनता है। drop(d) = d² / (2 R_eff) वह मात्रा है जितना पृथ्वी की गोलाई और atmospheric refraction (effective radius R / (1 − 0.13)) से दूर के पहाड़ नीचे डूबते हैं। line of sight DEM से बाहर निकले तो वहीं रुकती है (max_distance पर भी रुकती है)। DEM के बाहर यह माना जाता है कि "DEM की सबसे कम elevation वाला plane horizon तक चलता है", और elevation angle की निचली सीमा horizon dip −sqrt(2 h / R_eff) रखी जाती है (h = observer की सबसे कम elevation से ऊँचाई) -- ताकि finite DEM के किनारे पर संयोग से कोई नीचा point देखकर, −7° जैसा "छेद" जो असल में पृथ्वी की गोलाई के कारण दिखता ही नहीं, आसमान न बन जाए (horizon_dip_deg में लौटाया जाता है)।
Args:
dem: (H, W) elevation [m]। row 0 उत्तरी किनारा है।
cell_size: [m/cell]।
observer_rc: observation point (row, col)। float चलेगा (cell के अंदर खड़ा)।
eye_height: ज़मीन से camera की ऊँचाई [m]।
az_step_deg: azimuth का step [degree]।
max_distance: line of sight की अधिकतम दूरी [m] (None = DEM के किनारे तक)।
earth_curvature: False हो तो सपाट पृथ्वी।
Returns:
table: azimuth_deg (M,) / elevation_deg (M,) / distance_m (M,) (elevation angle तय करने वाले
point तक की दूरी) / observer_elevation_m / horizon_dip_deg / n। azimuth 0 या उससे ज़्यादा और
360 से कम, बढ़ते क्रम में।
• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।
• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।
• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।
• poc_public_camera_heading — py -3.11 examples/poc_public_camera_heading.py
table को input के रूप में लेते हैं)render_skyline_view · camera_orientation_from_skyline
skyline)skyline_extract · render_skyline_view
*Provenance: geocam.py — GEOCAM operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.