visibility op• Datenarten: depth → image2d
• Aufruf: 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) (die Implementierung direkt: import demops; demops.dem_viewshed(dem, cell_size, observer_rc, observer_height_m=1.7, target_height_m=0.0, max_distance_m=None); aus dem Register: opsdem.get("dem_viewshed"))
Sichtbarkeitsbereich von 1 Punkt aus (1 = sichtbar). Entscheidet, ob die Sichtlinie durch das Gelände verdeckt wird.
observer_rc ist (row, col). Der Beobachter selbst ist immer sichtbar.
Ablauf: Augenhöhe eye = z[observer] + observer_height_m. Die Sichtlinie zu jeder Zelle wird in ceil(hypot(H, W)) gleiche Teile geteilt; gibt es unterwegs eine Zelle, deren Gelände-Höhenwinkel (z_mid - eye) / d_mid den Höhenwinkel des Ziels (z + target_height_m - eye) / d übersteigt, ist sie verdeckt (0). Zwischenpunkte werden auf die nächste Zelle gerundet, daher enthalten schräge Sichtlinien Gitterfehler. Erdkrümmung und atmosphärische Refraktion werden nicht berücksichtigt (jenseits einiger km separat korrigieren).
• dem: (H, W) [m], mindestens 3x3, Sentinelwerte werden abgewiesen (gleicher Vertrag wie dem_slope). nan-Zellen machen Vergleiche falsch und verdecken weder noch werden sie verdeckt, sie bleiben 1.
• cell_size: [m], positiv. Für die Distanzprüfung.
• observer_rc: ganzzahliges (row, col) innerhalb des Gitters. Außerhalb oder kein pair ergibt ValueError.
• observer_height_m / target_height_m: Höhe über Grund [m]. Standard ist Augenhöhe 1.7 m und Erdoberfläche 0 m. Für die Sichtbarkeit von einem Stahlmast observer_height_m erhöhen.
• max_distance_m: weiter entfernte Zellen sind 0 (ohne Angabe unbegrenzt).
• Rückgabewert: (H, W) float64 aus 1 / 0. Der Beobachter ist immer 1.
• Rechenaufwand: gesamtes Gitter × ceil(hypot(H, W)) Vektoroperationen.
dem_horizon_angle / dem_sky_view_factor liefern umgekehrt, "wie viel Himmel von jeder Zelle aus sichtbar ist".
• Leitfaden zur Familie dem_terrain_analysis
• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).
• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.
• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.
• 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 als Eingabe)—
visibility)dem_horizon_angle · dem_sky_view_factor
*Provenance: demops.py — DEM Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.