# Data sources

## sky.json

Stars (to magnitude 7), star names, constellation lines and constellation names from
[d3-celestial](https://github.com/ofrohn/d3-celestial) by Olaf Frohn,
BSD-3-Clause (LICENSE checked 2026-10-19 and 2026-10-20). Converted by
`scripts/build-sky-data.mjs` from `stars.8.json` (cut at magnitude 7.0,
15,544 stars; downloaded 2026-10-20), `starnames.json` (the names of the
91 stars brighter than magnitude 2.5; downloaded 2026-10-20),
`constellations.lines.json` and `constellations.json`. From the names file only the official (IAU) name,
the prominence rank, the label position and the id (the IAU abbreviation,
e.g. "Lyr", by which `deepsky.json` gives constellations) are kept (the two parts of
Serpens share a label position there; the script uses each part's centre).
One name is corrected to the IAU's list: d3-celestial has the 1932 form
"Corona Austrina" (genitive "Coronae Austrini"), which the script replaces
with Corona Australis, Coronae Australis (IAU constellations page, archived
2023; checked 2026-10-22). So is one genitive: d3-celestial gives Crux's as
"Crux", the IAU's page "Crucis" (checked 2026-10-28), so Acrux is "Alpha-1
Crucis".

The star names are checked against the IAU's Catalog of Star Names (IAU-CSN,
the list of the IAU Working Group on Star Names,
https://www.pas.rochester.edu/~emamajek/WGSN/IAU-CSN.txt, edition of
2022-04-04; IAU star names are free to use), where 85 of d3-celestial's 91
are, and the names the WGSN has adopted since: its current table
(https://exopla.net/star-names/modern-iau-star-names/), its 2024 list
(https://exopla.net/?p=7735) and the IAU's announcement "IAU Selects New Star
Names To Reflect Global Astronomical Culture" (12 February 2026,
https://iau.org/IAU/News/Ann2026/New-Star-Names-2026.aspx); all checked
2026-10-28. The script spells "Shedar" as the IAU does, Schedar; names Navi
(Gamma Cassiopeiae) Tiansi (adopted 2025-11-13) and Men (Alpha Lupi) Uridim
(2024-09-12), as the owner agreed on 2026-10-28; and labels the three stars
the IAU has not named by their designation: Regor (Gamma-2 Velorum),
Muhlifain (Gamma Centauri) and Mula (Kappa Scorpii). Rebuilt on 2026-10-28 from
d3-celestial at commit `7e720a3de062059d4c5400a379146a601d9010e0`
(2022-07-05, still its latest); with the script as it was, those files give
the earlier `sky.json` byte for byte, so they are the files of 2026-10-20 (our
inference).

Format (rebuilt 2026-10-28 for the info cards; the values of the earlier
fields are unchanged): each `starNames` row ends with the star's B-V colour
index (the same `bv` of its d3-celestial feature, rounded to 2 decimals, as
for the star's tuple in `stars`), or null where d3-celestial has none (none of
the 91 lacks it). `starsWithoutBv` lists, ascending, the index of each star in
`stars` (tuple `4i..4i+3`) that has no B-V in d3-celestial and is drawn with
the placeholder 0.6 (13 stars). `lines` is one list per constellation, in the
order of `constellations`, each holding that constellation's polylines (150 in
all, as before).

d3-celestial's star files come from XHIP, An Extended Hipparcos Compilation
(Anderson and Francis 2012, VizieR V/137D), so the stars are Hipparcos stars,
and ESA licenses Hipparcos as CC BY-NC 3.0 IGO (non-commercial). The owner
uses them knowingly for now (2026-10-26); the decision is on the store
submission checklist (docs/spec.md, section 11, question 13).

## cities.json

Contains data from [GeoNames](https://www.geonames.org), licensed under
[Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/).
Commercial use is allowed; the credit above must be kept and shown to users
(for example on a credits screen).

- Source: `cities15000.zip` from https://download.geonames.org/export/dump/,
  downloaded 2026-10-19 (file dated 2026-10-19). All cities with more than
  15,000 people, plus capitals: 34,173 entries in 356 time zones.
- Region names: `admin1CodesASCII.txt` from the same place, downloaded
  2026-10-19 (3,865 first-level divisions).
- Changes: trimmed by `scripts/build-cities.mjs` to the ASCII name, country
  code, latitude and longitude (rounded to 4 decimals), population, IANA time
  zone and ASCII region name, and sorted by population.

## deepsky.json and deepsky-provenance.tsv

The 110 Messier objects, 52 other deep-sky objects and 32 stars (docs/spec.md,
section 4, Deep-sky catalogue, phases 1, 2a and 2b), built by
`scripts/build-deepsky.py` (logic in
`scripts/deepsky.py`, the other objects listed in
`scripts/data/deepsky-objects.yaml`, reviewed checks and hand-entered values in
`scripts/data/deepsky-reviews.yaml`). The others are Stargazing Buddy's choice
of deep-sky objects, cut by the owner on 2026-10-23; none of its values are
used. (Until 2026-10-23 the files were `messier.json` and
`messier-provenance.tsv`, built by `scripts/build-messier.py`.)

**These two files are licensed under CC BY-SA 4.0**
(https://creativecommons.org/licenses/by-sa/4.0/), because they are adapted
from OpenNGC. Anyone may share and adapt them, also commercially, provided
they give the credit below, link the licence, say what they changed, and share
their adaptations under the same licence. Credit: "Adapted from OpenNGC by
Mattia Verga (CC BY-SA 4.0), which draws on NED, HyperLEDA, SIMBAD (CDS) and
HEASARC; a few objects from SIMBAD (CDS); distances and names from Wikidata
(CC0); globular cluster distances and some magnitudes from Harris (1996, 2010
edition)." The app and the website
show the credits listed in docs/credits.md.

Sources, fetched 2026-10-22 for the Messiers and again 2026-10-23 for all
162 (the Messier values came out the same), and again 2026-10-28 for all 194
(the object classification review, docs/spec.md, section 4). On 2026-10-28
CDS (Strasbourg) did not answer, so SIMBAD's answers came from its mirror at
Harvard (`https://simbad.harvard.edu/simbad/sim-tap/sync`) and VizieR's (the
WDS and USNO-B1.0) from its mirror at IDIA, South Africa
(`https://vizier.idia.ac.za/viz-bin/asu-tsv`): `fetched.json` records the
endpoints, and each value's provenance row names the mirror ("SIMBAD (CDS),
from its mirror at simbad.harvard.edu, queried 2026-10-28").

- **OpenNGC** (Mattia Verga, https://github.com/mattiaverga/OpenNGC), CC BY-SA
  4.0 (its `.reuse/dep5`), at commit `be3cd6c` of 2026-10-18 (eight commits
  after release v20260501; they drop stale SIMBAD magnitudes and fix
  identifications SIMBAD placed on other objects): `database_files/NGC.csv`
  and `addendum.csv`. Gives position, type, constellation, NGC/IC number,
  V magnitude, size, galaxy morphology and common names, and names the
  upstream source of each value (NED, HyperLEDA, SIMBAD, HEASARC tables).
- **Wikidata** (CC0): distances (property P2583) with the references of each
  statement, English labels, and the titles and DOIs of the papers cited. The
  queries are in `scripts/build-deepsky.py`: the Messiers by their catalogue
  numbers, the others by the items listed for them.
- **Harris**, *Catalog of Parameters for Milky Way Globular Clusters* (1996,
  December 2010 edition, https://physics.mcmaster.ca/~harris/mwgc.dat): the
  distance from the Sun of the 32 globular clusters (the 29 Messiers, 47
  Tucanae, Omega Centauri and NGC 6712), and the integrated V magnitude of ten
  of them for which OpenNGC has no usable one (M9, M13, M22, M62, M69, M70,
  M71, M107 and two of the others). "Supplied free of charge to all users"; the catalogue itself
  is not redistributed.
- **SIMBAD** (CDS, Strasbourg; ODbL): the check for positions, types,
  magnitudes, sizes and distances (its parallaxes, Gaia's, only check), and
  the current source for the magnitudes and positions OpenNGC credits to
  SIMBAD: 21 magnitudes with their reference, and M45's position. M45's type
  and M24's size (which SIMBAD has from Corwin 2004) are also OpenNGC's
  SIMBAD values, compared with SIMBAD's current ones. For the six listed
  objects OpenNGC does not have (Melotte 20, the Alpha Persei Cluster; Stock 2;
  Barnard 72, 86, 142 and 143, Barnard 142 and 143 being one object in
  Stargazing Buddy), SIMBAD is the source: position with its reference, type,
  and size where SIMBAD gives one with the paper it comes from (Dutra and Bica
  2002 for the Barnard clouds, Cantat-Gaudin et al. 2020 for the clusters;
  none for Barnard 72, which Barnard's own 1927 catalogue gives no diameter
  either). Their constellations are entered by hand and tested against the IAU
  boundaries (`src/sky/deepsky-data.test.ts`, every object's).
- **The 32 listed stars** (phase 2b) take nothing from ESA's mission
  catalogues (Gaia's data are licensed for non-commercial use only) and no
  distance. Position and V magnitude: the star in our `sky.json`
  (d3-celestial, BSD-3-Clause) nearest SIMBAD's position, for the 22 we draw;
  for the 10 fainter, the position from **USNO-B1.0** (US Naval Observatory,
  Monet et al. 2003; a US government work; through CDS's VizieR, I/284) and
  SIMBAD's V where its reference is not an ESA catalogue. Spectral types:
  SIMBAD, with their references. Double stars' pairs: the **Washington Double
  Star Catalog** (US Naval Observatory; through VizieR, B/wds). "This
  research has made use of the Washington Double Star Catalog maintained at
  the U.S. Naval Observatory." IAU names entered by hand, checked against
  SIMBAD's.
- **Beuther et al. 2011**, *The Coalsack near and far* (A&A,
  doi:10.1051/0004-6361/201116746): the Coalsack's size, 5° (the cloud lies
  "between Galactic longitudes 305 ≥ l ≥ 300 deg"), set by review, since
  neither OpenNGC nor SIMBAD gives one.

Source policy, applied by the build:

- Values from a source we do not use are dropped: OpenNGC's magnitudes from
  HEASARC's Messier table (Sky Catalogue 2000.0) for M8, M17, M20, M24, M40,
  M42, M43, M45 and M78; Wikidata distance statements that cite SEDS,
  Steinicke, Stellarium, Sky Catalogue or a Wikipedia, were imported from a
  Wikipedia, cite only a web page other than a scholarly or database site
  (ADS, DOI, arXiv, NED, CDS, journal sites), or cite nothing.
- Magnitudes and positions OpenNGC credits to SIMBAD are taken from
  SIMBAD's current answer, and dropped when SIMBAD no longer has them or lists
  them without a reference: M45's position (an old one 0.25° off) is SIMBAD's
  current centre of the cluster; the magnitudes of M6, M7, M16, M18, M23, M25,
  M34, M37, M39, M44, M46, M47, M48, M50, M67 and M93 (no longer listed) and
  of M11, M26, M29, M36, M38, M41 and M103 (no reference) are dropped, and
  M9's and M13's (no reference) replaced by Harris's. M35 has no magnitude
  (OpenNGC dropped its stale SIMBAD value).

Other changes made:

- Selected the Messier rows; M102 is NGC 5866 (the owner's decision), with a
  note that its identification is disputed. Selected the listed rows by name
  (the Rosette Nebula is OpenNGC's NGC 2238 row, which it names so).
- Positions in degrees (J2000), from OpenNGC's sexagesimal values.
- Serpens Caput and Cauda (OpenNGC's Se1 and Se2) are both `Ser`.
- Sizes: major and minor axis in arcminutes and the angle of the major axis
  from north through east; an object with one diameter, or equal axes, is
  round, with minor = major and no angle. By review: M24's placeholder angle
  and M78's size (the embedded cluster's) dropped.
- M73's type set to asterism, where OpenNGC has "Other" (Cantat-Gaudin and
  Anders 2020, 2020A&A...633A..99C; Odenkirchen and Soubiran 2002; Kos et al.
  2018; until 2026-10-28 this cited Wikidata, whose statement cites nothing).
  M24's type set to star cloud, where OpenNGC's *Ass reads "association of
  stars" (its own note: "Milky Way star cloud"; 2026-10-28).
- Epsilon Lyrae's pair, by review, is the Double Double's, WDS STFA 37 AB,CD,
  not Epsilon-1's AB pair (2026-10-28).
- Each double's pair carries its WDS components (`pairComponents`: AB, or
  Almach's A,BC and Epsilon Lyrae's AB,CD), read from the pair's reference,
  so the info card colours the two stars from the spectral type only for a
  plain AB pair (2026-10-28).
- Distances: Harris's for globular clusters; otherwise Wikidata's preferred
  sourced statement, else the median of its sourced normal-rank statements;
  for M29, M52, NGC 457, NGC 4755 and IC 5146, by review, the sourced
  statement that agrees with the cluster's parallax. In light-years, to the
  source's significant figures but at least two and at most three. None for
  M8, M24, M40, M43, M73 and M78, and for 14 of the others.
- Names: Wikidata's English label unless it is only a designation, then
  OpenNGC's common names, unedited; IC 2602's only name, OpenNGC's abbreviated
  "tet Car Cluster", is written out by review as SIMBAD's "Theta Carinae
  Cluster"; three names with a word in lower case are capitalised by review
  (2026-10-28): Chi Persei Cluster (NGC 884), Bow-Tie Nebula (NGC 40) and
  Barnard's Galaxy (NGC 6822, as OpenNGC writes it).
- Galaxy magnitudes: where OpenNGC's V (from HyperLEDA) is more than 0.3
  fainter than its B, which a galaxy cannot be, a review decides: NGC 253 and
  NGC 4565 are left without one, NGC 6822 takes SIMBAD's whole-galaxy V
  (McConnachie 2012).

`deepsky-provenance.tsv` has one row per object and field: the value, its
source, the reference (the OpenNGC row and its upstream source; the Wikidata
statements used, with the papers they cite, and those ignored with the reason;
SIMBAD's reference; or Harris's), and `yes` in Manual for values set by hand.
Dropped values are recorded with the number dropped, and each reviewed check
adds its flag and reason to the reference.

To rebuild: `python3 scripts/build-deepsky.py fetch <dir>`, then
`python3 scripts/build-deepsky.py <dir>`. A later fetch can bring new Wikidata
or SIMBAD answers; the build then stops on any new disagreement until it is
reviewed.

## eyepiece/

The star files of the binocular and telescope views have their own folder and
notes: see `eyepiece/SOURCES.md`.
