Dealing with "missing data"—whether occuring as a truly missing
SPICE kernel, or as a lack of data you expected to be present within a loaded
kernel, or as data gaps within a loaded kernel—is a problem every
SPICE user will eventually encounter. If the SPICE-based program you are
using cannot find some portion of data needed to make a computation you
have asked for, a SPICE error message will be issued. (While not unheard
of, it is extremely rare for a program to simply "crash" due to
"missing" SPICE data: a program "crash" is almost certainly the result
of a problem in your own code.)
Missing data problems are typically one of these types.
- Missing kernel: you failed to load a kernel needed to make the
computation you have requested. This could be a fairly obvious error, such
as failing to load a satellite ephemeris SPK when trying to compute geometry
involving a satellite. But it could also be rather obscure, such as the
failure to load an SPK containing the location of the sun, which is needed
if you will be making computations involving light-time calculations—a
rather normal situation.
- Missing data within a kernel: your loaded kernel(s) do not include
data for the object of interest or for a time of interest. Be especially
careful about mistaking calendar format ephemeris time (ET, also called TDB)
versus calendar format UTC time. Recall that the ET and UTC time systems
differ by the amount of time tabulated within the SPICE leapseconds kernel
(LSK), an amount on the order of 69 seconds as of 2020. As example:
2020-JAN-01 00:00:00.000000 in the UTC system is 2020-JAN-01 00:01:09.183907 in the TDB system.
- Data gaps: your loaded kernel(s) spans the time(s) of interest to
you, but has a data gap at a specific time for which you have
requested a computation. (This problem often occurs with C-kernels.)
There are a number of SPICE error messages you might see resulting from
a missing data problem. These error messages explain the problem
encountered, although understanding these explanations often requires
some familiarity with how SPICE works. Some of the most common "missing
data" problems are briefly summarized here.
- You did not load a leapseconds kernel (LSK) or a planetary
constants kernel (PCK). Or you did not load the mission's frames kernel
(FK), or the instrument kernel (IK) for the instrument that is the
subject of your calculation. (If you are using a PDS archived data set,
and you are loading kernels by using one of (or the) meta-kernel
provided with it, these kernels should have been automatically loaded
for you... one of the BIG advantages of using archived data sets!)
- You are trying to make a calculation at a time that is either
before the start time, or after the end time, of an SPK file from which
ephemeris data are needed.
- Ephemeris data for your target or oberver body are not included in
any of the SPK files you have loaded.
- You are trying to make a calculation at a time that is either
before the start time, or after the end time, of a CK from which
orientation data are needed.
- You are trying to make a calculation at a time that falls within a
data gap WITHIN a CK. (Meaning your request time falls OUTSIDE of the
interpolation intervals for that CK.) This is a rather frequently
occuring problem.
You can use the utilities "brief" and "ckbrief," with appropriate
command line options, to help discover many such problems. Somewhat
similarly, your SPICE-based program can use the pair of APIs named
spkobj and spkcov, or the pair of APIs named ckobj and ckcov, to
determine what objects appear in loaded SPK or CK files, and for what
time spans data are actually available. More detailed discussion of
some of these "missing data" problems are found at the ends of the SPK
and CK tutorials, and in the SPK and CK "required reading" technical
reference documents.
|