{ "id": "tle-parsing", "title": "Two-line element parsing", "summary": "From raw text to a structured element set: line classification, checksum verification, field extraction, and the cross checks.", "nodes": [ { "id": "text", "label": "Input text", "kind": "data", "group": "input", "summary": "One, two, or three lines; blank lines are ignored and any of the common line endings is accepted.", "label_zh": "输入文本", "summary_zh": "一行、两行或三行;忽略空行,接受各种常见换行符。" }, { "id": "split", "label": "Split and classify lines", "kind": "step", "group": "parse", "summary": "A leading line that does not begin with '1 ' is the satellite name; the next two lines are the data lines.", "label_zh": "切分并分类各行", "summary_zh": "不以 \"1 \" 开头的首行是卫星名称;其后两行是数据行。" }, { "id": "count", "label": "Two data lines?", "kind": "decision", "group": "parse", "summary": "The format requires exactly two data lines.", "label_zh": "有两行数据?", "summary_zh": "格式要求恰好两行数据。" }, { "id": "too_few", "label": "TooShort", "kind": "terminal", "group": "error", "summary": "Fewer than two data lines were present.", "summary_zh": "数据行少于两行。" }, { "id": "checksum1", "label": "Verify line 1 checksum", "kind": "step", "group": "verify", "summary": "Sum the digits and the minus signs of the first 68 columns modulo ten and compare with column 69.", "api": "verify_line_checksum", "label_zh": "校验第 1 行", "summary_zh": "对前 68 列的十进制数字与负号求和后对十取模,与第 69 列比较。" }, { "id": "checksum_ok", "label": "Checksums match?", "kind": "decision", "group": "verify", "summary": "Each line is verified independently, so a corrupted line is reported with its number.", "label_zh": "校验和一致?", "summary_zh": "每行独立校验,因此损坏的行会连同行号一起报告。" }, { "id": "checksum_fail", "label": "Checksum error", "kind": "terminal", "group": "error", "summary": "A line checksum does not match its contents.", "api": "ElementErrorKind", "label_zh": "校验和错误", "summary_zh": "某行校验和与其内容不一致。" }, { "id": "fields1", "label": "Read line 1 fields", "kind": "step", "group": "fields", "summary": "Catalog number, classification, designator, epoch, the two derivatives, BSTAR, and the element set number.", "label_zh": "读取第 1 行字段", "summary_zh": "编目号、密级、国际编号、历元、两个导数、BSTAR 与元素集编号。" }, { "id": "fields2", "label": "Read line 2 fields", "kind": "step", "group": "fields", "summary": "Inclination, right ascension, eccentricity, argument of perigee, mean anomaly, mean motion, and the revolution number.", "label_zh": "读取第 2 行字段", "summary_zh": "倾角、赤经、偏心率、近地点幅角、平近点角、平均运动与圈数。" }, { "id": "exponent", "label": "Decode exponent fields", "kind": "step", "group": "fields", "summary": "A sign, a mantissa with an assumed decimal point, an exponent sign, and one exponent digit.", "api": "ElementErrorKind", "label_zh": "解码指数字段", "summary_zh": "尾数符号、带隐含小数点的尾数、指数符号与一位指数数字。" }, { "id": "epoch", "label": "Expand the two digit year", "kind": "step", "group": "fields", "summary": "Years 57 through 99 are in the twentieth century and 00 through 56 in the twenty-first.", "api": "Epoch", "label_zh": "展开两位年", "summary_zh": "57 至 99 属于二十世纪,00 至 56 属于二十一世纪。" }, { "id": "match", "label": "Catalog numbers match?", "kind": "decision", "group": "crosscheck", "summary": "The two lines must describe the same object.", "label_zh": "编目号一致?", "summary_zh": "两行必须描述同一目标。" }, { "id": "mismatch", "label": "MismatchedElementSet", "kind": "terminal", "group": "error", "summary": "The two lines carry different element set numbers.", "api": "ElementErrorKind", "summary_zh": "两行携带不同的元素集编号。" }, { "id": "element", "label": "TwoLineElement", "kind": "terminal", "group": "output", "summary": "The structured element set, with the units of the format preserved.", "api": "TwoLineElement", "summary_zh": "结构化元素集,保留格式所用的单位。" } ], "edges": [ { "source": "text", "target": "split", "kind": "flow", "label": null }, { "source": "split", "target": "count", "kind": "flow", "label": null }, { "source": "count", "target": "too_few", "kind": "branch", "label": "no" }, { "source": "count", "target": "checksum1", "kind": "branch", "label": "yes" }, { "source": "checksum1", "target": "checksum_ok", "kind": "flow", "label": null }, { "source": "checksum_ok", "target": "checksum_fail", "kind": "branch", "label": "no" }, { "source": "checksum_ok", "target": "fields1", "kind": "branch", "label": "yes" }, { "source": "fields1", "target": "fields2", "kind": "flow", "label": null }, { "source": "fields2", "target": "exponent", "kind": "flow", "label": null }, { "source": "exponent", "target": "epoch", "kind": "flow", "label": null }, { "source": "epoch", "target": "match", "kind": "flow", "label": null }, { "source": "match", "target": "mismatch", "kind": "branch", "label": "no" }, { "source": "match", "target": "element", "kind": "branch", "label": "yes" } ], "title_zh": "两行元素解析", "summary_zh": "从原始文本到结构化元素集:行分类、校验和验证、字段提取与交叉检查。" }