View a markdown version of this page

TLE エフェメリスデータを提供する - AWS Ground Station

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

TLE エフェメリスデータを提供する

重要

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

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

概要

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

AWS Ground Station はエフェメリスを個別の使用状況データとして扱います。このオプション機能を使用する場合、AWS はエフェメリスデータを使用してトラブルシューティングサポートを提供します。

カスタム TLE エフェメリスをアップロードすると、追跡の品質が向上し、Space-Track エフェメリスが利用できない早期オペレーションを処理し AWS Ground Station、操作を考慮できます。ただし、TLE の精度は伝播モデルによって制限され、エポックから離れて時間の経過とともに低下します。より長い期間にわたる忠実度の高いエフェメリスデータについては、OEM 形式の使用を検討してください (「」を参照OEM エフェメリスデータを提供する)。

注記

衛星に衛星カタログ番号が割り当てられる前にカスタムエフェメリスを提供する場合は、TLE の00000衛星カタログ番号フィールドと TLE の国際指定子フィールドの000起動番号部分 (2024 年に起動された車両など) 24000Aに を使用できます。

TLEs」を参照してください。 https://en.wikipedia.org/wiki/Two-line_element_set

TLEs の Alpha-5 衛星カタログ番号

2 行の要素セット (TLEs) は固定幅形式を使用します。この形式では、衛星カタログ番号フィールド (1 行目と 2 行目の 3 ~ 7 列) は 5 桁に制限され、最大値は 99,999 です。この制限を超える衛星カタログ番号を表すために、米国宇宙軍は Alpha-5 エンコードスキームを開発しました。Alpha-5 は、衛星カタログ番号フィールドの最初の桁をアルファベット文字 (数字 1 と 0 との混同を避けるため、I と O を除く A~Z) に置き換えます。これにより、既存の固定幅 TLE 形式で、表現可能な衛星カタログ番号の範囲が 100,000 から 339,999 に拡張されます。

Alpha-5 は、純粋に TLE テキスト形式の表示エンコードです。基になる衛星の数値のカタログ番号は変更されません。API の AWS Ground Station noradSatelliteIDフィールドは整数のままです。 ListSatellitesや などの API レスポンスは、Alpha-5 でエンコードされた形式ではなく、数値衛星のカタログ番号をGetSatellite引き続き返します。Alpha-5 エンコーディングは、TLE テキスト行自体内でのみ関連します。

AWS Ground Station は、Alpha-5 でエンコードされた衛星番号を含む TLE エフェメリスをサポートしています。CreateEphemeris アクションを使用して TLE をアップロードすると、 は Alpha-5 でエンコードされた衛星番号 AWS Ground Station を正しく解析し、内部的に対応する整数衛星カタログ番号に解決します。Alpha-5 範囲 (100,000~339,999) の衛星カタログ番号を持つ衛星は完全にサポートされています。

以下は、衛星カタログ番号が 100,000 の衛星の TLE セットの例です。Alpha-5 エンコーディングは、各 TLE 行の列 3~7 A0000でこれを として表します。

[ { "tleLine1": "1 A0000U 26001A 26120.50000000 .00000072 00000-0 24500-4 0 9991", "tleLine2": "2 A0000 97.4500 85.2300 0012345 45.6789 314.5678 15.20000000 10013", "validTimeRange": { "startTime": 1777680000, "endTime": 1778284800 } } ]

Alpha-5 エンコードスキームの詳細については、Space-Track Alpha-5 ドキュメントを参照してください。

TLE エフェメリスの作成

TLE エフェメリスは、 API の CreateEphemeris アクション AWS Ground Station を使用して作成できます。このアクションによって、リクエスト本文または指定された S3 バケットのデータを使用してエフェメリスがアップロードされます。

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

無効なエフェメリスのトラブルシューティングについては、以下を参照してください。 無効なエフェメリスのトラブルシューティング

例: API を使用して 2 行要素 (TLE) セットエフェメリスを作成する

AWS SDKs と CLI を使用して、CreateEphemeris 呼び出し AWS Ground Station を介して 2 行要素 (TLE) セットのエフェメリスを にアップロードできます。このエフェメリスは、衛星のデフォルトのエフェメリスデータの代わりに使用されます (「」を参照デフォルトのエフェメリスデータ)。この例では、AWS SDK for Python (Boto3) を使用してこれを行う方法を示します。

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 アクションからのレスポンスの例を以下に示します。

{ "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例では、TLEs セット内のすべての TLE の NORAD ID は、衛星が Space-Track データベースで割り当てられている NORAD ID と一致する必要があることに注意してください。

例: S3 バケットから TLE エフェメリスデータをアップロードする

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

以下は、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']}")