View a markdown version of this page

Fornisci i dati sulle effemeridi relativi all'elevazione dell'azimut - AWS Ground Station

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 i dati sulle effemeridi relativi all'elevazione dell'azimut

Importante

La funzione delle effemeridi con elevazione azimutale è attualmente in stato di anteprima e richiede un onboarding esplicito.

La funzionalità delle effemeridi con elevazione azimutale è soggetta 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à effemeridi standard fornite dal cliente. Per ulteriori informazioni sui casi d'uso approvati e sulla procedura di richiesta di accesso, apri un ticket tramite il. Supporto AWS AWS Support Center Console Il nostro team ti guiderà attraverso il processo di approvazione per casi d'uso specializzati.

Panoramica di

Le effemeridi dell'elevazione azimutale consentono di specificare direttamente la direzione di puntamento dell'antenna senza fornire informazioni sull'orbita del satellite. Invece di caricare dati sulle effemeridi che descrivono l'orbita di un satellite, fornisci angoli di azimut e di elevazione con indicazione temporale che indicano all'antenna esattamente dove puntare durante un contatto.

AWS Ground Station tratta le effemeridi come dati di utilizzo personalizzati. https://aws.amazon.com/service-terms Se utilizzi questa funzionalità opzionale, AWS utilizzerà i dati relativi alle effemeridi per fornire supporto per la risoluzione dei problemi.

Questo approccio è particolarmente utile per i seguenti scenari:

  • Supporto operativo precoce: durante la fase di lancio e la fase iniziale dell'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 il test delle antenne o per operazioni non standard.

Nota

Quando si utilizzano le effemeridi relative all'elevazione azimutale, l'ARN satellitare può essere omesso dalla richiesta di prenotazione del contatto. Se l'ARN del satellite non viene omesso, verrà comunque incluso come parte dei dati di contatto, ma le effemeridi dell'elevazione azimutale verranno utilizzate per puntare l'antenna anziché per eseguire la risoluzione prioritaria delle effemeridi. Le effemeridi dell'elevazione azimutale sono associate a una specifica stazione terrestre e definiscono le direzioni di puntamento dell'antenna per quella posizione.

Formato dei dati sulle effemeridi sull'elevazione azimutale

I dati sulle effemeridi relativi all'elevazione azimutale sono costituiti da valori di azimut e elevazione contrassegnati con data e ora organizzati in segmenti. Ogni segmento contiene una serie di angoli di azimut ed elevazione che coprono un intervallo di tempo specifico.

I componenti chiave dei dati sulle effemeridi dell'elevazione azimutale sono:

  • Stazione di terra: la stazione terrestre specifica in cui verranno utilizzate queste effemeridi di elevazione azimutale.

  • Unità angolare: l'unità di misura degli angoli (o). DEGREE_ANGLE RADIAN

  • Segmenti: una o più raccolte di angoli di azimut e di elevazione limitate nel tempo.

  • Time-tagged angoli: valori individuali di azimut ed elevazione con timestamp associati.

Ogni segmento richiede:

  • Un'epoca di riferimento (il tempo base per il segmento)

  • Un intervallo di tempo valido (ora di inizio e fine del segmento)

  • Almeno 5 coppie contrassegnate con data azimuth/elevation e ora

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 ciascun segmento

  • I segmenti non devono sovrapporsi nel tempo

Per ulteriori informazioni, consulta la documentazione dell'CreateEphemerisAPI e il tipo di TimeAzEl dati.

Creazione di effemeridi di elevazione azimutale

Le effemeridi di elevazione azimutale vengono create utilizzando la stessa azione CreateEphemeris API, ma con il tipo di effemeridi. azEl Le principali differenze rispetto alle effemeridi TLE e OEM sono:

  • È necessario specificare un parametro groundStation

  • Il satelliteId parametro deve essere omesso dalla richiesta

  • Le impostazioni di priorità non si applicano (ogni effemeride di elevazione azimutale è specifica per una stazione di terra)

  • 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 l'effemeride 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 aver superato questo flusso di lavoro e aver raggiunto il suo stato. ENABLED È necessario verificare lo stato delle effemeridi o utilizzare CloudWatch gli eventi DescribeEphemeris per tenere traccia dei cambiamenti di stato delle effemeridi.

Per risolvere i problemi relativi a un'effemeride non valida, consulta: Risoluzione dei problemi relativi alle effemeridi non valide

Esempio: creare effemeridi di elevazione azimutale tramite API

L'esempio seguente mostra come creare effemeridi di elevazione all'azimut utilizzando l'SDK per Python (Boto3): AWS

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 sull'elevazione azimutale sono associati alla stazione di terra «Ohio 1"

  • Gli angoli sono espressi in gradi

  • Il segmento copre un periodo di 15 minuti

  • I dt valori sono secondi atomici sfalsati rispetto all'epoca di riferimento

  • Sono disponibili 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 dell'azimut nello stesso formato mostrato nell'esempio di caricamento diretto.

Riservare i contatti con effemeridi di elevazione azimutale

Quando si utilizza un'effemeride con l'elevazione dell'azimut per prenotare un contatto, il processo è diverso dalle effemeridi TLE e OEM:

  1. Crea le effemeridi di elevazione azimutale usando CreateEphemeris

  2. Attendi che le effemeridi raggiungano lo stato ENABLED

  3. Riserva il contatto utilizzando le opzioni di ReserveContact tracciamento

Esempio di prenotazione di un contatto con effemeridi di elevazione azimutale:

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 prenota un contatto con le effemeridi di elevazione dell'azimut. L'antenna seguirà gli angoli di azimut ed elevazione specificati durante il contatto.

Elenco dei contatti disponibili

Quando si utilizzano le effemeridi con elevazione azimutale, l'ListContactsAPI richiede parametri specifici:

  • Il satelliteArn parametro può essere omesso dalla richiesta

  • È necessario fornire un ephemeris parametro con l'ID delle effemeridi di elevazione azimutale per specificare quali effemeridi utilizzare

  • Le finestre di contatto disponibili mostrano quando gli angoli di azimut ed elevazione forniti sono superiori alla maschera del sito della stazione di terra richiesta https://docs.aws.amazon.com/ground-station/latest/ug/locations.site-masks.html

  • È comunque necessario fornire e groundStation missionProfileArn

Esempio di creazione di un'effemeride sull'elevazione azimutale con la quale vengono elencati i contatti disponibili:

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 dell'elevazione dell'azimut deve essere fornito quando si elencano i contatti per specificare quali effemeridi dell'elevazione azimutale devono essere utilizzate per determinare le finestre di contatto. Se satelliteArn è incluso, verrà associato ai dati di contatto, ma le effemeridi dell'elevazione azimutale verranno utilizzate per puntare l'antenna anziché per eseguire la risoluzione prioritaria delle effemeridi.