parseCsv static method
- String text
Stars from a file in the format of data/stars/jasne_gwiazdy.csv (see tool/build_fixed_stars.dart). Missing proper motion, parallax and radial velocity are taken as 0; so is a negative parallax (measurement error for distant objects).
Implementation
static List<FixedStar> parseCsv(String text) {
final lines = [
for (final line in text.split('\n'))
if (line.trim().isNotEmpty && !line.startsWith('#')) line,
];
final header = _fields(lines.first);
int column(String name) => header.indexOf(name);
final (name, designation, ra, dec, pmra, pmdec, plx, rv, v) = (
column('nazwa'),
column('oznaczenie'),
column('ra'),
column('dec'),
column('pmra'),
column('pmdec'),
column('plx'),
column('rv'),
column('v'),
);
return [
for (final line in lines.skip(1))
if (_fields(line) case final f)
FixedStar(
name: f[name],
designation: f[designation],
rightAscension: double.parse(f[ra]),
declination: double.parse(f[dec]),
properMotionRa: double.tryParse(f[pmra]) ?? 0,
properMotionDec: double.tryParse(f[pmdec]) ?? 0,
parallax: math.max(double.tryParse(f[plx]) ?? 0, 0),
radialVelocity: double.tryParse(f[rv]) ?? 0,
magnitude: double.tryParse(f[v]),
),
];
}