FootprintOverlapDetector for large regions (countries)

Hello all,

I’m looking to understand when a satellite footprint will be over various regions of the world. For sake of this discussion, let’s assume countries. I can load the country borders (from somewhere like and build my footprint detector but the detector does not seem to properly record when it’s inview of the country. My satellite has a relatively small footprint, near-nadir pointing, so I need something of reasonably high fidelity to catch the edge cases

In some cases it completely misses the country. In others detects the entry border, only to detect the exit condition minutes before the satellite actually leaves the border.

I have used the GeographicZoneDetector, which works much better, but misses the satellite’s FoV.

I do understand there is a limit to the sampling distance for the FootprintOverlapDetector. I believe hipparchus has an underlying limit of 1,000 sample points. So for the large areas, I end up computing the sampling distance backwards out from the country’s area.

I’ve considered the following solutions:

  1. sample all the areas and simply use a multitude of detectors for each. I’m concerned about runtime
  2. slice my large areas into smaller pieces. Perhaps intersect my countries with a 10-degree lat/lon box or something, and run a detector for each of those.
  3. Propagate to a very small time-step and check the FieldOfView using the resulting SpacecraftState myself.

Each of those three options concern me in various ways, so before I ran down one (or more) of them, I thought I’d check here. Does anyone have a recommendation, or a better idea, for tackling this problem?



This seems to be a recurring demand, so I guess our current handling does not meet users needs. We need to do better and redesign a solution.

Unfortunately, this is a difficult task, so it will take time.

Could you open a feature request in the forge to ask for an efficient handling of large ground zones visibility from an onboard FoV?

Hi Luc,

Absolutely. I’ve tackled this problem in the past, with varieties of success. Almost all of them involve some specialized assumptions based on the uniqueness of the sensor/orbit/area to stay efficient.

I’ll definitely open a feature request, and am interested in discussions regarding the solution too.