Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Fornisci dati sulle effemeridi di elevazione dell'azimut
Importante
La funzionalità delle effemeridi di elevazione azimutale è attualmente in uno stato di anteprima e richiede un onboarding esplicito.
La funzionalità delle effemeridi di elevazione di Azimuth è sottoposta a un rigoroso controllo degli accessi per un numero limitato di casi d'uso predeterminati e specializzati. L'accesso è notevolmente più restrittivo rispetto alle funzionalità di effemeridi standard fornite dal cliente. <Per ulteriori informazioni sui casi d'uso approvati e sul processo di richiesta di accesso, contatta aws-groundstation@amazon.com.>
Panoramica
Le effemeridi di elevazione azimutale forniscono un modo per specificare direttamente le direzioni di puntamento dell'antenna senza fornire informazioni orbitali satellitari. Invece di caricare dati sulle effemeridi che descrivono l'orbita di un satellite, è possibile fornire angoli di azimut e di elevazione con marcatura temporale che indicano all'antenna esattamente dove puntare durante il contatto.
AWS Ground Station tratta le effemeridi come dati
Questo approccio è particolarmente utile per i seguenti scenari:
-
Supporto operativo precoce: durante la fase di lancio e la fase iniziale di orbita (LEOP) quando non sono disponibili dati orbitali precisi o i parametri orbitali cambiano rapidamente.
-
Schemi di puntamento personalizzati: implementazione di sequenze di puntamento specifiche per testare le antenne o operazioni non standard.
Nota
Quando si utilizzano effemeridi di elevazione azimutale, l'ARN satellitare può essere omesso dalla richiesta di prenotazione del contatto. Se l'ARN satellitare non viene omesso, verrà comunque incluso come parte dei dati di contatto, ma le effemeridi di elevazione azimutale verranno utilizzate per il puntamento dell'antenna anziché per eseguire la risoluzione prioritaria delle effemeridi. Le effemeridi di elevazione azimutale sono associate a una stazione terrestre specifica e definiscono le direzioni di puntamento dell'antenna per quella posizione.
Formato dei dati sulle effemeridi di elevazione azimutale
I dati sulle effemeridi di elevazione azimutale sono costituiti da valori di azimut ed elevazione con marcatura temporale organizzati in segmenti. Ogni segmento contiene una serie di angoli di azimut e di elevazione che coprono un intervallo di tempo specifico.
I componenti chiave dei dati sulle effemeridi di elevazione dell'azimut sono:
-
Ground Station: La stazione terrestre specifica in cui verranno utilizzate queste effemeridi di elevazione azimutale.
-
Unità angolare: L'unità di misura degli angoli (o).
DEGREE_ANGLERADIAN -
Segmenti: una o più raccolte di angoli di azimut e di elevazione limitate nel tempo.
-
Angoli con marcatura temporale: valori individuali di azimut ed elevazione con timestamp associati.
Ogni segmento richiede:
-
Un'epoca di riferimento (l'ora base del segmento)
-
Un intervallo di tempo valido (ora di inizio e fine del segmento)
-
Almeno 5 coppie con data e ora azimuth/elevation
Vincoli di elevazione azimutale:
-
Azimut in gradi: da -180° a 360°
-
Azimut in radianti: da -π a 2π
-
Elevazione in gradi: da -90° a 90°
-
Elevazione in radianti: da -π /2 a π /2
-
I valori temporali devono essere in ordine crescente all'interno di ogni segmento
-
I segmenti non devono sovrapporsi nel tempo
Per ulteriori informazioni, consulta la documentazione dell'CreateEphemerisAPI e il tipo di TimeAzEldati.
Creazione di effemeridi di elevazione azimutale
Le effemeridi di elevazione azimutale vengono create utilizzando la stessa azione API, ma con il tipo di effemeridi. CreateEphemerisazEl Le differenze principali rispetto alle effemeridi TLE e OEM sono:
-
È necessario specificare un parametro
groundStation -
Il
satelliteIdparametro deve essere omesso dalla richiesta -
Le impostazioni di priorità non si applicano (ogni effemeride di elevazione azimutale è specifica di una stazione terrestre)
-
Ogni segmento deve contenere almeno 5 azimuth/elevation punti per supportare l'interpolazione di Lagrange di 4° ordine
-
I limiti e i requisiti aggiuntivi sono descritti in dettaglio nella documentazione dell'API CreateEphemeris
È importante notare che il caricamento di un'effemeride imposta le effemeridi VALIDATING e avvia un flusso di lavoro asincrono che convaliderà e genererà potenziali contatti a partire dalle effemeridi. Un'effemeride verrà utilizzata per i contatti solo dopo che avrà superato questo flusso di lavoro e il suo stato sarà diventato. ENABLED È necessario eseguire un sondaggio DescribeEphemerisper verificare lo stato delle effemeridi o utilizzare CloudWatch gli eventi per tenere traccia delle modifiche allo stato delle effemeridi.
Per risolvere un problema di effemeridi non valido, consulta: Risoluzione dei problemi relativi alle effemeridi non valide
Esempio: creazione di effemeridi di elevazione dell'azimut tramite API
L'esempio seguente mostra come creare effemeridi di elevazione azimutale utilizzando l' 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']}")
In questo esempio:
-
I dati di elevazione azimutale sono associati alla stazione terrestre «Ohio 1"
-
Gli angoli sono specificati in gradi
-
Il segmento copre un periodo di 15 minuti
-
I
dtvalori sono secondi atomici scostati dall'epoca di riferimento -
Vengono fornite sei azimuth/elevation coppie (il minimo è 5)
Esempio: carica i dati di elevazione azimutale da S3
Per set di dati più grandi, puoi caricare i dati di elevazione azimutale da un bucket 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']}")
L'oggetto S3 deve contenere una struttura JSON con i dati di elevazione azimutale nello stesso formato mostrato nell'esempio di caricamento diretto.
Prenotazione dei contatti con effemeridi di elevazione azimutale
Quando si utilizza un'effemeride di elevazione azimutale per riservare un contatto, il processo è diverso da quello delle effemeridi TLE e OEM:
-
Crea le effemeridi di elevazione dell'azimut usando CreateEphemeris
-
Attendi che le effemeridi raggiungano lo stato
ENABLED -
Prenota il contatto utilizzando le opzioni di ReserveContacttracciamento
Esempio di prenotazione di un contatto con effemeridi di elevazione dell'azimut:
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']}")
Nota
Il satelliteArn parametro può essere omesso quando si riserva un contatto con le effemeridi di elevazione dell'azimut. L'antenna seguirà gli angoli di azimut e di elevazione specificati durante il contatto.
Elenco dei contatti disponibili
Quando si utilizzano le effemeridi di elevazione azimutale, l'ListContactsAPI richiede parametri specifici:
-
Il
satelliteArnparametro può essere omesso dalla richiesta -
È necessario fornire un
ephemerisparametro con l'ID delle effemeridi di elevazione dell'azimut per specificare quali effemeridi utilizzare -
Devi comunque fornire e
groundStationmissionProfileArn
Esempio di creazione di effemeridi di elevazione azimutale e di elenco dei contatti disponibili con essa:
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")
Nota
Il ephemeris parametro con l'ID di elevazione azimutale deve essere fornito quando si elencano i contatti per specificare quali effemeridi di elevazione azimutale devono essere utilizzate per determinare le finestre di contatto. Se satelliteArn è incluso, verrà associato ai dati di contatto, ma le effemeridi di elevazione azimutale verranno utilizzate per il puntamento dell'antenna anziché per eseguire la risoluzione prioritaria delle effemeridi.