提供 TLE ephemeris 資料 - AWS Ground Station

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

提供 TLE ephemeris 資料

重要

ephemeris API 目前處於預覽狀態

僅在需要時提供對 Ephemeris API 的存取。如果您需要上傳自訂 ephemeris 資料的功能,您應該聯絡

概觀

雙行元素 (TLE) 集是用於描述衛星軌道的標準化格式。Ephemeris API 允許將 TLE 暫時性資料上傳到 AWS Ground Station ,以便與衛星搭配使用。這些暫時性物質會覆寫來自 Space-Track 的預設暫時性物質 (請參閱:預設暫時性資料)。

AWS Ground Station 將 ephemerides 視為個人化用量資料。如果您使用此選用功能,AWS 將使用 ephemeris 資料來提供故障診斷支援。

上傳自訂 TLE 暫時化可以改善追蹤品質、處理沒有可用 Space-Track 暫時化的早期操作 AWS Ground Station,以及處理操作。

注意

在為衛星指派衛星目錄號碼之前提供自訂 ephemeris 時,您可以將 00000 用於 TLE 的衛星目錄號碼欄位,以及 000 TLE 國際指標欄位的啟動號碼部分 (例如 24000A用於 2024 年啟動的車輛)。

如需 TLEs 格式的詳細資訊,請參閱雙行元素集

建立 TLE ephemeris

您可以使用 API 中的 CreateEphemeris 動作來建立 TLE ephemeris。 AWS Ground Station 此動作將使用請求內文中的資料或從指定的 S3 儲存貯體上傳暫時性資料。

請務必注意,上傳 ephemeris 會將 ephemeris 設定為 ,VALIDATING並啟動非同步工作流程,以驗證和產生來自 ephemeris 的潛在聯絡人。只有在 ephemeris 通過此工作流程後,ENABLED才會將其用於聯絡人。您應該輪詢 DescribeEphemeris 的暫時性狀態,或使用 CloudWatch 事件來追蹤暫時性狀態變更。

若要對無效的暫時性事件進行故障診斷,請參閱: 故障診斷無效的短暫性事件

範例:透過 API 建立雙行元素 (TLE) 集合暫時性資料

AWS SDKs 和 CLI 可用於 AWS Ground Station 透過 CreateEphemeris 呼叫將雙行元素 (TLE) 設定暫時性上傳至 。此暫時性資料將用於取代衛星的預設暫時性資料 (請參閱 預設暫時性資料)。此範例示範如何使用AWS 適用於 Python 的 SDK (Boto3) 執行此操作。

TLE 集是 JSON 格式的物件,可將一或多個 TLEs 串連在一起,以建構連續軌跡。TLEs 集合中的 TLE 必須形成連續集合,我們可以用來建構軌跡 (即 TLE 集合中 TLEs之間的時間差距)。範例 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 } } ]
注意

TLEs 集合中 TLE 的時間範圍必須完全相符,才能成為有效的連續軌跡。

您可以透過 boto3 AWS Ground Station 用戶端上傳 TLE 集,如下所示:

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,可用於在未來參考 ephemeris。例如,我們可以使用上述呼叫中提供的 ephemerisId 來輪詢 ephemeris 狀態:

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 動作的範例回應提供如下

{ "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 路由或使用 CloudWatch 事件來追蹤上傳的暫時性事件的狀態,因為它必須先經過非同步驗證工作流程,才能將其設定為 ENABLED,並可用於排程和執行聯絡人。

請注意,在上述25994範例中,TLE 集中所有 TLEs中的 NORAD ID 必須符合您的衛星在 Space-Track 資料庫中指派的 NORAD ID。

範例:從 S3 儲存貯體上傳 TLE ephemeris 資料

您也可以透過指向儲存貯體和物件金鑰,直接從 S3 儲存貯體上傳 TLE ephemeris 檔案。 AWS Ground Station 將代表您擷取物件。有關 中靜態資料加密的詳細資訊 AWS Ground Station ,請參閱:的靜態資料加密 AWS Ground Station

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

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