Three new layers from the OSINT4ALL directory triage: - jamcams (registry): ~800 live London traffic cameras via TfL open API (CORS-open, keyless). Click a cam dot -> live snapshot in the InfoBox, 5-min cache-busted refresh. New collapsed 'Regional - London' category. - inciweb (registry): named US wildfire incidents from InciWeb RSS. New spec.parse hook in the geojson-layer factory lets XML feeds supply their own parser; coordinates regex'd out of DMS text in <description>. - radio (bespoke): ~12k live radio stations from Radio Garden pinned to their cities (PointPrimitiveCollection). Click -> station list + live audio player (audio streams direct; JSON via new allowlisted serve.py proxy/rg/ with 12h/1h caches, SSRF-tested). Keeps playing while you pan. Deploy note: prod nginx needs a location for /godsigh/proxy/rg/ before the radio layer works live (mirror of serve.py RG_PATH_RE allowlist). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
217 lines
10 KiB
JavaScript
217 lines
10 KiB
JavaScript
// Static data for Solar System mode: infographic facts per body (no Earth — that's
|
||
// the OSINT globe) and a curated set of real planetary missions with date-accurate
|
||
// launch / flyby / arrival waypoints (fed through the live ephemeris to draw
|
||
// schematic heliocentric transfer arcs, including gravity-assist grand tours).
|
||
|
||
export const FACTS = {
|
||
sun: {
|
||
blurb: 'The star at the heart of it all — a giant ball of plasma holding 99.86% of the solar system’s mass.',
|
||
stats: [
|
||
['Type', 'G2V yellow dwarf'],
|
||
['Diameter', '1,391,000 km'],
|
||
['Mass', '333,000 × Earth'],
|
||
['Surface', '~5,500 °C'],
|
||
['Core', '~15,000,000 °C'],
|
||
['Age', '~4.6 billion yrs'],
|
||
['Made of', 'Hydrogen · Helium'],
|
||
['Light to Earth', '8 min 20 s'],
|
||
],
|
||
fact: 'About 1.3 million Earths would fit inside it.',
|
||
},
|
||
mercury: {
|
||
blurb: 'The smallest planet and the closest to the Sun — a scorched, cratered ball of rock with almost no atmosphere.',
|
||
stats: [
|
||
['Diameter', '4,879 km'],
|
||
['Gravity', '0.38 g'],
|
||
['Day', '176 Earth days'],
|
||
['Year', '88 Earth days'],
|
||
['Temp', '−173 to 427 °C'],
|
||
['Moons', '0'],
|
||
['From Sun', '0.39 AU'],
|
||
],
|
||
fact: 'A day on Mercury (sunrise to sunrise) lasts two of its years.',
|
||
},
|
||
venus: {
|
||
blurb: 'Earth’s hellish twin — a runaway greenhouse wrapped in sulfuric-acid clouds, hot enough to melt lead.',
|
||
stats: [
|
||
['Diameter', '12,104 km'],
|
||
['Gravity', '0.90 g'],
|
||
['Day', '243 days (backwards)'],
|
||
['Year', '225 Earth days'],
|
||
['Surface', '~465 °C'],
|
||
['Moons', '0'],
|
||
['From Sun', '0.72 AU'],
|
||
],
|
||
fact: 'It spins backwards, and its day is longer than its year.',
|
||
},
|
||
mars: {
|
||
blurb: 'The Red Planet — a cold desert of rusted iron with the tallest volcano and deepest canyon in the solar system.',
|
||
stats: [
|
||
['Diameter', '6,779 km'],
|
||
['Gravity', '0.38 g'],
|
||
['Day', '24 h 37 m'],
|
||
['Year', '687 Earth days'],
|
||
['Temp', 'avg −63 °C'],
|
||
['Moons', '2 (Phobos, Deimos)'],
|
||
['From Sun', '1.52 AU'],
|
||
],
|
||
fact: 'Olympus Mons rises 22 km — nearly 3× the height of Everest.',
|
||
},
|
||
jupiter: {
|
||
blurb: 'The king of the planets — a gas giant so massive it could swallow all the others, wrapped in banded storms.',
|
||
stats: [
|
||
['Diameter', '139,820 km'],
|
||
['Gravity', '2.53 g'],
|
||
['Day', '9 h 56 m (fastest)'],
|
||
['Year', '11.9 Earth years'],
|
||
['Cloud tops', '~−110 °C'],
|
||
['Moons', '95 known'],
|
||
['From Sun', '5.20 AU'],
|
||
],
|
||
fact: 'The Great Red Spot is a storm wider than the whole Earth.',
|
||
},
|
||
saturn: {
|
||
blurb: 'The jewel of the solar system — a gas giant circled by billions of ice and rock chunks in a dazzling ring system.',
|
||
stats: [
|
||
['Diameter', '116,460 km'],
|
||
['Gravity', '1.07 g'],
|
||
['Day', '10 h 42 m'],
|
||
['Year', '29.5 Earth years'],
|
||
['Cloud tops', '~−140 °C'],
|
||
['Moons', '146 known'],
|
||
['From Sun', '9.54 AU'],
|
||
],
|
||
fact: 'So light for its size it would float in a big enough bathtub.',
|
||
},
|
||
uranus: {
|
||
blurb: 'A pale blue-green ice giant that got knocked over — it orbits the Sun tipped completely onto its side.',
|
||
stats: [
|
||
['Diameter', '50,724 km'],
|
||
['Gravity', '0.89 g'],
|
||
['Day', '17 h 14 m'],
|
||
['Year', '84 Earth years'],
|
||
['Cloud tops', '~−195 °C'],
|
||
['Moons', '28 known'],
|
||
['From Sun', '19.2 AU'],
|
||
],
|
||
fact: 'Its 98° tilt means each pole gets 42 years of sunlight, then 42 of dark.',
|
||
},
|
||
neptune: {
|
||
blurb: 'The farthest planet — a deep-blue ice giant whipped by the fastest winds anywhere in the solar system.',
|
||
stats: [
|
||
['Diameter', '49,244 km'],
|
||
['Gravity', '1.14 g'],
|
||
['Day', '16 h 06 m'],
|
||
['Year', '165 Earth years'],
|
||
['Cloud tops', '~−200 °C'],
|
||
['Moons', '16 known'],
|
||
['From Sun', '30.1 AU'],
|
||
],
|
||
fact: 'Supersonic winds reach 2,100 km/h — no one fully knows why.',
|
||
},
|
||
};
|
||
|
||
// Notable moons per planet. `km` = mean radius, `a` = semi-major axis (km),
|
||
// `P` = sidereal orbital period in days (negative = retrograde, e.g. Triton).
|
||
// Real values — the renderer compresses size/distance so they read on screen.
|
||
export const MOONS = {
|
||
earth: [
|
||
{ name: 'Moon', km: 1737.4, a: 384400, P: 27.322, color: '#c8c4bc' },
|
||
],
|
||
mars: [
|
||
{ name: 'Phobos', km: 11.27, a: 9376, P: 0.31891, color: '#8a7f75' },
|
||
{ name: 'Deimos', km: 6.2, a: 23463, P: 1.26244, color: '#9b9186' },
|
||
],
|
||
jupiter: [
|
||
{ name: 'Io', km: 1821.6, a: 421700, P: 1.769, color: '#e8d16b' },
|
||
{ name: 'Europa', km: 1560.8, a: 671100, P: 3.551, color: '#dcd6c8' },
|
||
{ name: 'Ganymede', km: 2634.1, a: 1070400, P: 7.155, color: '#a89b8c' },
|
||
{ name: 'Callisto', km: 2410.3, a: 1882700, P: 16.689, color: '#6e6459' },
|
||
],
|
||
saturn: [
|
||
{ name: 'Enceladus', km: 252.1, a: 238040, P: 1.370, color: '#f2f7fa' },
|
||
{ name: 'Rhea', km: 763.8, a: 527108, P: 4.518, color: '#cfc9bf' },
|
||
{ name: 'Titan', km: 2574.7, a: 1221870, P: 15.945, color: '#e8a24a' },
|
||
{ name: 'Iapetus', km: 734.5, a: 3560820, P: 79.322, color: '#9c8f7e' },
|
||
],
|
||
uranus: [
|
||
{ name: 'Miranda', km: 235.8, a: 129900, P: 1.413, color: '#b9bfc2' },
|
||
{ name: 'Ariel', km: 578.9, a: 190900, P: 2.520, color: '#c9ced0' },
|
||
{ name: 'Titania', km: 788.4, a: 436300, P: 8.706, color: '#b0b6b8' },
|
||
{ name: 'Oberon', km: 761.4, a: 583500, P: 13.463, color: '#9aa0a3' },
|
||
],
|
||
neptune: [
|
||
{ name: 'Proteus', km: 210, a: 117647, P: 1.122, color: '#8e9296' },
|
||
{ name: 'Triton', km: 1353.4, a: 354759, P: -5.877, color: '#d8cfc9' }, // retrograde
|
||
],
|
||
};
|
||
|
||
// Missions: waypoints[0] is launch (Earth); the rest are real flyby / arrival dates
|
||
// at the named body. Dates are ISO (UTC). `target` is the headline destination.
|
||
export const MISSIONS = [
|
||
{
|
||
id: 'mariner2', name: 'Mariner 2', agency: 'NASA', target: 'venus', color: '#f4a259', type: 'Venus flyby',
|
||
waypoints: [{ body: 'earth', date: '1962-08-27' }, { body: 'venus', date: '1962-12-14' }],
|
||
blurb: 'The first spacecraft ever to fly past another planet, confirming Venus’s furnace-hot, cloud-choked surface.',
|
||
},
|
||
{
|
||
id: 'mariner4', name: 'Mariner 4', agency: 'NASA', target: 'mars', color: '#e07a5f', type: 'Mars flyby',
|
||
waypoints: [{ body: 'earth', date: '1964-11-28' }, { body: 'mars', date: '1965-07-15' }],
|
||
blurb: 'Returned the first close-up photos of Mars — 21 grainy frames that ended a century of “canal” speculation.',
|
||
},
|
||
{
|
||
id: 'viking1', name: 'Viking 1', agency: 'NASA', target: 'mars', color: '#c1502a', type: 'Orbiter + lander',
|
||
waypoints: [{ body: 'earth', date: '1975-08-20' }, { body: 'mars', date: '1976-06-19' }],
|
||
blurb: 'First fully successful Mars landing; its biology experiments searched the soil for signs of life.',
|
||
},
|
||
{
|
||
id: 'voyager1', name: 'Voyager 1', agency: 'NASA', target: 'saturn', color: '#8ecae6', type: 'Jupiter · Saturn',
|
||
waypoints: [{ body: 'earth', date: '1977-09-05' }, { body: 'jupiter', date: '1979-03-05' }, { body: 'saturn', date: '1980-11-12' }],
|
||
blurb: 'Now the most distant human-made object, sailing through interstellar space over 24 billion km away.',
|
||
},
|
||
{
|
||
id: 'voyager2', name: 'Voyager 2', agency: 'NASA', target: 'neptune', color: '#ffd166', type: 'Grand Tour',
|
||
waypoints: [
|
||
{ body: 'earth', date: '1977-08-20' }, { body: 'jupiter', date: '1979-07-09' },
|
||
{ body: 'saturn', date: '1981-08-25' }, { body: 'uranus', date: '1986-01-24' }, { body: 'neptune', date: '1989-08-25' },
|
||
],
|
||
blurb: 'The only spacecraft ever to visit all four giant planets, riding a rare alignment on a single grand tour.',
|
||
},
|
||
{
|
||
id: 'magellan', name: 'Magellan', agency: 'NASA', target: 'venus', color: '#f2cc8f', type: 'Venus radar mapper',
|
||
waypoints: [{ body: 'earth', date: '1989-05-04' }, { body: 'venus', date: '1990-08-10' }],
|
||
blurb: 'Radar-mapped 98% of Venus’s surface through its opaque clouds, revealing volcanoes and vast lava plains.',
|
||
},
|
||
{
|
||
id: 'galileo', name: 'Galileo', agency: 'NASA', target: 'jupiter', color: '#b5e48c', type: 'Jupiter orbiter (VEEGA)',
|
||
waypoints: [
|
||
{ body: 'earth', date: '1989-10-18' }, { body: 'venus', date: '1990-02-10' },
|
||
{ body: 'earth', date: '1990-12-08' }, { body: 'earth', date: '1992-12-08' }, { body: 'jupiter', date: '1995-12-07' },
|
||
],
|
||
blurb: 'First to orbit Jupiter and drop a probe into its atmosphere — after slingshots off Venus and Earth twice.',
|
||
},
|
||
{
|
||
id: 'cassini', name: 'Cassini–Huygens', agency: 'NASA/ESA', target: 'saturn', color: '#e6dbb0', type: 'Saturn orbiter',
|
||
waypoints: [
|
||
{ body: 'earth', date: '1997-10-15' }, { body: 'venus', date: '1998-04-26' }, { body: 'venus', date: '1999-06-24' },
|
||
{ body: 'earth', date: '1999-08-18' }, { body: 'jupiter', date: '2000-12-30' }, { body: 'saturn', date: '2004-07-01' },
|
||
],
|
||
blurb: 'Orbited Saturn for 13 years and landed the Huygens probe on Titan — the most distant landing ever.',
|
||
},
|
||
{
|
||
id: 'juno', name: 'Juno', agency: 'NASA', target: 'jupiter', color: '#a8dadc', type: 'Jupiter polar orbiter',
|
||
waypoints: [{ body: 'earth', date: '2011-08-05' }, { body: 'earth', date: '2013-10-09' }, { body: 'jupiter', date: '2016-07-04' }],
|
||
blurb: 'Loops over Jupiter’s poles to peer beneath the clouds and map its deep interior and monster magnetic field.',
|
||
},
|
||
{
|
||
id: 'curiosity', name: 'Curiosity', agency: 'NASA', target: 'mars', color: '#e76f51', type: 'Mars rover',
|
||
waypoints: [{ body: 'earth', date: '2011-11-26' }, { body: 'mars', date: '2012-08-06' }],
|
||
blurb: 'Lowered into Gale Crater by a rocket-powered sky crane; still roving and drilling more than a decade on.',
|
||
},
|
||
{
|
||
id: 'perseverance', name: 'Perseverance', agency: 'NASA', target: 'mars', color: '#ee6c4d', type: 'Mars rover',
|
||
waypoints: [{ body: 'earth', date: '2020-07-30' }, { body: 'mars', date: '2021-02-18' }],
|
||
blurb: 'Caching rock samples for a future return to Earth — and flew Ingenuity, the first aircraft on another world.',
|
||
},
|
||
];
|