Eclipses with SkyField

Eclipses with SkyField

We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

I'm trying to compute solar eclipses for a long period of time, see Back-predicting solar eclipses

Initially, I wanted at several points on Earth whether an eclipse was visible at some point in time. I have since changed the approach and I will now compute whether an eclipse could be seen from the center of the Earth at a given moment. Later, after knowing roughly the time of the eclipse, I will iterate over a grid on Earth to check where it could be actually seen. So far, my first question is: is it right to check for eclipses at the center of the Earth?

Secondly, I wrote a small code in Python to test how good I am at predicting eclipses, checking against for these coordinates:

Lat.: 27.4782° N Long.: 109.9299° W

#!/usr/bin/python from skyfield.api import load, Topos from skyfield.positionlib import ICRF planets = load('Ephemerides/de422.bsp') ts = load.timescale() earth = planets['earth'] sun = planets['sun'] moon = planets['moon'] time = ts.utc(150,12,06,23,49,21.9) place = earth + Topos('27.4782 N','109.9299 W') observe_moon = observe_sun = distance = ICRF(observe_moon).separation_from(ICRF(observe_sun)) distance = distance.degrees print distance

The distance I obtain is above 10 degrees, while at the time provided, if I did things correctly, the eclipse was at its maximum at those coordinates. What is wrong in my code or my understanding?

I believe the differences here are caused by the different timescales that are being used by SkyField vs NASA.

It seems that SkyField uses the proleptic Gregorian calendar for dates in the past. However, NASA used the Julian Calendar for dates before 1582, so for example, the eclipse on 0150-12-06 (Julian) falls on 0150-12-05 in Gregorian. Also, I would usets.ut1instead ofts.utc, as ut1 is the timescale used by NASA.

Using the geocenter can be a efficient way to check for eclipses worldwide. When observing from the geocenter, the penumbral shadow cone touches the Earth when the following condition is true: $$mu ≤ arcsin(frac{r_m + r_e}{d_m}) + arcsin(frac{R_s - r_e}{D_s})$$ Where $mu$ is the angular separation between the Sun and the Moon, $D_s$ is the distance of the Sun, $d_m$ the distance of the Moon, and the three constant radii are:

Sun: $R_s = 695700 km$

Earth: $r_e = 6378 km$

Moon: $r_m = 1737.4 km$

This indicates that an eclipse, at least partial, is occuring somewhere on the Earth. The formula uses a spherical Earth as an approximation of its shape, so in some rare cases it can detect very near-misses by 20-25 km, but overall it is a good way to narrow down the search. Also, it is unnecessary to test this when the angular separation is outside the range 1.3° - 1.7°, since values below 1.3° always produce an eclipse, and values above 1.7° never produce one.

I would also like to point out that uncertainties, mostly in Earth's rotation speed, make it very difficult to know where eclipses occured on the surface of the Earth for dates in the far past. The uncertainty becomes very large outside the range BC2000 - AD3000. This is the reason why NASA hasn't computed eclipse paths outside that range. According to research, the uncertainty could be as large as over 4 hours (several thousands of kilometers for eclipse paths) for dates before BC4000. See this explanation on NASA's Eclipse Web Site.

To answer your first question, you will rarely or never see a total eclipse at the center of the Earth because the moon's shadow isn't long enough. You would, however, see partial annular eclipses.

If you do see a partial annular eclipse at the center of the Earth, there will definitely be one (not necessarily total) somewhere on the surface of the Earth.

The opposite, however, is not true. It's quite possible for locations on Earth to see a solar eclipse, but the shadow not to pass through the Earth's center, so a center-of-Earth (geocentric) observer wouldn't see even an annular or partial eclipse.

Standard debugging tip: try with an eclipse closer to today to see if it's the code, inaccuracy of Skyfield, or just that the umbra didn't hit the Earth's center.

Eclipses with SkyField - Astronomy

This is a collection of python code I wrote to calculate ephemerides for satellites from TLE data. Specifically this program is arranged to determine when to observe Starlink satellites. The base functions however can be used for any satellite TLE.

This program utilizes the Skyfield python library for all the behind the scenes astronomic calculations. Skyfield is an excellent astronomy library made by Brandon Rhodes who also made the popular PyEphem library in some ways Skyfield is intended to replace and supersede PyEphem.

