Source code for stilt.observations.sensors.point
"""Point-sensor implementation for in-situ and simple point measurements."""
from __future__ import annotations
from stilt.observations.observation import Observation
from stilt.observations.receptors import build_point_receptor
from stilt.observations.sensors.base import BaseSensor
from stilt.receptors import Receptor
[docs]
class PointSensor(BaseSensor):
"""
Sensor family for point-like observations.
This fits fixed towers, moving in-situ platforms, and other measurements
that should normalize to a single location and map to a point receptor.
"""
def __init__(
self,
*,
name: str = "point",
supported_species: tuple[str, ...] = (),
default_height: float | None = None,
) -> None:
self.name = name
self.supported_species = supported_species
self.default_height = default_height
[docs]
def build_receptor(self, observation: Observation) -> Receptor:
"""Build a point receptor for one point-like observation."""
geometry = observation.geometry
if geometry is not None and geometry.kind != "point":
raise ValueError(
"PointSensor requires point geometry or no explicit geometry. "
f"Got {geometry.kind!r}."
)
return build_point_receptor(observation, altitude=self.default_height)