TLE 에페메리스 데이터 제공 - AWS Ground Station

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

TLE 에페메리스 데이터 제공

중요

에페메리스 API는 현재 프리뷰 상태입니다

에페메리스 API에 대한 액세스는 필요에 따라 제공됩니다. 사용자 지정 에페메리스 데이터를 업로드하는 기능이 필요한 경우 에 문의해야 합니다.

개요

2줄 요소(TLE) 세트는 위성 궤도를 설명하기 위한 표준화된 형식입니다. Ephemeris API를 사용하면 위성과 함께 사용하기 위해 TLE 에페메리스를 AWS Ground Station 에 업로드할 수 있습니다. 이러한 에페메리스는 스페이스 트랙의 기본 에페메리스를 재정의합니다( 참조기본 에페메리스 데이터).

AWS Ground Station 는 에페메리스를 개별화된 사용 데이터로 처리합니다. 이 선택적 기능을 사용하는 경우 AWS는 에페메리스 데이터를 사용하여 문제 해결 지원을 제공합니다.

사용자 지정 TLE 에페메리스를 업로드하면 추적 품질을 개선하고, 스페이스 트랙 에페메리스를 사용할 수 없는 초기 작업을 처리하고 AWS Ground Station, 조작을 고려할 수 있습니다.

참고

위성 카탈로그 번호가 할당되기 전에 사용자 지정 에페메리스를 제공하는 경우 TLE의 00000 위성 카탈로그 번호 필드와 TLE의 국제 지정자 필드의 000 시작 번호 부분에 24000A를 사용할 수 있습니다(예: 2024년에 출시된 차량).

TLEs. https://en.wikipedia.org/wiki/Two-line_element_set

TLE 에페메리스 생성

TLE 에페메리스는 API의 CreateEphemeris 작업을 사용하여 생성할 수 있습니다 AWS Ground Station . 이 작업은 요청 본문 또는 지정된 S3 버킷의 데이터를 사용하여 에페메리스를 업로드합니다.

한 가지 주의할 점은 에피메리스를 업로드하면 에피메리스가 VALIDATING로 설정되고 비동기 워크플로가 시작되어 에피메리스를 검증하고 이로부터 잠재적 접촉을 생성하는 비동기 워크플로가 시작된다는 점입니다. 임시 저장소가 이 워크플로를 통과한 후 ENABLED가 된 후에만 접촉에 사용됩니다. 에페메리스 상태에 대해 DescribeEphemeris를 폴링하거나 CloudWatch 이벤트를 사용하여 에페메리스의 상태 변경을 추적해야 합니다.

잘못된 에페메리스 문제를 해결하려면 다음을 참조하세요. 잘못된 에페메리스 문제 해결

예: API를 통해 2줄 요소(TLE) 세트 에페메리스 생성

AWS SDKs 및 CLI를 사용하여 CreateEphemeris 호출을 AWS Ground Station 통해 에페메리스를 로 설정한 두 줄 요소(TLE)를 업로드할 수 있습니다. 이 에페메리스는 위성의 기본 에페메리스 데이터 대신 사용됩니다( 참조기본 에페메리스 데이터). 이 예제에서는 AWS SDK for Python(Boto3)을 사용하여이 작업을 수행하는 방법을 보여줍니다.

TLE 세트는 하나 이상의 TLE를 함께 묶어 연속 궤적을 구성하는 JSON 형식의 객체입니다. 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 세트는 다음과 같이 AWS Ground Station boto3 클라이언트를 통해 업로드할 수 있습니다.

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를 사용하여 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에서 TLEs 세트의 모든 TLE에 있는 NORAD ID는 위성이 스페이스 트랙 데이터베이스에 할당된 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']}")