<p>Take a look at the explanations that HORIZONS prints below the table of coordinates that it prints out. It explains the apparent coordinates this way:</p>
<pre><code> 'R.A.__(a-app), DEC_(a-app),' =
  Airless apparent right ascension and declination of the target center
with respect to an instantaneous reference frame defined by the Earth equator
of-date (z-axis) and meridian containing the Earth equinox of-date (x-axis,
EOP-corrected IAU76/80). Compensated for down-leg light-time delay,
gravitational deflection of light, stellar aberration, precession &amp; nutation.
Note: equinox (RA origin) is offset -53 mas from the of-date frame defined
by the IAU06/00a P &amp; N system.

  Units: RA  in hours-minutes-seconds of time,   HH MM SS.ff{ffff}
         DEC in degrees-minutes-seconds of arc, sDD MN SC.f{ffff}
</code></pre>
<p>Thus, these are not permanent &quot;J2000&quot; coordinates (really, ICRS these days), but coordinates relative to the Earth's mean equator ­— coordinates, in other words, that are in a coordinate system that precesses with the Earth.</p>
<p>So give Skyfield an argument asking for a coordinate system that follows the Earth's precession, like this:</p>
<pre><code>ra, dec, distance = apparent.radec(epoch='date')
</code></pre>
<p>The result will agree almost exactly with HORIZONS: an RA of <code>15h 51m 59.23s</code> versus <code>15 51 59.22</code>.</p>

CC BY-SA 4.0
2024-12-15T13:39:23.633Z
2024-12-15T13:39:23.633Z
Brandon Rhodes
<p>When I trying to match between Skyfield and Horizons JPL data (with observer in geocentric), I found that the both value have differences. Here's configurations I have:</p>
<pre><code>MAKE_EPHEM=YES
COMMAND=10
EPHEM_TYPE=OBSERVER
CENTER='500@399'
START_TIME='2024-Nov-22'
STOP_TIME='2024-Nov-23'
STEP_SIZE='1 HOURS'
QUANTITIES='2,13,20,31'
REF_SYSTEM='ICRF'
CAL_FORMAT='CAL'
CAL_TYPE='M'
TIME_DIGITS='MINUTES'
ANG_FORMAT='HMS'
APPARENT='AIRLESS'
RANGE_UNITS='AU'
SUPPRESS_RANGE_RATE='NO'
SKIP_DAYLT='NO'
SOLAR_ELONG='0,180'
EXTRA_PREC='NO'
R_T_S_ONLY='NO'
CSV_FORMAT='YES'
OBJ_DATA='NO'
</code></pre>
<p>In 2024-Nov-22 00:00, for example, the Apparent RA is 15h 51m 59.22s and Apparent Declination of Sun is -20 11 08.4.</p>
<p>But in Skyfield, it show the apparent RA is 15h 50m 32.61s and apparent declination is -20deg 06' 35.6&quot;.</p>
<p>Here's skyfield code I use:</p>
<pre><code>from skyfield.api import load

ts = load.timescale()
t = ts.utc(2024, 11, 22, 0)
planets = load('de440.bsp')
earth, sun = planets['earth'], planets['sun']

apparent = earth.at(t).observe(sun).apparent()
ra, dec, distance = apparent.radec()

print('RA:', ra)
print('Dec:', dec)
</code></pre>

CC BY-SA 4.0
2024-11-22T21:23:56.467Z
I get 2024-Nov-22 00:00     15 50 34.05 -20 06 40.1 from Horizons web, a few arc seconds from the Skyfield result. Are you sure you selected geocentric?
amateurAstro
CC BY-SA 4.0
2024-11-23T00:37:33.823Z
@amateurAstro The result you get is astrometric RA-Dec instead of apparent RA-Dec
Ath Genube
CC BY-SA 4.0
2024-11-23T06:26:05.840Z
Yes, it looks like Skyfield is giving you astrometric RA-Dec instead of apparent RA-Dec. Other differences are probably due to the EOP file. See **High Precision Earth Orientation Parameter (EOP) Model** under https://ssd.jpl.nasa.gov/horizons/manual.html#longterm
PM 2Ring
CC BY-SA 4.0
2024-11-23T06:27:43.993Z
Here's a query with both astrometric & apparent data for the geocenter. https://ssd.jpl.nasa.gov/api/horizons.api?format=text&COMMAND=10&CENTER=500%40399&TLIST=%272024-Nov-22%27&QUANTITIES=%271%2C2%27&CSV_FORMAT=YES&OBJ_DATA=NO Also note that Horizons currently uses DE441
PM 2Ring
CC BY-SA 4.0
2024-11-23T15:18:50.243Z
According to the skyfield docs, observe() gives astromentric coordinates, and observe().apparent() gives apparent coordinates.  So, if it really is displaying astrometric coordinates, that would be a major bug in Skyfield, and hard to believe no one had found it before. My bet is it's something else.
Greg Miller
<python><declination><skyfield><jpl><jpl-horizons>
Apparent RA-Dec value with geocentric observer didnt match between Skyfield and Horizons
Ath Genube
# Apparent RA-Dec value with geocentric observer didnt match between Skyfield and Horizons

