apsis-book/content/flows/tle-parsing.json

219 lines
6.5 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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": "从原始文本到结构化元素集:行分类、校验和验证、字段提取与交叉检查。"
}