

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

# 提供方位提升暫時性資料
<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 將 ephemerides 視為[個人化用量資料](https://aws.amazon.com/service-terms)。如果您使用此選用功能，AWS 將使用 ephemeris 資料來提供故障診斷支援。

 此方法在下列案例中特別有用：
+ *早期操作支援：*在啟動和早期軌道階段 (LEOP) 期間，當無法使用精確的軌道資料，或軌道參數快速變更時。
+ *自訂指標模式：*實作特定指標序列進行天線測試或非標準操作。

**注意**  
 使用方位提升暫時性時，可能會從聯絡人保留請求中省略衛星 ARN。如果未省略衛星 ARN，它仍會包含在聯絡資料中，但方位角抬高暫時符號將用於天線指向，而不是執行暫時優先順序解析。方位角海拔高度與特定地面站相關聯，並定義該位置的天線指向方向。

## 方位浮水印資料格式
<a name="w2aac28c17c15b7"></a>

 方位海拔暫時性資料由時間標記方位和海拔值組成，組織成區段。每個區段都包含涵蓋特定時間範圍的一系列方位角和高度角。

 方位海拔暫時性資料的關鍵元件為：
+ *Ground Station：*將使用此方位角海拔碎片的特定地面工作站。
+ *角度單位：*角度的測量單位 (`DEGREE_ANGLE` 或 `RADIAN`)。
+ *區段：*一個或多個時間限制的方位角和高度角度集合。
+ *時間標記角度：*具有相關聯時間戳記的個別方位和高度值。

 每個區段都需要：
+ 參考 epoch （區段的基本時間）
+ 有效的時間範圍 （區段的開始和結束時間）
+ 至少 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 動作建立，但使用 ephemeris `azEl` 類型。與 TLE 和 OEM 暫時性差異的主要差異為：
+ 您必須指定`groundStation`參數
+ 必須從請求中省略 `satelliteId` 參數
+ 優先順序設定不適用 （每個方位方位海拔暫時性都專屬於地面站）
+ 每個區段必須至少包含 5 個方位/上升點，以支援第 4 個順序的延遲插補
+ [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) API 文件中詳細說明了其他限制和要求

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

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

## 範例：透過 API 建立方位角海拔暫時性
<a name="w2aac28c17c15c11"></a>

 下列範例示範如何使用適用於 Python 的 AWS SDK (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`值是與參考 epoch 的原子秒位移
+ 提供六個方位/上升對 （最小值為 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 ephemeris 不同：

1. 使用 [CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) 建立方位角海拔高度

1. 等待 ephemeris 達到`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` 參數
+ 您必須提供具有方位角海拔 ephemeris ID 的 `ephemeris` 參數，以指定要使用的 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`包含 ，則會與聯絡人資料建立關聯，但方位海拔暫時性符號將用於天線指向，而不是執行暫時性優先順序解析。