(Asked by: username_0 on 2024-11-22)

When I trying to match between Skyfield and Horizons JPL data (with observer in geocentric), I found that the both value have differences. Here's configurations I have:
MAKE_EPHEM=YES
COMMAND=10
EPHEM_TYPE=OBSERVER
CENTER='500@399'
START_TIME='2024-Nov-22'
STOP_TIME='2024-Nov-23'
STEP_SIZE='1 HOURS'
QUANTITIES='2,13,20,31'
REF_SYSTEM='ICRF'
CAL_FORMAT='CAL'
CAL_TYPE='M'
TIME_DIGITS='MINUTES'
ANG_FORMAT='HMS'
APPARENT='AIRLESS'
RANGE_UNITS='AU'
SUPPRESS_RANGE_RATE='NO'
SKIP_DAYLT='NO'
SOLAR_ELONG='0,180'
EXTRA_PREC='NO'
R_T_S_ONLY='NO'
CSV_FORMAT='YES'
OBJ_DATA='NO'

In 2024-Nov-22 00:00, for example, the Apparent RA is 15h 51m 59.22s and Apparent Declination of Sun is -20 11 08.4.
But in Skyfield, it show the apparent RA is 15h 50m 32.61s and apparent declination is -20deg 06' 35.6".
Here's skyfield code I use:
from skyfield.api import load

ts = load.timescale()
t = ts.utc(2024, 11, 22, 0)
planets = load('de440.bsp')
earth, sun = planets['earth'], planets['sun']

apparent = earth.at(t).observe(sun).apparent()
ra, dec, distance = apparent.radec()

print('RA:', ra)
print('Dec:', dec)

**Tags:** python, declination, skyfield, jpl, jpl-horizons
> **Comments:**
> **username_1**: I get 2024-Nov-22 00:00     15 50 34.05 -20 06 40.1 from Horizons web, a few arc seconds from the Skyfield result. Are you sure you selected geocentric?  
> **username_0**: @amateurAstro The result you get is astrometric RA-Dec instead of apparent RA-Dec  
> **username_2**: Yes, it looks like Skyfield is giving you astrometric RA-Dec instead of apparent RA-Dec. Other differences are probably due to the EOP file. See **High Precision Earth Orientation Parameter (EOP) Model** under https://ssd.jpl.nasa.gov/horizons/manual.html#longterm  
> **username_2**: Here's a query with both astrometric & apparent data for the geocenter. https://ssd.jpl.nasa.gov/api/horizons.api?format=text&COMMAND=10&CENTER=500%40399&TLIST=%272024-Nov-22%27&QUANTITIES=%271%2C2%27&CSV_FORMAT=YES&OBJ_DATA=NO Also note that Horizons currently uses DE441  
> **username_3**: According to the skyfield docs, observe() gives astromentric coordinates, and observe().apparent() gives apparent coordinates.  So, if it really is displaying astrometric coordinates, that would be a major bug in Skyfield, and hard to believe no one had found it before. My bet is it's something else.  

---

## 1 answers

### Answer by username_4 on 2024-12-15. Score: 1

Take a look at the explanations that HORIZONS prints below the table of coordinates that it prints out. It explains the apparent coordinates this way:
 'R.A.__(a-app), DEC_(a-app),' =
  Airless apparent right ascension and declination of the target center
with respect to an instantaneous reference frame defined by the Earth equator
of-date (z-axis) and meridian containing the Earth equinox of-date (x-axis,
EOP-corrected IAU76/80). Compensated for down-leg light-time delay,
gravitational deflection of light, stellar aberration, precession & nutation.
Note: equinox (RA origin) is offset -53 mas from the of-date frame defined
by the IAU06/00a P & N system.

  Units: RA  in hours-minutes-seconds of time,   HH MM SS.ff{ffff}
         DEC in degrees-minutes-seconds of arc, sDD MN SC.f{ffff}

Thus, these are not permanent "J2000" coordinates (really, ICRS these days), but coordinates relative to the Earth's mean equator ­— coordinates, in other words, that are in a coordinate system that precesses with the Earth.
So give Skyfield an argument asking for a coordinate system that follows the Earth's precession, like this:
ra, dec, distance = apparent.radec(epoch='date')

The result will agree almost exactly with HORIZONS: an RA of 15h 51m 59.23s versus 15 51 59.22.


---

