Read moons given against their planet's equator, and dwarf planets from the Small-Body Database
Two sources the missing bodies need, read and tested before any body uses them.
JPL's satellite table gives Uranus's and Pluto's moons against the planet's equator ("Mean
equatorial orbital elements") rather than a Laplace plane, and does not print that equator's
pole. parseSatelliteMeanElements now takes the pole from its caller for such a section and reads
the row against it exactly as against a Laplace plane's; it throws if a section is equatorial and
no pole was given, or a pole was given for a section that is not. Read as ecliptic elements, which
is what the old code would have done, Titania is 88 degrees from Horizons on 2025-01-01. The
section's plane is now the nearest heading above the row, with the ecliptic as before where there
is none.
Ceres, Eris, Haumea and Makemake are in none of Standish's tables. parseSmallBodyElements reads a
JPL SBDB answer (sbdb.api?sstr=...&phys-par=1&full-prec=1): the osculating heliocentric elements
against the J2000 ecliptic, carried round at their own n with nothing turning, and half the
published diameter and the rotation period where the answer has them. full-prec matters: without
it SBDB rounds to three figures, Ceres's n to 0.214 degrees a day for 0.2143045, 1.1 degrees out
within a decade. The fetcher, tools/etl/lib/mean-elements.ts, caches the answer like the others.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { fetchTextCached } from './http';
|
||||
import { SbdbAnswer } from '../../../src/app/shared/astro/mean-elements';
|
||||
import { fetchJsonCached, fetchTextCached } from './http';
|
||||
|
||||
/**
|
||||
* Standish's "Keplerian Elements for Approximate Positions of the Major Planets", Table 2a/2b:
|
||||
@@ -29,3 +30,12 @@ export async function fetchPlanetMeanElementsText(): Promise<string> {
|
||||
export async function fetchSatelliteMeanElementsHtml(): Promise<string> {
|
||||
return fetchTextCached(SATELLITE_ELEMENTS_URL, 'jpl-satellite-mean-elements.html');
|
||||
}
|
||||
|
||||
/**
|
||||
* A small body's answer from JPL's Small-Body Database: osculating elements to full precision
|
||||
* (without `full-prec` they come rounded to three figures: Ceres's n as 0.214 degrees a day for
|
||||
* 0.2143045, which is 1.1 degrees out within a decade) and its physical parameters.
|
||||
*/
|
||||
export async function fetchSmallBodyAnswer(designation: string, cacheKey: string): Promise<SbdbAnswer> {
|
||||
return fetchJsonCached<SbdbAnswer>(`https://ssd-api.jpl.nasa.gov/sbdb.api?sstr=${encodeURIComponent(designation)}&phys-par=1&full-prec=1`, cacheKey);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user