Notably for calculating satellite positions Skyfield utilizes the proper SGP4 algorithms to match those used to generate a TLE and should the most accurate results.

You can easily install Skyfield with pip

The first time you run the program Skyfield will automatically download several files to the working directory. These files are needed for Skyfield to make accurate calculations of astronomic bodies.

The file contains the script I use specifically for our telescope. You will likely not be able to use the same script but should use it as a template for creating your own. This script calls the functions from the other files to calculate the observable passes and then writes an ACP observing plan for our telescope. If your telescope can use ACP observing plans then you may find this script useful and will just need to adjust the timings and other parameters. contains the main functional component for the overall program. This function downloads the latest TLE data for Starlink from Celestrak and then computes all observable passes for the given time range, location, and optional parameters. The optional parameters include whether or not the Sun or Moon is up, whether or not a satellite is eclisped by the Earth's shadow, and the minimum altitude above the horizon. contains the function computeEphemeris() which is the encompassing function for calculating the exact position and other parameters for a satellite at a singular point in time.

When running the main pass predictor you may see an incomplete pass error in the console. This error is harmless and simply indicates that when calculating the next pass for the satellite it did not find a valid rise, peak, or set time within the given time range. This could be because the satellite was mid-pass during the start or end of the specified time window or the satellite will not rise or set as in the case of a GEO satellite.

Solar Eclipses

A lunar eclipse occurs when the moon is at opposition to the sun and passes through the earth’s shadow. Because of this, a lunar eclipse will always happen during a full moon. Lunar eclipses were seen by some Aboriginal groups as an omen that a relative was in danger or that someone on a journey had become sick or was injured or killed.

The Lardil of Mornington Island viewed the Moon as a greedy and selfish man who steals food and gorges, getting fatter and fatter (waxing Moon). As punishment for this action, he is cut into pieces, getting thinner (waning Moon) until he dies (new moon). The new moon, along with the sudden and apparent ‘death’ of the Moon during a lunar eclipse, served as a warning to younger generations about the Moon’s selfish nature, reinforcing the taboo of food theft and gluttony.

During a total lunar eclipse, the moon will turn dark before transforming to a reddish hue. Because the light is being refracted by the Earth’s thick atmosphere, the longer wavelengths of light dominate, giving the Moon this colour. The colour is noted by some Aboriginal groups who believed a lunar eclipse revealed the Moon-man’s blood.

Native American Solar Eclipse Myths and Legends

The Pomo, an indigenous group of people who live in the northwestern United States, tell a story of a bear who started a fight with the Sun and took a bite out of it. In fact, the Pomo name for a solar eclipse is Sun got bit by a bear.

After taking a bite of the Sun and resolving their conflict, the bear, as the story goes, went on to meet the Moon and take a bite out of the Moon as well, causing a lunar eclipse. This story may have been their way of explaining why a solar eclipse happens about around 2 weeks before or after a lunar eclipse.

2 Answers 2

Your conjection-finding code looks very good, and I suspect its results are far better than those of the Wikipedia — looking at the version history, it’s not clear where their numbers even came from, and unattributed astronomy calculations can’t easily be double-checked without knowing from which ephemeris and software they derived them.

I attach below a slightly improved version of your solver. Here are the tweaks I recommend:

  • Pass epoch='date' when computing coordinates, since conjunctions and oppositions are traditionally defined according to the celestial sphere of the year in which they happen, not the standard J2000 celestial sphere.
  • Before doing any math on the dates, force them into a range of zero to a full circle (360 degrees or 24 hours). Otherwise, you will see the result of the subtraction jump by ±360°/24h whenever one of the right ascensions or longitudes happens to cross 0°/0h and change signs. This will give you “phantom conjunctions” where the planets are not really swapping places but merely switching the sign of the angle they’re returning. (For example: jumping from -69° to 291° is really no motion in the sky at all.)
  • Note that both of our scripts should also find when Jupiter and Saturn are across the sky from each other, since the sign of their difference should also flip at that point.
  • In case any sources you track down cite the moment of closest approach or the angle between the planets at that moment, I've added it in.

Here’s the output, very close to yours, and again not agreeing well with those old unexplained uncredited Wikipedia numbers:

