

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# カスタムエフェメリスデータを提供する
<a name="providing-custom-ephemeris-data"></a>

**重要**  
 エフェメリス API は現在プレビュー状態です。

 エフェメリス API へのアクセスは、必要な場合にのみ提供されます。カスタムエフェメリスデータをアップロードする必要がある場合は、 を通じて AWS サポート チケットを開いてください[AWS Support Center Console](https://console.aws.amazon.com/support)。当社のチームがお客様と協力して、特定の要件に応じてこの機能を有効にします。

## 概要:
<a name="w2aac28c17b7"></a>

 Ephemeris API では、衛星 AWS Ground Station で使用するカスタムエフェメリスを にアップロードできます。これらのエフェメリスは、[Space-Track](https://www.space-track.org/) のデフォルトのエフェメリスを上書きします (「」を参照[デフォルトのエフェメリスデータ](default-ephemeris-data.md))。エフェメリスデータの受信は、オービットエフェメリスメッセージ (OEM)、2 行要素 (TLE)、および方位標高形式でサポートされています。

 AWS Ground Station はエフェメリスを[個別の使用状況データ](https://aws.amazon.com/service-terms)として扱います。このオプション機能を使用する場合、AWS はエフェメリスデータを使用してトラブルシューティングサポートを提供します。

 カスタムエフェメリスをアップロードすると、追跡の品質が向上し、[Space-Track](https://www.space-track.org/) エフェメリスが利用できないオペレーションを処理し AWS Ground Station、操作を考慮できます。

 無効なエフェメリスのトラブルシューティングを行うには、以下を参照してください。 [無効なエフェメリスのトラブルシューティング](troubleshooting-invalid-ephemerides.md)

## 例: お客様提供のエフェメリスを で使用する AWS Ground Station
<a name="w2aac28c17b9"></a>

 で顧客提供のエフェメリスを使用する詳細な手順については AWS Ground Station、「 [で顧客提供のエフェメリスを使用する AWS Ground Station](https://aws.amazon.com/blogs/publicsector/using-customer-provided-ephemerides-with-aws-ground-station/)」および「関連付けられた GitHub リポジトリ [aws-samples/aws-groundstation-cpe](https://github.com/aws-samples/aws-groundstation-cpe)」を参照してください。

# TLE エフェメリスデータを提供する
<a name="providing-tle-ephemeris-data"></a>

**重要**  
 エフェメリス API は現在プレビュー状態です。

 エフェメリス API へのアクセスは、必要な場合にのみ提供されます。カスタムエフェメリスデータをアップロードする必要がある場合は、 を通じて AWS サポート チケットを開いてください[AWS Support Center Console](https://console.aws.amazon.com/support)。当社のチームがお客様と協力して、特定の要件に応じてこの機能を有効にします。

## 概要:
<a name="w2aac28c17c11b7"></a>

 2 行要素 (TLE) セットは、衛星軌道を記述するための標準化された形式です。Ephemeris API では、衛星 AWS Ground Station で使用する TLE エフェメリスを にアップロードできます。これらのエフェメリスは、[Space-Track](https://www.space-track.org/) のデフォルトのエフェメリスを上書きします (「」を参照[デフォルトのエフェメリスデータ](default-ephemeris-data.md))。

 AWS Ground Station はエフェメリスを[個別の使用状況データ](https://aws.amazon.com/service-terms)として扱います。このオプション機能を使用する場合、AWS はエフェメリスデータを使用してトラブルシューティングサポートを提供します。

 カスタム TLE エフェメリスをアップロードすると、追跡の品質が向上し、[Space-Track](https://www.space-track.org/) エフェメリスが利用できない早期オペレーションを処理し AWS Ground Station、操作を考慮できます。

**注記**  
 衛星に衛星カタログ番号が割り当てられる前にカスタムエフェメリスを提供する場合、TLE の`00000`衛星カタログ番号フィールドと TLE の国際指定子フィールドの`000`起動番号部分 (2024 年に起動された車両など) `24000A`に を使用できます。  
 TLEs」を参照してください。 [https://en.wikipedia.org/wiki/Two-line_element_set](https://en.wikipedia.org/wiki/Two-line_element_set)

## TLE エフェメリスの作成
<a name="w2aac28c17c11b9"></a>

 TLE エフェメリスは、 API の [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) アクション AWS Ground Station を使用して作成できます。このアクションによって、リクエスト本文または指定された S3 バケットのデータを使用してエフェメリスがアップロードされます。

 エフェメリスがアップロードされると、エフェメリスが `VALIDATING` に設定されて非同期ワークフローが開始されることに注意してください。このワークフローでは、エフェメリスを検証し、そのエフェメリスを基に潜在的なコンタクトを生成します。エフェメリスは、このワークフローを実施して `ENABLED` になって初めて、コンタクトに使用されます。[DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html) をポーリングしてエフェメリスステータスを確認するか、CloudWatch イベントを使用してエフェメリスのステータスの変化を追跡する必要があります。

 無効なエフェメリスのトラブルシューティングを行うには、以下を参照してください。 [無効なエフェメリスのトラブルシューティング](troubleshooting-invalid-ephemerides.md)

## 例: API を使用して 2 行要素 (TLE) セットエフェメリスを作成する
<a name="w2aac28c17c11c11"></a>

 AWS SDKs と CLI を使用して、[CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) 呼び出し AWS Ground Station を介して 2 行要素 (TLE) セットのエフェメリスを にアップロードできます。このエフェメリスは、衛星のデフォルトのエフェメリスデータの代わりに使用されます (「」を参照[デフォルトのエフェメリスデータ](default-ephemeris-data.md))。この例では、[AWS SDK for Python (Boto3) ](https://docs.aws.amazon.com/pythonsdk)を使用してこれを行う方法を示します。

 TLE セットは JSON 形式のオブジェクトで、1 つ以上の TLE をつなぎ合わせて連続した軌道を構築します。TLE セット内の TLE は、軌道の構築に使用できる連続したセットを形成する (つまり、TLE セット内の TLE 間に時間的なギャップがない) 必要があります。TLE セットの例を以下に示します。

```
[
    {
        "tleLine1": "1 25994U 99068A   20318.54719794  .00000075  00000-0  26688-4 0  9997",
        "tleLine2": "2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906",
        "validTimeRange": {
            "startTime": 12345,
            "endTime": 12346
        }
    },
    {
        "tleLine1": "1 25994U 99068A   20318.54719794  .00000075  00000-0  26688-4 0  9997",
        "tleLine2": "2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906",
        "validTimeRange": {
            "startTime": 12346,
            "endTime": 12347
        }
    }
]
```

**注記**  
 TLE セット内の TLE の時間範囲は、有効で連続的な軌道になるためには正確に一致する必要があります。

 TLE セットは、次のように boto3 AWS Ground Station クライアントを介してアップロードできます。

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

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# Create TLE ephemeris
tle_ephemeris = ground_station_client.create_ephemeris(
    name="Example Ephemeris",
    satelliteId="2e925701-9485-4644-b031-EXAMPLE01",
    enabled=True,
    expirationTime=datetime.now(timezone.utc) + timedelta(days=3),
    priority=2,
    ephemeris={
        "tle": {
            "tleData": [
                {
                    "tleLine1": "1 25994U 99068A   20318.54719794  .00000075  00000-0  26688-4 0  9997",
                    "tleLine2": "2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906",
                    "validTimeRange": {
                        "startTime": datetime.now(timezone.utc),
                        "endTime": datetime.now(timezone.utc) + timedelta(days=7),
                    },
                }
            ]
        }
    },
)

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

 この呼び出しは、今後エフェメリスを参照するために使用できる ephemerisId を返します。たとえば、上記の呼び出しから提供された ephemerisId を使用して、エフェメリスのステータスをポーリングできます。

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

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# First, create a TLE ephemeris
print("Creating TLE ephemeris...")

tle_ephemeris = ground_station_client.create_ephemeris(
    name="Example TLE Ephemeris for Description",
    satelliteId="2e925701-9485-4644-b031-EXAMPLE01",
    enabled=True,
    expirationTime=datetime.now(timezone.utc) + timedelta(days=3),
    priority=2,
    ephemeris={
        "tle": {
            "tleData": [
                {
                    "tleLine1": "1 25994U 99068A   20318.54719794  .00000075  00000-0  26688-4 0  9997",
                    "tleLine2": "2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906",
                    "validTimeRange": {
                        "startTime": datetime.now(timezone.utc),
                        "endTime": datetime.now(timezone.utc) + timedelta(days=7),
                    },
                }
            ]
        }
    },
)

ephemeris_id = tle_ephemeris["ephemerisId"]
print(f"Created TLE ephemeris with ID: {ephemeris_id}")

# Describe the ephemeris immediately to check initial status
print("Describing ephemeris...")

response = ground_station_client.describe_ephemeris(ephemerisId=ephemeris_id)

print(f"Ephemeris ID: {response['ephemerisId']}")
print(f"Name: {response['name']}")
print(f"Status: {response['status']}")
```

 [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-EXAMPLE01",
  "priority": 2,
  "status": "VALIDATING",
  "suppliedData": {
    "tle": {
      "ephemerisData": "[{\"tleLine1\": \"1 25994U 99068A   20318.54719794  .00000075  00000-0  26688-4 0  9997\",\"tleLine2\": \"2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906\",\"validTimeRange\": {\"startTime\": 1620254712000,\"endTime\": 1620859512000}}]"
    }
  }
}
```

 [DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html) ルートをポーリングするか、CloudWatch イベントを使用して、アップロードされたエフェメリスのステータスを追跡することをお勧めします。アップロードされたエフェメリスは、 に設定`ENABLED`され、問い合わせのスケジュールと実行に使用できるようになる前に非同期検証ワークフローを通過する必要があるためです。

 上記の例では、TLEs セット内のすべての TLE の NORAD ID `25994` は、衛星が [Space-Track](https://www.space-track.org/) データベースで割り当てられている NORAD ID と一致する必要があります。

## 例: S3 バケットから TLE エフェメリスデータをアップロードする
<a name="w2aac28c17c11c13"></a>

 バケットとオブジェクトキーを指すことで、S3 バケットから直接 TLE エフェメリスファイルをアップロードすることもできます。 AWS Ground Station はユーザーに代わってオブジェクトを取得します。の保管中のデータの暗号化の詳細については AWS Ground Station 、「」を参照してください[の保管中のデータ暗号化 AWS Ground Station](security.encryption-at-rest.md)。

 以下は、S3 バケットから TLE エフェメリスファイルをアップロードする例です。

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

# 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.tle"

# Create sample TLE set data
# Note: For actual satellites, use real TLE data from sources like Space-Track
tle_set_data = [
    {
        "tleLine1": "1 25994U 99068A   20318.54719794  .00000075  00000-0  26688-4 0  9997",
        "tleLine2": "2 25994  98.2007  30.6589 0001234  89.2782  18.9934 14.57114995111906",
        "validTimeRange": {
            "startTime": datetime.now(timezone.utc),
            "endTime": datetime.now(timezone.utc) + timedelta(days=3),
        },
    },
    {
        "tleLine1": "1 25994U 99068A   20321.54719794  .00000075  00000-0  26688-4 0  9998",
        "tleLine2": "2 25994  98.2007  33.6589 0001234  89.2782  18.9934 14.57114995112342",
        "validTimeRange": {
            "startTime": datetime.now(timezone.utc) + timedelta(days=3),
            "endTime": datetime.now(timezone.utc) + timedelta(days=7),
        },
    },
]

# Convert to JSON string for upload
tle_json = json.dumps(tle_set_data, indent=2)

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

s3_client.put_object(
    Bucket=bucket_name, Key=object_key, Body=tle_json, ContentType="application/json"
)
print("TLE set data uploaded successfully to S3")
print(f"Uploaded {len(tle_set_data)} TLE entries covering 7 days")

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

s3_tle_ephemeris = ground_station_client.create_ephemeris(
    name="2022-11-05 S3 TLE Upload",
    satelliteId="fde41049-14f7-413e-bd7b-EXAMPLE01",
    enabled=True,
    expirationTime=datetime.now(timezone.utc) + timedelta(days=5),
    priority=2,
    ephemeris={"tle": {"s3Object": {"bucket": bucket_name, "key": object_key}}},
)

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

# 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、操作を考慮できます。

**注記**  
 衛星に衛星カタログ番号が割り当てられる前にカスタムエフェメリスを提供する場合、OEM の `satelliteId` `OBJECT_ID` 部分に を使用できます。  
 OEMs「」を参照してください[OEM エフェメリス形式](#oem-ephemeris-format)。

## OEM エフェメリス形式
<a name="oem-ephemeris-format"></a>

 AWS Ground Station は、[CCSDS 標準](https://ccsds.org/Pubs/502x0b3e1.pdf)に従って OEM カスタマー提供のエフェメリスを処理しますが、追加の制限があります。OEM ファイルは KVN 形式である必要があります。次の表は、OEM のさまざまなフィールドと、 と CCSDS 標準 AWS Ground Station の違いの概要を示しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/ground-station/latest/ug/providing-oem-ephemeris-data.html)

 \$1 でサポートされていない行 AWS Ground Station が提供された OEM に含まれている場合、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 お客様が提供したエフェメリスに必要です。

## KVN 形式の OEM エフェメリスの例
<a name="w2aac28c17c13c11"></a>

 以下は、JPSS-1 パブリックブロードキャスター衛星の KVN 形式の OEM エフェメリスの切り捨てられた例です。

```
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>

 OEM エフェメリスは、 API の [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) アクション 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 バケットから直接 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"
      }
    }
  }
}
```

# 方位高度エフェメリスデータを提供する
<a name="providing-azimuth-elevation-ephemeris-data"></a>

**重要**  
 方位高度エフェメリス機能は、現在プレビュー状態であり、明示的なオンボーディングが必要です。  
 方位標高エフェメリス機能は、事前に決定された特殊なユースケースの数に限り、厳格なアクセスコントロール下にあります。アクセスは、お客様が用意した標準のエフェメリス機能よりも大幅に制限されます。承認されたユースケースとアクセスリクエストプロセスの詳細については、 から AWS サポート チケットを開いてください[AWS Support Center Console](https://console.aws.amazon.com/support)。当社のチームが、特殊なユースケースの承認プロセスを案内します。

## 概要:
<a name="w2aac28c17c15b5"></a>

 方位高度エフェメリスは、衛星軌道情報を提供せずにアンテナの方向を直接指定する方法を提供します。衛星の軌道を記述するエフェメリスデータをアップロードする代わりに、コンタクト全体でどこを指すかをアンテナに正確に指示する、時間タグ付けされた方位角と標高角度を提供します。

 AWS Ground Station はエフェメリスを[個別の使用状況データ](https://aws.amazon.com/service-terms)として扱います。このオプション機能を使用する場合、AWS はエフェメリスデータを使用してトラブルシューティングサポートを提供します。

 このアプローチは、以下のシナリオで特に役立ちます。
+ *早期オペレーションのサポート:* 正確な軌道データが利用できない場合、または軌道パラメータが急速に変化している場合、起動フェーズと早期軌道フェーズ (LEOP) 中。
+ *カスタムポイントパターン:* アンテナテストまたは非標準オペレーションに特定のポイントシーケンスを実装します。

**注記**  
 方位高度エフェメリスを使用する場合、衛星 ARN は問い合わせ予約リクエストから省略できます。衛星 ARN を省略しない場合でも、コンタクトデータの一部として含まれますが、方位高度エフェメリスは、エフェメリス優先度解決を実行するのではなく、アンテナポイントに使用されます。方位高度エフェメリスは、特定の地上局に関連付けられ、その場所のアンテナ指向方向を定義します。

## 方位高度エフェメリスデータ形式
<a name="w2aac28c17c15b7"></a>

 方位高度エフェメリスデータは、時間タグ付けされた方位値と、セグメントに整理された高度値で構成されます。各セグメントには、特定の時間範囲をカバーする一連の方位角と角度が含まれます。

 方位高度エフェメリスデータの主なコンポーネントは次のとおりです。
+ *Ground Station:* この方位高度エフェメリスを使用する特定の地上局。
+ *Angle Unit:* 角度の測定単位 (`DEGREE_ANGLE` または `RADIAN`)。
+ *セグメント:* 方位角と標高角度の 1 つ以上の時間制限付きコレクション。
+ *タイムタグ付き角度:* 関連するタイムスタンプを持つ個々の方位値と標高値。

 各セグメントには以下が必要です。
+ リファレンスエポック (セグメントの基本時間)
+ 有効な時間範囲 (セグメントの開始時刻と終了時刻)
+ 少なくとも 5 つの時間タグ付けされた方位/高さのペア

 方位標高の制約: 
+ 方位度: -180°～360°
+ ラジアンでの方位数: -π～2π
+ 角度での高さ: -90°～90°
+ ラジアンでの上昇: -π/2 から π/2
+ 時間値は各セグメント内で昇順である必要があります
+ セグメントは時間的に重複してはいけません

 詳細については、[CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) API ドキュメントと [TimeAzEl](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_TimeAzEl.html) データ型を参照してください。

## 方位高度エフェメリスの作成
<a name="w2aac28c17c15b9"></a>

 方位高度エフェメリスは、同じ [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) API アクションを使用して作成されますが、`azEl`エフェメリスタイプを使用します。TLE と OEM エフェメリスの主な違いは次のとおりです。
+ `groundStation` パラメータを指定する必要があります
+ `satelliteId` パラメータはリクエストから省略する必要があります
+ 優先度設定は適用されません (各方位高度エフェメリスは地上局に固有です)
+ 4 次 Lagrange 補間をサポートするには、各セグメントに少なくとも 5 つの方位/上昇ポイントが含まれている必要があります
+ その他の制限と要件については、[CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) API ドキュメントを参照してください。

 エフェメリスがアップロードされると、エフェメリスが `VALIDATING` に設定されて非同期ワークフローが開始されることに注意してください。このワークフローでは、エフェメリスを検証し、そのエフェメリスを基に潜在的なコンタクトを生成します。エフェメリスは、このワークフローに合格し、そのステータスが になった後の問い合わせにのみ使用されます`ENABLED`。[DescribeEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html) をポーリングしてエフェメリスステータスを確認するか、CloudWatch イベントを使用してエフェメリスのステータスの変化を追跡する必要があります。

 無効なエフェメリスのトラブルシューティングについては、以下を参照してください。 [無効なエフェメリスのトラブルシューティング](troubleshooting-invalid-ephemerides.md)

## 例: API を使用して方位高度エフェメリスを作成する
<a name="w2aac28c17c15c11"></a>

 次の例は、 AWS SDK for Python (Boto3) を使用して方位高度エフェメリスを作成する方法を示しています。

```
import boto3

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# Create azimuth elevation ephemeris
azimuth_elevation_ephemeris = ground_station_client.create_ephemeris(
    name="Azimuth Elevation for Ohio Ground Station",
    ephemeris={
        "azEl": {
            "groundStation": "Ohio 1",
            "data": {
                "azElData": {
                    "angleUnit": "DEGREE_ANGLE",
                    "azElSegmentList": [
                        {
                            "referenceEpoch": "2024-03-15T10:00:00Z",
                            "validTimeRange": {
                                "startTime": "2024-03-15T10:00:00Z",
                                "endTime": "2024-03-15T10:15:00Z",
                            },
                            "azElList": [
                                {"dt": 0.0, "az": 45.0, "el": 10.0},
                                {"dt": 180.0, "az": 50.0, "el": 15.0},
                                {"dt": 360.0, "az": 55.0, "el": 20.0},
                                {"dt": 540.0, "az": 60.0, "el": 25.0},
                                {"dt": 720.0, "az": 65.0, "el": 30.0},
                                {"dt": 900.0, "az": 70.0, "el": 35.0},
                            ],
                        }
                    ],
                }
            },
        }
    },
)

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

 この例では、以下のようになっています：
+ 方位高度データは「オハイオ 1」地上局に関連付けられています
+ 角度は度数で指定します
+ セグメントは 15 分間を対象とします。
+ `dt` 値は参照エポックからのアトミック秒オフセットです
+ 6 つの方位/標高ペアが用意されています (最小は 5)

## 例: S3 から方位標高データをアップロードする
<a name="w2aac28c17c15c13"></a>

 大規模なデータセットの場合、S3 バケットから方位高度データをアップロードできます。

```
import boto3
import json

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

# Define S3 bucket and key
bucket_name = "azimuth-elevation-bucket"
object_key = "singapore-azimuth-elevation.json"

# Create sample azimuth elevation data
azimuth_elevation_data = {
    "angleUnit": "DEGREE_ANGLE",
    "azElSegmentList": [
        {
            "referenceEpoch": "2024-03-15T10:00:00Z",
            "validTimeRange": {
                "startTime": "2024-03-15T10:00:00Z",
                "endTime": "2024-03-15T10:15:00Z",
            },
            "azElList": [
                {"dt": 0.0, "az": 45.0, "el": 10.0},
                {"dt": 180.0, "az": 50.0, "el": 15.0},
                {"dt": 360.0, "az": 55.0, "el": 20.0},
                {"dt": 540.0, "az": 60.0, "el": 25.0},
                {"dt": 720.0, "az": 65.0, "el": 30.0},
                {"dt": 900.0, "az": 70.0, "el": 35.0},
            ],
        },
        {
            "referenceEpoch": "2024-03-15T10:15:00Z",
            "validTimeRange": {
                "startTime": "2024-03-15T10:15:00Z",
                "endTime": "2024-03-15T10:30:00Z",
            },
            "azElList": [
                {"dt": 0.0, "az": 70.0, "el": 35.0},
                {"dt": 180.0, "az": 75.0, "el": 40.0},
                {"dt": 360.0, "az": 80.0, "el": 45.0},
                {"dt": 540.0, "az": 85.0, "el": 50.0},
                {"dt": 720.0, "az": 90.0, "el": 55.0},
                {"dt": 900.0, "az": 95.0, "el": 50.0},
            ],
        },
    ],
}

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

s3_client.put_object(
    Bucket=bucket_name,
    Key=object_key,
    Body=json.dumps(azimuth_elevation_data, indent=2),
    ContentType="application/json",
)
print("Sample data uploaded successfully to S3")

# Create azimuth elevation ephemeris from S3
print("Creating azimuth elevation ephemeris from S3...")

s3_azimuth_elevation_ephemeris = ground_station_client.create_ephemeris(
    name="Large Azimuth Elevation Dataset",
    ephemeris={
        "azEl": {
            "groundStation": "Singapore 1",
            "data": {"s3Object": {"bucket": bucket_name, "key": object_key}},
        }
    },
)

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

 S3 オブジェクトには、直接アップロードの例に示すのと同じ形式の方位標高データを含む JSON 構造が含まれている必要があります。

## 方位高度エフェメリスを使用したコンタクトの予約
<a name="w2aac28c17c15c15"></a>

 方位高度エフェメリスを使用してコンタクトを予約する場合、プロセスは TLE および OEM エフェメリスとは異なります。

1. [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) を使用して方位高度エフェメリスを作成する

1. エフェメリスが `ENABLED` ステータスになるまで待ちます。

1. [ReserveContact](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ReserveContact.html) と追跡オーバーライドを使用して問い合わせを予約する

 方位高度エフェメリスとのコンタクトを予約する例: 

```
import boto3
from datetime import datetime
import time

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# First, create an azimuth elevation ephemeris
print("Creating azimuth elevation ephemeris...")

create_ephemeris_response = ground_station_client.create_ephemeris(
    name="Azimuth Elevation for Contact Reservation",
    ephemeris={
        "azEl": {
            "groundStation": "Ohio 1",
            "data": {
                "azElData": {
                    "angleUnit": "DEGREE_ANGLE",
                    "azElSegmentList": [
                        {
                            "referenceEpoch": "2024-03-15T10:00:00Z",
                            "validTimeRange": {
                                "startTime": "2024-03-15T10:00:00Z",
                                "endTime": "2024-03-15T10:15:00Z",
                            },
                            "azElList": [
                                {"dt": 0.0, "az": 45.0, "el": 10.0},
                                {"dt": 180.0, "az": 50.0, "el": 15.0},
                                {"dt": 360.0, "az": 55.0, "el": 20.0},
                                {"dt": 540.0, "az": 60.0, "el": 25.0},
                                {"dt": 720.0, "az": 65.0, "el": 30.0},
                                {"dt": 900.0, "az": 70.0, "el": 35.0},
                            ],
                        }
                    ],
                }
            },
        }
    },
)

ephemeris_id = create_ephemeris_response["ephemerisId"]
print(f"Created ephemeris with ID: {ephemeris_id}")

# Wait for ephemeris to become ENABLED
print("Waiting for ephemeris to become ENABLED...")

while True:
    status = ground_station_client.describe_ephemeris(ephemerisId=ephemeris_id)[
        "status"
    ]
    if status == "ENABLED":
        print("Ephemeris is ENABLED")
        break
    elif status in ["INVALID", "ERROR"]:
        raise RuntimeError(f"Ephemeris failed: {status}")
    time.sleep(5)

# Reserve contact with azimuth elevation ephemeris
print("Reserving contact...")

contact = ground_station_client.reserve_contact(
    # Note: satelliteArn is omitted when using azimuth elevation ephemeris
    missionProfileArn="arn:aws:groundstation:us-east-2:111122223333:mission-profile/example-mission-profile",
    groundStation="Ohio 1",
    startTime=datetime(2024, 3, 15, 10, 0, 0),
    endTime=datetime(2024, 3, 15, 10, 15, 0),
    trackingOverrides={"programTrackSettings": {"azEl": {"ephemerisId": ephemeris_id}}},
)

print(f"Reserved contact with ID: {contact['contactId']}")
```

**注記**  
 方位角エフェメリスを含むコンタクトを予約するときは、 `satelliteArn`パラメータを省略できます。アンテナは、接触中に指定された方位角と標高角度に従います。

## 利用可能な連絡先の一覧表示
<a name="w2aac28c17c15c17"></a>

 方位高度エフェメリスを使用する場合、[ListContacts](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContacts.html) API には特定のパラメータが必要です。
+ `satelliteArn` パラメータはリクエストから省略できます
+ 使用するエフェメリスを指定するには、方位高度エフェメリス ID を持つ `ephemeris`パラメータを指定する必要があります
+ 使用可能なコンタクトウィンドウは、指定された方位角と標高角度が、リクエストされた地上局の[サイトマスク](https://docs.aws.amazon.com/ground-station/latest/ug/locations.site-masks.html)を超えると表示されます。
+ `groundStation` と を指定する必要があります。 `missionProfileArn`

 方位高度エフェメリスを作成し、それで利用可能な連絡先を一覧表示する例: 

```
import boto3
from datetime import datetime, timezone
import time

# Create AWS Ground Station client
ground_station_client = boto3.client("groundstation")

# Step 1: Create azimuth elevation ephemeris
print("Creating azimuth elevation ephemeris...")
ephemeris_response = ground_station_client.create_ephemeris(
    name="Stockholm AzEl Ephemeris",
    ephemeris={
        "azEl": {
            "groundStation": "Stockholm 1",
            "data": {
                "azElData": {
                    "angleUnit": "DEGREE_ANGLE",
                    "azElSegmentList": [
                        {
                            "referenceEpoch": "2024-04-01T12:00:00Z",
                            "validTimeRange": {
                                "startTime": "2024-04-01T12:00:00Z",
                                "endTime": "2024-04-01T12:30:00Z",
                            },
                            "azElList": [
                                {"dt": 0.0, "az": 30.0, "el": 15.0},
                                {"dt": 360.0, "az": 45.0, "el": 30.0},
                                {"dt": 720.0, "az": 60.0, "el": 45.0},
                                {"dt": 1080.0, "az": 75.0, "el": 35.0},
                                {"dt": 1440.0, "az": 90.0, "el": 20.0},
                                {"dt": 1800.0, "az": 105.0, "el": 10.0},
                            ],
                        }
                    ],
                }
            },
        }
    },
)

ephemeris_id = ephemeris_response["ephemerisId"]
print(f"Created ephemeris: {ephemeris_id}")

# Step 2: Wait for ephemeris to become ENABLED
print("Waiting for ephemeris to become ENABLED...")
while True:
    describe_response = ground_station_client.describe_ephemeris(
        ephemerisId=ephemeris_id
    )
    status = describe_response["status"]

    if status == "ENABLED":
        print("Ephemeris is ENABLED")
        break
    elif status in ["INVALID", "ERROR"]:
        # Check for validation errors
        if "invalidReason" in describe_response:
            print(f"Ephemeris validation failed: {describe_response['invalidReason']}")
        raise RuntimeError(f"Ephemeris failed with status: {status}")

    print(f"Current status: {status}, waiting...")
    time.sleep(5)

# Step 3: List available contacts using the azimuth elevation ephemeris
print("Listing available contacts with azimuth elevation ephemeris...")

# Convert epoch timestamps to datetime objects
start_time = datetime.fromtimestamp(1760710513, tz=timezone.utc)
end_time = datetime.fromtimestamp(1760883313, tz=timezone.utc)

contacts_response = ground_station_client.list_contacts(
    startTime=start_time,
    endTime=end_time,
    groundStation="Stockholm 1",
    statusList=["AVAILABLE"],
    ephemeris={"azEl": {"id": ephemeris_id}},
    # satelliteArn is optional
    satelliteArn="arn:aws:groundstation::111122223333:satellite/a88611b0-f755-404e-b60d-57d8aEXAMPLE",
    missionProfileArn="arn:aws:groundstation:eu-north-1:111122223333:mission-profile/966b72f6-6d82-4e7e-b072-f8240EXAMPLE",
)

# Process the results
if contacts_response["contactList"]:
    print(f"Found {len(contacts_response['contactList'])} available contacts:")
    for contact in contacts_response["contactList"]:
        print(f"  - Contact from {contact['startTime']} to {contact['endTime']}")
        print(
            f"    Max elevation: {contact.get('maximumElevation', {}).get('value', 'N/A')}°"
        )
else:
    print("No available contacts found for the specified azimuth elevation ephemeris")
```

**注記**  
 コンタクトを一覧表示するときに、アジマス標高 ID を持つ `ephemeris`パラメータを指定して、コンタクトウィンドウの決定に使用するアジマス標高エフェメリスを指定する必要があります。`satelliteArn` が含まれている場合、問い合わせデータに関連付けられますが、方位高度エフェメリスは、エフェメリスの優先度解決を実行するのではなく、アンテナポイントに使用されます。