The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
The astronomyengine R package provides R bindings to the Astronomy Engine. It
bundles an up-to-date copy of the Astronomy Engine C
library by Don Cross as a single-file header + source pair. This
provides low-level access to the C library so that other R packages can
link against it via LinkingTo without bundling their own
copy.
Astronomy Engine is an open-source library for calculating positions of the Sun, Moon, and planets, and for predicting astronomical events such as rise/set times, lunar phases, equinoxes, solstices, eclipses, and transits. It is based on the VSOP87 planetary model and is accurate to within approximately ±1 arcminute.
You can install the released version of astronomyengine from CRAN with:
install.packages("astronomyengine")And the development version from GitHub with:
# install.packages("pak")
pak::pak("mitchelloharawild/astronomyengine")library(astronomyengine)
# All functions accept a `POSIXct` time as input.
# Here we use a reference time of 2025-02-19 12:00 UTC for all examples.
now <- as.POSIXct("2025-02-19 12:00:00", tz = "UTC")The R functions and documentation are designed to be as similar as possible to the C API. Therefore the most comprehensive resource for learning how to use the package is the Astronomy Engine C API documentation. If you need support for how to use the package, I suggest that you also search for information about the underlying C library.
Find the next sunrise at a given location — here, Sydney Observatory (latitude −33.87°, longitude 151.21°):
astro_search_rise_set(
astro_body[["SUN"]], now,
latitude = -33.8688, longitude = 151.2093
)
#> [1] "2025-02-19 19:34:50 UTC"astro_moon_phase() returns the Moon’s phase as an angle
in degrees: 0° = new moon, 90° = first quarter, 180° = full moon, 270° =
third quarter.
astro_moon_phase(now)
#> [1] 256.4968Search for the next time the Moon reaches a specific phase angle. Use 180° for a full moon:
astro_search_moon_phase(180, now, limit_days = 30)
#> [1] "2025-03-14 06:55:19 UTC"Find the next solar eclipse visible anywhere on Earth:
eclipse <- search_global_solar_eclipse(now)
eclipse
#> $status
#> [1] 0
#>
#> $kind
#> [1] 2
#>
#> $peak
#> [1] "2025-03-29 10:47:25 UTC"
#>
#> $distance
#> [1] 6637.035
#>
#> $latitude
#> [1] NaN
#>
#> $longitude
#> [1] NaNThe kind field indicates the eclipse type: 0 = partial,
1 = annular, 2 = total. This total solar eclipse peaks on
2025-03-29.
Note:
latitudeandlongitudein the eclipse result indicate the point of greatest eclipse on Earth’s surface. These are only populated for annular eclipses; for total eclipses they will beNaN.
A transit occurs when Mercury passes directly between the Earth and the Sun. These are rare — the next one after February 2025 is in November 2032:
astro_search_transit(astro_body[["MERCURY"]], now)
#> $start
#> [1] "2032-11-13 06:41:48 UTC"
#>
#> $peak
#> [1] "2032-11-13 08:54:14 UTC"
#>
#> $finish
#> [1] "2032-11-13 11:06:53 UTC"
#>
#> $separation
#> [1] 9.594123astro_seasons() returns all four seasonal turning points
for a given year:
astro_seasons(2025)
#> $mar_equinox
#> [1] "2025-03-20 09:01:26 UTC"
#>
#> $jun_solstice
#> [1] "2025-06-21 02:42:17 UTC"
#>
#> $sep_equinox
#> [1] "2025-09-22 18:19:34 UTC"
#>
#> $dec_solstice
#> [1] "2025-12-21 15:03:03 UTC"To use the Astronomy Engine C API from another R package:
Add astronomyengine to both Imports and
LinkingTo in your DESCRIPTION:
Imports: astronomyengine
LinkingTo: astronomyengineInclude the header in your C or C++ source files:
#include <astronomy/astronomy.h>For detailed documentation of the C API, including key types, functions, supported bodies, and coordinate frame rotations, see the Astronomy Engine C API documentation.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.