I have tried my best to avoid my feel of possibility of opinion based answers on this question and looked this up on internet. Found out it is quite hard to find any relevant info that I could trust, so I enumerate these posts (except wikipedia):

timeanddate is stating the exact time is 18:20 UTC on December 21, which is as you have calculated

winstars have stated the time when the planets will be at closest angle as 18:25 UTC and they mention that conjunction will occur at 13:30 UTC, I am not sure if that is the first time.

Not sure how relevant is this, but the conjunction here is stated to be 6.2 degreest at 17:32 GMT, thus 18:32 UTC

The most relevant source I was able to find was in the sky, where the time was estimated exactly to 13:24 UTC., based on calculations on data by Jet Propulsion Laboratory - source code can be checked here (c).

You can see that mostly not both types of calculation are used, and that the times vary. The reason of that is that in such calculations you need very long floats for best precision. As you are limited by the machine you use, the precision is not perfect. Such as @bad_coder has suggested, you might get better answer in Astronomy stack exchange.

Di mana saya dapat menemukan / memvisualisasikan posisi planet / bintang / bulan / dll?

Sumber daya apa yang tersedia untuk menemukan posisi planet, bintang, bulan, satelit buatan, asteroid, dan benda langit lainnya?

Ada banyak sumber daya online, jadi saya membuat ini sebagai jawaban wiki komunitas. Silakan menambahkannya!

Jika Anda ingin memvisualisasikan bintang / planet / dll (seperti yang dilihat dari Bumi atau lokasi lain), Anda mencari perangkat lunak planetarium:

Jika Anda ingin posisi yang akurat untuk bintang / planet / dll, Anda mencari HORIZON:

Jika Anda ingin menghitung sendiri posisi bintang / planet, Anda memiliki beberapa opsi:

SPICE ( ) akan memberi Anda hasil yang sangat cocok dengan HORIZONS. Anda juga dapat menggunakan beberapa fungsionalitas SPICE online di

File SPK (Spice kernel) tersedia di - sementara ini terutama ditujukan untuk digunakan dengan CSPICE, formatnya didokumentasikan dan Anda dapat menggunakannya langsung. Ini dijelaskan di dan diimplementasikan dalam Python di

Jika Anda ingin melakukan sendiri perhitungan SPICE (memecahkan persamaan diferensial secara numerik), lihat /astronomy//a/13491/21

Anda mungkin juga ingin menggunakan simulator n-tubuh untuk melakukan perhitungan sendiri: /physics/25241/what-open-source-n-body-codes-are-available-and-what -adalah-fitur mereka

IAU SOFA ( ) akan memberi Anda perpustakaan "resmi" International Astronomical Union untuk menghitung posisi.

Jika Anda ingin memperlakukan orbit planet sebagai elips sederhana dan mengabaikan gangguan, Anda dapat menemukan elemen orbital di tetapi Anda mungkin ingin mengunjungi https: // ssd /? badan # elem terlebih dahulu

Perhatikan bahwa pustaka komputasi ini tidak selalu setuju satu sama lain atau dengan perangkat lunak planetarium:

Astronomy Picture of the Day

Discover the cosmos! Each day a different image or photograph of our fascinating universe is featured, along with a brief explanation written by a professional astronomer.

2021 June 12
Eclipse on the Water
Image Credit & Copyright: Elliot Severn

Explanation: Eclipses tend to come in pairs. Twice a year, during an eclipse season that lasts about 34 days, Sun, Moon, and Earth can nearly align. Then the full and new phases of the Moon separated by just over 14 days create a lunar and a solar eclipse. Often partial eclipses are part of any eclipse season. But sometimes the alignment at both new moon and full moon phases during a single eclipse season is close enough to produce a pair of both total (or a total and an annular) lunar and solar eclipses. For this eclipse season, the New Moon following the Full Moon's total lunar eclipse on May 26 did produce an annular solar eclipse along its northerly shadow track. That eclipse is seen here in a partially eclipsed sunrise on June 10, photographed from a fishing pier in Stratford, Connecticut in the northeastern US.

Notable images submitted to APOD: June 10 solar eclipse
Tomorrow's picture: Supercell Sunday

