

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 提供 OEM ephemeris 資料
<a name="providing-oem-ephemeris-data"></a>

**重要**  
 ephemeris API 目前處於預覽狀態 

 僅在需要時提供對 Ephemeris API 的存取。如果您需要上傳自訂暫時性資料的功能，請透過 開立 AWS 支援 票證[AWS Support Center Console](https://console.aws.amazon.com/support)。您的團隊將與您合作，為您的特定需求啟用此功能。

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

 Orbit Ephemeris Message (OEM) 是一種標準化格式，用於表示太空船軌跡資料。Ephemeris API 允許將 OEM 暫時化上傳到 AWS Ground Station ，以便與衛星搭配使用。這些暫時性物質會覆寫來自 [Space-Track](https://www.space-track.org/) 的預設暫時性物質 （請參閱：[預設暫時性資料](default-ephemeris-data.md))。

 AWS Ground Station 將 ephemerides 視為[個人化用量資料](https://aws.amazon.com/service-terms)。如果您使用此選用功能， AWS 將使用 ephemeris 資料來提供故障診斷支援。

 上傳自訂 OEM 暫時化可以改善追蹤品質、處理沒有可用 [Space-Track](https://www.space-track.org/) 暫時化的早期操作 AWS Ground Station，以及計算操作。

**注意**  
 在為衛星指派衛星目錄號碼之前提供自訂 ephemeris 時，您可以將 `satelliteId`用於 OEM `OBJECT_ID`的部分。  
 如需 OEMs 格式的詳細資訊，請參閱 [OEM ephemeris 格式](#oem-ephemeris-format)。

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

 AWS Ground Station 根據 [CCSDS 標準](https://ccsds.org/Pubs/502x0b3e1.pdf)處理 OEM 客戶提供的 Ephemerides，但有一些額外的限制。OEM 檔案應為 KVN 格式。下表概述 OEM 中的不同欄位，以及 與 CCSDS 標準 AWS Ground Station 的差異。



- **標頭**
  - **欄位:** CCSDS\_OEM\_VERS / **需要 CCSDS:** 是 / **AWS Ground Station 必要:** 是 / **備註:** 必要值：2.0
  - **欄位:** COMMENT / **需要 CCSDS:** 否 / **AWS Ground Station 必要:** 否 / **備註:** 
  - **欄位:** 分類 / **需要 CCSDS:** 否 / **AWS Ground Station 必要:** 否 / **備註:** 
  - **欄位:** CREATION\_DATE / **需要 CCSDS:** 是 / **AWS Ground Station 必要:** 是 / **備註:** 
  - **欄位:** 原始伺服器 / **需要 CCSDS:** 是 / **AWS Ground Station 必要:** 是 / **備註:** 
  - **欄位:** MESSAGE\_ID / **需要 CCSDS:** 否 / **AWS Ground Station 必要:** 否 / **備註:** 

- **中繼資料**
  - **欄位:** META\_START / **需要 CCSDS:** 是 / **AWS Ground Station 必要:** 是 / **備註:** 
  - **欄位:** COMMENT / **需要 CCSDS:** 否 / **AWS Ground Station 必要:** 否 / **備註:** 
  - **欄位:** OBJECT\_NAME / **需要 CCSDS:** 是 / **AWS Ground Station 必要:** 是 / **備註:** 
  - **欄位:** OBJECT\_ID / **需要 CCSDS:** 是 / **AWS Ground Station 必要:** 是 / **備註:** 
  - **欄位:** CENTER\_NAME / **需要 CCSDS:** 是 / **AWS Ground Station 必要:** 是 / **備註:** 必要值：地球
  - **欄位:** REF\_FRAME / **需要 CCSDS:** 是 / **AWS Ground Station 必要:** 是 / **備註:** 接受的值：EME2000、ITRF2000
  - **欄位:** REF\_FRAME\_EPOCH / **需要 CCSDS:** 否 / **AWS Ground Station 必要:** 不支援\* / **備註:** 不需要，因為接受的 REF\_FRAMEs 具有隱含 epoch
  - **欄位:** TIME\_SYSTEM / **需要 CCSDS:** 是 / **AWS Ground Station 必要:** 是 / **備註:** 必要值：UTC
  - **欄位:** START\_TIME / **需要 CCSDS:** 是 / **AWS Ground Station 必要:** 是 / **備註:** 
  - **欄位:** USEABLE\_START\_TIME / **需要 CCSDS:** 否 / **AWS Ground Station 必要:** 否 / **備註:** 
  - **欄位:** USEABLE\_STOP\_TIME / **需要 CCSDS:** 否 / **AWS Ground Station 必要:** 否 / **備註:** 
  - **欄位:** STOP\_TIME / **需要 CCSDS:** 是 / **AWS Ground Station 必要:** 是 / **備註:** 
  - **欄位:** 插補 / **需要 CCSDS:** 否 / **AWS Ground Station 必要:** 是 / **備註:** 必要，因此 AWS Ground Station 可以為聯絡人產生準確的指向角度。
  - **欄位:** INTERPOLATION\_DEGREE / **需要 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 必要:** 否 / **備註:** 
  - **欄位:** DISC\_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 客戶提供的 ephemeris 的必要項目。
+ AWS Ground Station 允許不包含足夠暫時性資料記錄的 OEM 資料區塊在指定的 執行插補，以偏離 CCSDS 5.2.4`INTERPOLATION_DEGREE`.7。在此情況下， AWS Ground Station 將使用小於或等於指定 的最高插補程度`INTERPOLATION_DEGREE`。

## KVN 格式的範例 OEM ephemeris
<a name="w2aac28c17c13c11"></a>

 以下是 JPSS-1 公有廣播者衛星的 KVN 格式 OEM ephemeris 截斷範例。

```
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 ephemeris
<a name="w2aac28c17c13c13"></a>

 OEM ephemeris 可以使用 API 中的 AWS Ground Station [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) 動作建立。此動作將使用請求內文中的資料或從指定的 S3 儲存貯體上傳暫時性資料。

 請務必注意，上傳 ephemeris 會將 ephemeris 設定為 ，` VALIDATING`並啟動非同步工作流程，以驗證和產生來自 ephemeris 的潛在聯絡人。只有在 ephemeris 通過此工作流程後，`ENABLED`才會將其用於聯絡人。您應該輪詢 [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html) 的暫時性狀態，或使用 CloudWatch 事件來追蹤暫時性狀態變更。

 若要對無效的暫時性事件進行故障診斷，請參閱： [故障診斷無效的短暫性事件](troubleshooting-invalid-ephemerides.md)

## 範例：從 S3 儲存貯體上傳 OEM ephemeris 資料
<a name="w2aac28c17c13c15"></a>

 您也可以透過指向儲存貯體和物件金鑰，直接從 S3 儲存貯體上傳 OEM ephemeris 檔案。 AWS Ground Station 將代表您擷取物件。有關 中靜態資料加密的詳細資訊 AWS Ground Station ，請參閱：[的靜態資料加密 AWS Ground Station](security.encryption-at-rest.md)。

 以下是從 S3 儲存貯體上傳 OEM ephemeris 檔案的範例 

```
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']}")
```

 以下是從 [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html) 動作傳回的資料範例，該動作會針對上一個範例程式碼區塊中上傳的 OEM ephemeris 呼叫。

```
{
  "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"
      }
    }
  }
}
```