I would like to check the visibility of a spacecraft from an optical ground station.
The propagator is already implemented, so now I have both the position of the satellite and the ground station in the same reference framen (actually EME2000).
How can I check visibility?
The aforementioned tutorial shows how to detect starts of visibility windows (based only on an minimal elevation angle criterion) during orbit propagation. If you want to know the elevation at a specific epoch and you already have the position-velocity vector for the observable (as well as the geodetic coordinates of your sensor), you can simply define a TopocentricFrame like in the example and call the getElevation method with the right arguments. This however neglects light-time delay. Also note that there are other factors to take into account for observability with classical ground-based telescopes, such as eclipse conditions.
I was controlling the tutorial suggested by @MaximeJ and, actually no information about sun position, eclipse conditions are reported. So, probably the tutorial is useful if one want to know if a satellite is above the horizon but for checking optical visibility something missing.
Do you have other suggestion?
The two other observability conditions (assuming passive, visible-light telescopes whose images are post processed via astrometry) that you can check with Orekit are:
is the observable in sunlight?
is the sensor in nighttime?
They can both be assessed through
the sign of the so-called g function of their detectors (primarily designed for propagation events), respectively EclipseDetector and GroundAtNightDetector. I don’t think there are present in the tutorials (I may be wrong), but you can see how they are in used in the Javadoc or the unit tests.