

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 提供 OEM 星历数据
<a name="providing-oem-ephemeris-data"></a>

**重要**  
 星历 API 当前处于预览状态 

 星历 API 的访问权限仅在需要时提供。如果您需要能够上传自定义星历数据，请通过AWS 支持。[AWS Support Center Console](https://console.aws.amazon.com/support)我们的团队将与您合作，根据您的特定要求启用此功能。

## 概述
<a name="w2aac28c17c13b7"></a>

 轨道星历信息 (OEM) 是一种用于表示航天器轨迹数据的标准化格式。Ephemeris API 允许将 OEM 星历上传到卫星上以AWS Ground Station供卫星使用。这些星历表覆盖了默认的星历表（参见:）。[Space-Track](https://www.space-track.org/)[默认星历数据](default-ephemeris-data.md)

AWS Ground Station将星历视为[个性化](https://aws.amazon.com/service-terms)使用数据。如果您使用此可选功能，AWS将使用您的星历数据来提供故障排除支持。

 上传自定义 OEM 星历表可以提高跟踪质量，在没有星历[Space-Track](https://www.space-track.org/)表的情况下处理早期操作，并AWS Ground Station考虑操作情况。

**注意**  
 在为卫星分配卫星目录编号之前提供自定义星历时，您可以用`satelliteId`于 OEM 的`OBJECT_ID`部分。  
 有关 OEM 格式的更多信息，请参阅[OEM 星历格式](#oem-ephemeris-format)。

## OEM 星历格式
<a name="oem-ephemeris-format"></a>

AWS Ground Station根据 [CCSDS 标准处理 OEM 客户提供的星历表，但有一些](https://ccsds.org/Pubs/502x0b3e1.pdf)额外的限制。OEM 文件应采用 KVN 格式。下表概述了 OEM 中的不同字段以及AWS Ground Station与 CCSDS 标准的区别。



- **标题**
  - **字段:** CCSDS\_OEM\_VERS / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 所需值：2.0
  - **字段:** COMMENT / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 
  - **字段:** 分类 / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 
  - **字段:** 创建日期 / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 
  - **字段:** 鼻祖 / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 
  - **字段:** 消息\_ID / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 

- **元数据**
  - **字段:** META\_START / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 
  - **字段:** COMMENT / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 
  - **字段:** 对象名 / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 
  - **字段:** 对象\_ID / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 
  - **字段:** 中心/名称 / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 必填值：地球
  - **字段:** REF\_FRAME / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 可接受的值：EME2000、ITRF2000
  - **字段:** REF\_FRAME\_EPOCH / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 不支持\* / **注意:** 不需要，因为接受的 ref\_Frames 有一个隐式的时代
  - **字段:** 时间系统 / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 必填值：世界标准时间
  - **字段:** 开始时间 / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 
  - **字段:** 可用开始时间 / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 
  - **字段:** USEABLE\_STOP\_TIME / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 
  - **字段:** 停止时间 / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 
  - **字段:** 插值 / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 是 / **注意:** 必需，因此AWS Ground Station可以为触点生成精确的指向角度。
  - **字段:** 插值度 / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 是 / **注意:** 必需，因此AWS Ground Station可以为触点生成精确的指向角度。如果可能，将使用指定的学位，但如果区段中没有足够的数据，则将使用较低的学位。
  - **字段:** META\_STOP / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 

- **数据**
  - **字段:** X / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 代表于 km
  - **字段:** Y / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 代表于 km
  - **字段:** Z / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 代表于 km
  - **字段:** X\_DOT / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 代表于 km/s
  - **字段:** Y\_DOT / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 代表于 km/s
  - **字段:** Z\_DOT / **需要 CCSDS:** 支持 / **AWS Ground Station必需的:** 是 / **注意:** 代表于 km/s
  - **字段:** X\_DDOT / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 代表于 km/s^2
  - **字段:** Y\_DDOT / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 代表于 km/s^2
  - **字段:** Z\_DDOT / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 代表于 km/s^2

- **协方差矩阵**
  - **字段:** 协方差起点 / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 
  - **字段:** EPOCH / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 
  - **字段:** COV\_REF\_FRAME / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 
  - **字段:** 协方差停止 / **需要 CCSDS:** 否 / **AWS Ground Station必需的:** 否 / **注意:** 



 \* 如果提供的 OEM 中包含任何AWS Ground Station不支持的行，OEM 将无法通过验证。

 与 CCSDS 标准的重要差异是：AWS Ground Station
+ `CCSDS_OEM_VERS`必须是`2.0`。
+ `REF_FRAME`必须是`EME2000`或` ITRF2000`。
+ `REF_FRAME_EPOCH`不支持AWS Ground Station。
+ `CENTER_NAME`必须是`Earth`。
+ `TIME_SYSTEM`必须是`UTC`。
+ `INTERPOLATION`并且两者`INTERPOLATION_DEGREE`都是AWS Ground Station客户提供的星历所必需的。
+ AWS Ground Station允许不包含足够星历数据记录的 OEM 数据块在指定值处执行插值，从而与 CCSDS 5.2.4.7 有所不同。`INTERPOLATION_DEGREE`在这种情况下，AWS Ground Station将使用小于或等于指定值的最高插值度。`INTERPOLATION_DEGREE`

## KVN 格式的 OEM 星历示例
<a name="w2aac28c17c13c11"></a>

 以下是公共广播公司卫星的 KVN 格式的 OEM 星历的截断示例。 JPSS-1 

```
CCSDS_OEM_VERS = 2.0

COMMENT Orbit data are consistent with planetary ephemeris DE-430

CREATION_DATE  = 2024-07-22T05:20:59
ORIGINATOR     = Raytheon-JPSS/CGS

META_START
OBJECT_NAME          = J1
OBJECT_ID            = 2017-073A
CENTER_NAME          = Earth
REF_FRAME            = EME2000
TIME_SYSTEM          = UTC
START_TIME           = 2024-07-22T00:00:00.000000
STOP_TIME            = 2024-07-22T00:06:00.000000
INTERPOLATION        = Lagrange
INTERPOLATION_DEGREE = 5
META_STOP

2024-07-22T00:00:00.000000   5.905147360000000e+02  -1.860082793999999e+03  -6.944807075000000e+03  -5.784245796000000e+00   4.347501391999999e+00  -1.657256863000000e+00
2024-07-22T00:01:00.000000   2.425572045154201e+02  -1.595860765983339e+03  -7.030938457373539e+03  -5.810660250794190e+00   4.457103652219009e+00  -1.212889340333023e+00
2024-07-22T00:02:00.000000  -1.063224256538050e+02  -1.325569732497146e+03  -7.090262617183503e+03  -5.814973972202444e+00   4.549739160042560e+00  -7.639633689161465e-01
2024-07-22T00:03:00.000000  -4.547973959231161e+02  -1.050238305712201e+03  -7.122556683227951e+03  -5.797176562437553e+00   4.625064829516728e+00  -3.121687831090774e-01
2024-07-22T00:04:00.000000  -8.015427368657785e+02  -7.709137891269565e+02  -7.127699477194810e+03  -5.757338007808417e+00   4.682800822515077e+00   1.407953645161997e-01
2024-07-22T00:05:00.000000  -1.145240083085062e+03  -4.886583601179489e+02  -7.105671911254255e+03  -5.695608435738609e+00   4.722731329786999e+00   5.932259682105052e-01
2024-07-22T00:06:00.000000  -1.484582479061495e+03  -2.045451985605701e+02  -7.056557069672793e+03  -5.612218005854990e+00   4.744705579872771e+00   1.043421397392599e+00
```

## 创建 OEM 星历表
<a name="w2aac28c17c13c13"></a>

 可以使用 API 中的[CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html)操作创建 OEM 星历表。AWS Ground Station此操作将使用请求正文或指定 S3 存储桶中的数据上传星历。

 请务必注意，上传星历会将星历设置为 ` VALIDATING` 并启动异步工作流程，该工作流程将验证您的星历并生成可能联络。只有当星历通过此工作流程并成为 `ENABLED` 后，才会将其用于联络。您应该轮[DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html)询星历状态或使用 CloudWatch 事件来跟踪星历的状态变化。

 要对无效的星历进行故障排除，请参阅：[对无效的星历进行故障排除](troubleshooting-invalid-ephemerides.md)

## 示例：从 S3 存储桶上传 OEM 星历数据
<a name="w2aac28c17c13c15"></a>

 也可以通过指向 S3 存储桶和对象密钥直接从 S3 存储桶上传 OEM 星历表文件。AWS Ground Station将代表您取回对象。中详细介绍了有关静态数据加密的信息AWS Ground Station，请参阅:[静态数据加密 AWS Ground Station](security.encryption-at-rest.md)。

 以下是从 S3 存储桶上传 OEM 星历文件的示例 

```
import boto3
from datetime import datetime, timedelta, timezone

# Create AWS clients
s3_client = boto3.client("s3")
ground_station_client = boto3.client("groundstation")

# Define S3 bucket and key
bucket_name = "ephemeris-bucket"
object_key = "test_data.oem"

# Create sample OEM data in KVN format
oem_data = """CCSDS_OEM_VERS = 2.0

COMMENT Orbit data are consistent with planetary ephemeris DE-430

CREATION_DATE  = 2024-07-22T05:20:59
ORIGINATOR     = Raytheon-JPSS/CGS

META_START
OBJECT_NAME          = J1
OBJECT_ID            = 2017-073A
CENTER_NAME          = Earth
REF_FRAME            = EME2000
TIME_SYSTEM          = UTC
START_TIME           = 2024-07-22T00:00:00.000000
STOP_TIME            = 2024-07-22T00:06:00.000000
INTERPOLATION        = Lagrange
INTERPOLATION_DEGREE = 5
META_STOP

2024-07-22T00:00:00.000000   5.905147360000000e+02  -1.860082793999999e+03  -6.944807075000000e+03  -5.784245796000000e+00   4.347501391999999e+00  -1.657256863000000e+00
2024-07-22T00:01:00.000000   2.425572045154201e+02  -1.595860765983339e+03  -7.030938457373539e+03  -5.810660250794190e+00   4.457103652219009e+00  -1.212889340333023e+00
2024-07-22T00:02:00.000000  -1.063224256538050e+02  -1.325569732497146e+03  -7.090262617183503e+03  -5.814973972202444e+00   4.549739160042560e+00  -7.639633689161465e-01
2024-07-22T00:03:00.000000  -4.547973959231161e+02  -1.050238305712201e+03  -7.122556683227951e+03  -5.797176562437553e+00   4.625064829516728e+00  -3.121687831090774e-01
2024-07-22T00:04:00.000000  -8.015427368657785e+02  -7.709137891269565e+02  -7.127699477194810e+03  -5.757338007808417e+00   4.682800822515077e+00   1.407953645161997e-01
2024-07-22T00:05:00.000000  -1.145240083085062e+03  -4.886583601179489e+02  -7.105671911254255e+03  -5.695608435738609e+00   4.722731329786999e+00   5.932259682105052e-01
2024-07-22T00:06:00.000000  -1.484582479061495e+03  -2.045451985605701e+02  -7.056557069672793e+03  -5.612218005854990e+00   4.744705579872771e+00   1.043421397392599e+00
"""

# Upload sample OEM data to S3
print(f"Uploading OEM data to s3://{bucket_name}/{object_key}")

s3_client.put_object(
    Bucket=bucket_name, Key=object_key, Body=oem_data, ContentType="text/plain"
)

print("OEM data uploaded successfully to S3")

# Create OEM ephemeris from S3
print("Creating OEM ephemeris from S3...")

s3_oem_ephemeris = ground_station_client.create_ephemeris(
    name="2024-07-22 S3 OEM Upload",
    satelliteId="fde41049-14f7-413e-bd7b-EXAMPLE01",
    enabled=True,
    expirationTime=datetime.now(timezone.utc) + timedelta(days=5),
    priority=2,
    ephemeris={"oem": {"s3Object": {"bucket": bucket_name, "key": object_key}}},
)

print(f"Created OEM ephemeris with ID: {s3_oem_ephemeris['ephemerisId']}")
```

 以下是为上一个示例代码块中上传的 OEM 星历调用 [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html) 操作返回的数据示例。

```
{
  "creationTime": 1620254718.765,
  "enabled": true,
  "name": "Example Ephemeris",
  "ephemerisId": "fde41049-14f7-413e-bd7b-EXAMPLE02",
  "priority": 2,
  "status": "VALIDATING",
  "suppliedData": {
    "oem": {
      "sourceS3Object": {
          "bucket": "ephemeris-bucket-for-testing",
          "key": "test_data.oem"
      }
    }
  }
}
```