dem_viewshed — DEM 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"))

Verwendung

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".

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie dem_terrain_analysis

Referenzen (Beispieldaten, Literatur)

• 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.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• dem_terrain_analysis_tour — py -3.11 examples/dem_terrain_analysis_tour.py

• poc_stockpile_volume — py -3.11 examples/poc_stockpile_volume.py

Typkompatible Folge-Operatoren (nehmen image2d als Eingabe)

—

Gleiche Kategorie (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.