Differential refraction of light can lead to slit-losses inspectroscopy. For example, at an airmass of 1.5 the differential refraction between 4000 and 6000 Angstroms is 1.08 arcseconds, whereas at an airmass of 3.0, it is 2.75 arcseconds!

Since differential refraction occurs in a direction perpendicular to the horizon, the ideal slit position angle is also perpendicular tothe horizon. In other words when the object is on the meridian, the position angle of the slit should be 0° or 180°. This angle,called the parallactic angle, will change as the object's distance fromthe meridian changes. As the object is usually close to the zenith onthe meridian the effect is generally small. When observing at largehour angles, however, where the objects typically have a high airmass,the angle will be close to 90° which is why the default setting ofthe instrument is with the slit in the East-West direction.

A fuller discussion of differential refraction and the parallactic angle can be found in: Filippenko, PASP 94, 715.



When the moon is closest to Earth, a position known as perigee, it can appear at its biggest and brightest. When it is at its farthest position, known as apogee, it may appear dimmer and smaller than usual. We refer colloquially to a full moon near perigee as a supermoon.

On average, the moon is about 238,900 miles away from Earth. On Nov. 25, 2034, it will be only about 221,487 miles away, making it the largest supermoon since 2016. But the largest supermoon of the century will happen on Dec. 6, 2052, when the moon will be only about 221,475 miles away.

Some other eye-catching supermoons to check out include:

Feb. 9, 2020

If you cannot wait until 2034, this will be the next supermoon.

May 26, 2021

The super blood moon — which is just a lunar eclipse while the moon is near perigee — will be visible in Asia, Australia and parts of the Pacific. The next super blood moon visible in America will be on May 16, 2022.

Inner Solar System in VR

This site is a set of WebXR experiments to show Inner Solar System in a VR Headset for informative purposes. Click on the images below to open corresponding experiment page. See below for more information.


The aim of these experiments is to show the positions and the sizes of the planets and their orbits as close to reality as possible while being easily observable within a VR headset. This is particularly difficult because space is mostly empty so it is impossible to show and give a true feeling of everything in a single frame, so the scale of length used to draw the planets and the scale of length used to represent distances among them should be different or navigation has to be used to travel large distances.

Although it is possible to view the pages in a non-VR environment, the experience will be far from what is intended.

More information is given in the pages of individual experiments.


    for the mass and the axial tilt (Obliquity to Orbit) data of the planets. to calculate the position and the orbit of the planets. to calculate the position and the orbit of Parker Solar Probe to be able to use SpiceyPy package which is an interface to SPICE toolkit. App to check the positions of the planets.

Technical Information

The whole application is actually pretty simple but not very easy to understand quickly without a little bit of astronomy background. The backend (api) provides the current and past/future positions of the planes and other space objects using Skyfield and SpicePy (py interface to SPICE) astronomy packages using real astronomical data (Ephemeris) made publicly available from places like NASA Jet Propulsion Laboratory. Particularly, DE421 Ephemeris is currently being used.

Different coordinate systems (reference frames) can be used for these calculations to result positions in specific reference frames, and ECLIPJ2000 is used in this application. In ECLIPJ2000, the center is Solar System Barycenter and one of the planes defined by primary axes (XY) is Earth's ecliptic plane (the plane Earth orbits around Sun). The positions in ECLIPJ2000 is given in kilometers.

The backend (api) is coded in Python and hosted at Google AppEngine.

The VR 3D environment in frontend (web pages) is coded using A-Frame web framework. The positions in ECLIPJ2000 is set directly to the 3D objects and a single rotation is used to turn ECLIPJ2000 to the coordinate system used in A-Frame.

There are always two scaling factors used one is to scale the planets and the sun, other is to scale the distances between them (so the actual positions). They normally differ by a factor in the range of 1000x, but different scaling factors can be used in different experiments to give a particular feeling. Also, Sun is much bigger than the planets, and normally it is shown smaller (

10x) than what it should be comparing to the planets.

The frontend app is hosted at Netlify and tested on Oculus Go and Quest. I use Glitch during development, and export it to Github and when merged to master this is deployed to Netlify.


Please send an email to: info at


Watch the video: The Electric Sons - Eclipses Elio Stereo Instrumental Remix (May 2022).