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