logo Add_Off : tool to add spacecraft offsets to MPC-formatted astrometry

Overview of tools for asteroid observers on this site

(You can click here for the C source code for this tool; look at add_off.c. It can be compiled to run "standalone" on your machine, for Windows, Linux, Mac, *BSD, and probably others; or, as here, as an on-line service.)

Purpose: For any astrometric observation, you (obviously) need to know where the observer was when the observation was made. Ideally, we'd also know the observer's velocity. In most cases, you can just specify the observer with one of the three-character MPC codes, and we'll then look up the corresponding latitude/longitude/altitude. We can then compute where that point on the earth was and its velocity, relative to the geocenter.

This fails for spacecraft, because they move. You can tell us that your observation was made from, say, JWST, and that even has a three-character MPC code (274). But we need to know where JWST was at that time.

The MPC has long had a special format for handling observations made from spacecraft, such as Hubble, TESS, SOHO, Gaia, etc. You have a fairly normal-looking 80-column astrometric record specifying time, RA/dec, and the magnitude of the observed object. Column 14 contains an 'S' to indicate that the observation was made from a spacecraft. Other than that, it looks much like the 80-column record that would be used for a ground-based observation. Click here for some further details.

In theory, each 'S' (uppercase) record is accompanied by an 's' (lowercase) record, which adds in the data telling us where the spacecraft was when it made the observation.

In the newer ADES format, the position is specified with the <pos> keyword, and (optionally) velocity with <vel>. (The 80-column format doesn't handle velocities.)

If you have some 'S' records but no 's' records, or if you have ADES data lacking spacecraft positions, or if your spacecraft position data is causing errors or you just want to double-check it, then Add_Off is for you.

Cut and paste astrometry in either the 80-column astrometric reporting format or in the ADES format, or upload a file with observations, and click 'Process observations'. The program will output your observations with 's' lines added (for 80-column data) or <pos> data added (for ADES), giving the position of the spacecraft at the time the observations were made.

Note that lines will only be added. If you've got extraneous stuff in there (headers, notes, earth-based observations), they'll be output unchanged. Any existing 's' lines or <pos> data will be removed, to avoid conflicts with the new spacecraft positions.

Spacecraft velocities : For 80-column data, a COM (comment) line will be added before each observation that gives the spacecraft velocity, in km/s. Most software will ignore this. But you need the spacecraft velocity to compute apparent angular motion of an object or its radial velocity as seen from the spacecraft, or to compute along-track and cross-track residuals.

The 2022 version of ADES provides a way to specify the spacecraft velocity, and this program will add the velocities using that method.


Or, you can upload a file containing the astrometry.


Background on how this works

Fortunately, the JPL Horizons system makes it relatively straightforward to request data of this sort. The C program that does this (look at add_off.c) just looks for 'S' records, then sends JPL a request for the positions of each spacecraft at the various dates in those records. Then it runs through the file again and outputs the added 's' records.

Once you have the source code, you can run make add_off to make an off-line utility, and/or make add_off.cgi to make the on-line version that underlies this page.

Currently recognized spacecraft are :

MPC code   name
(Cas) *    Cassini
(Cha) *    Chandra X-ray Observatory
(Cdr) *    Chandrayaan-3
(Equ) *    EQUULEUS
(273)      Euclid
(258)      Gaia
(Ha2) *    Hayabusa 2
(250)      Hubble Space Telescope
(274)      James Webb Space Telescope
(Jui) *    JUICE
(C55)      Kepler
(C56)      LISA Pathfinder
(Luc) *    Lucy
(LFL) *    Lunar Flashlight
(C53)      NEOSSat
(C58) *    NEO Surveyor (planned trajectory)
(C54)      New Horizons
(OsR) *    OSIRIS-REx
(PSP) *    Parker Solar Probe
(Prg) *    Peregrine
(Psy) *    Psyche
(Sli) *    SLIM
(249)      SOHO
(SoO) *    Solar Orbiter
(245)      Spitzer Space Telescope
(C49)      STEREO-A
(C50)      STEREO-B
(C52)      Swift
(C57)      TESS
(Tia) *    Tianwen-1
(C51)      WISE
(C59)      Yangwang 1

Asterisked codes are unofficial. MPC doesn't know about any of them; don't use asterisked codes in any interaction with MPC. They'll work fine with Find_Orb, Sat_ID, AstCheck, and any other tools on this site. Cassini did get some astrometry of the outer moons of Saturn, and there's some hope that PSP and/or Solar Orbiter may observe a comet or two (actually, I've received as yet unpublished comet observations from PSP), and I'd expect others to come up. Some of these spacecraft, of course, are unlikely to ever produce astrometry.

If you run into questions/problems, please contact me.