Create continuous solar-geometry features from the ephemeris.
Unlike get_day_night_features (which rounds sunrise/sunset to whole hours and emits a binary daylight flag), this builder exposes the continuous solar geometry the hour-of-day RBFs only encode implicitly: the per-hour solar elevation, the exact daylight duration, and the signed time relative to sunrise and sunset. These linearise lighting-load timing and the midday PV offset, are purely deterministic from the date and the fixed coordinates, add no dependency, and leak nothing for any forecast hour (Xie & Hong 2018, xieh18a; López 2020, lope20a).
The returned DataFrame contains four float64 columns:
solar_elevation — solar elevation angle in degrees (negative at night, peaking at solar noon).
daylight_duration_h — exact sunset−sunrise span for the date, hours.
hours_since_sunrise — signed hours since that date’s sunrise (negative before sunrise).
hours_to_sunset — signed hours until that date’s sunset (negative after sunset).