Fournir des données sur les éphémérides d'altitude azimutale - AWS Ground Station

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fournir des données sur les éphémérides d'altitude azimutale

Important

La fonction d'éphéméride d'altitude azimutale est actuellement en état d'aperçu et nécessite une intégration explicite.

La fonctionnalité des éphémérides d'élévation d'azimut est soumise à un contrôle d'accès strict pour un nombre limité de cas d'utilisation spécialisés prédéterminés. L'accès est nettement plus restrictif que pour les fonctionnalités d'éphémérides standard fournies par le client. Pour plus d'informations sur les cas d'utilisation approuvés et le processus de demande d'accès, contactez .

Aperçu

Les éphémérides d'élévation d'azimut permettent de spécifier directement les directions de pointage des antennes sans fournir d'informations orbitales pour les satellites. Au lieu de télécharger des données éphémérides décrivant l'orbite d'un satellite, vous fournissez des angles d'azimut et d'élévation horodatés qui indiquent à l'antenne exactement où pointer tout au long d'un contact.

AWS Ground Station traite les éphémérides comme des données d'utilisation individualisées. Si vous utilisez cette fonctionnalité facultative, AWS utilisera vos données d'éphéméride pour fournir une assistance en matière de dépannage.

Cette approche est particulièrement utile pour les scénarios suivants :

  • Assistance aux premières opérations : pendant la phase de lancement et d'orbite précoce (LEOP) lorsque des données orbitales précises ne sont pas disponibles ou que les paramètres orbitaux changent rapidement.

  • Modèles de pointage personnalisés : mise en œuvre de séquences de pointage spécifiques pour les tests d'antennes ou les opérations non standard.

Note

Lorsque vous utilisez des éphémérides d'altitude azimutale, l'ARN du satellite peut être omis de la demande de réservation de contact. Si l'ARN du satellite n'est pas omis, il sera toujours inclus dans les données de contact, mais les éphémérides d'élévation d'azimut seront utilisées pour le pointage de l'antenne plutôt que pour effectuer une résolution prioritaire des éphémérides. L'éphéméride d'élévation azimutale est associée à une station au sol spécifique et définit les directions de pointage de l'antenne pour cet emplacement.

Format de données des éphémérides d'altitude azimutale

Les données d'éphémérides d'altitude azimutale se composent de valeurs d'azimut et d'altitude étiquetées dans le temps et organisées en segments. Chaque segment contient une série d'angles d'azimut et d'élévation qui couvrent une plage de temps spécifique.

Les principaux éléments des données d'éphémérides d'altitude azimutale sont les suivants :

  • Station au sol : station au sol spécifique où cette éphéméride d'altitude azimutale sera utilisée.

  • Unité d'angle : unité de mesure des angles (DEGREE_ANGLEouRADIAN).

  • Segments : une ou plusieurs collections limitées dans le temps d'angles d'azimut et d'élévation.

  • Angles horodatés : valeurs d'azimut et d'altitude individuelles avec horodatage associé.

Chaque segment nécessite :

  • Une époque de référence (heure de base pour le segment)

  • Une plage horaire valide (heures de début et de fin du segment)

  • Au moins 5 paires horodatées azimuth/elevation

Contraintes d'élévation de l'azimut :

  • Azimut en degrés : -180° à 360°

  • Azimut en radians : -π à 2π

  • Altitude en degrés : -90° à 90°

  • Altitude en radians : -π/2 à π/2

  • Les valeurs temporelles doivent être classées par ordre croissant dans chaque segment

  • Les segments ne doivent pas se chevaucher dans le temps

Pour plus d'informations, consultez la documentation de l'CreateEphemerisAPI et le type de TimeAzEldonnées.

Création d'éphémérides d'élévation d'azimut

Les éphémérides d'élévation azimutale sont créées à l'aide de la même action d'CreateEphemerisAPI, mais avec le type d'éphéméride. azEl Les principales différences par rapport aux éphémérides TLE et OEM sont les suivantes :

  • Vous devez spécifier un groundStation paramètre

  • Le satelliteId paramètre doit être omis de la demande

  • Les paramètres de priorité ne s'appliquent pas (chaque éphéméride d'azimut est spécifique à une station au sol)

  • Chaque segment doit contenir au moins 5 azimuth/elevation points pour permettre une interpolation de Lagrange de 4e ordre

  • Les limites et exigences supplémentaires sont détaillées dans la documentation de CreateEphemerisl'API

Il est important de noter que le téléchargement d'une éphéméride définit l'éphéméride et lance un flux de travail asynchrone qui validera VALIDATING et générera des contacts potentiels à partir de votre éphéméride. Une éphéméride ne sera utilisée pour les contacts qu'une fois qu'elle aura passé ce flux de travail et que son statut sera passé. ENABLED Vous devez effectuer un sondage DescribeEphemerispour connaître le statut des éphémérides ou utiliser des CloudWatch événements pour suivre les changements de statut des éphémérides.

Pour résoudre le problème d'une éphéméride non valide, consultez : Résoudre les problèmes liés aux éphémérides non valides

Exemple : créer des éphémérides d'altitude azimutale via l'API

L'exemple suivant montre comment créer une éphéméride d'altitude azimutale à l'aide du AWS SDK pour 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']}")

Dans cet exemple :

  • Les données d'altitude azimutale sont associées à la station au sol « Ohio 1 »

  • Les angles sont spécifiés en degrés

  • Le segment couvre une période de 15 minutes

  • Les dt valeurs sont décalées en secondes atomiques par rapport à l'époque de référence

  • Six azimuth/elevation paires sont fournies (le minimum est de 5)

Exemple : télécharger des données d'altitude azimutale depuis S3

Pour les ensembles de données plus volumineux, vous pouvez télécharger les données d'altitude azimutale à partir d'un compartiment 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'objet S3 doit contenir une structure JSON avec les données d'altitude azimutale dans le même format que celui indiqué dans l'exemple de téléchargement direct.

Réservation de contacts avec des éphémérides d'élévation d'azimut

Lorsque vous utilisez une éphéméride d'élévation d'azimut pour réserver un contact, le processus est différent de celui des éphémérides TLE et OEM :

  1. Créez l'éphéméride d'élévation azimutale à l'aide de CreateEphemeris

  2. Attendez que l'éphéméride atteigne le statut ENABLED

  3. Réservez le contact en utilisant ReserveContactle suivi des dérogations

Exemple de réservation d'un contact avec des éphémérides d'élévation d'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']}")
Note

Le satelliteArn paramètre peut être omis lors de la réservation d'un contact avec des éphémérides d'élévation d'azimut. L'antenne suivra les angles d'azimut et d'élévation spécifiés pendant le contact.

Liste des contacts disponibles

Lorsque vous utilisez des éphémérides d'élévation d'azimut, l'API nécessite des ListContactsparamètres spécifiques :

  • Le satelliteArn paramètre peut être omis de la demande

  • Vous devez fournir un ephemeris paramètre avec l'identifiant de l'éphéméride à élévation azimutale pour spécifier les éphémérides à utiliser

  • Les fenêtres de contact disponibles indiquent lorsque les angles d'azimut et d'élévation fournis sont au-dessus du masque de site de la station au sol demandée

  • Vous devez toujours fournir groundStation et missionProfileArn

Exemple de création d'une éphéméride d'altitude azimutale et de liste des contacts disponibles à l'aide de cette éphéméride :

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")
Note

Le ephemeris paramètre avec l'ID d'altitude d'azimut doit être fourni lors de la liste des contacts afin de spécifier les éphémérides d'élévation d'azimut à utiliser pour déterminer les fenêtres de contact. S'il satelliteArn est inclus, il sera associé aux données de contact, mais les éphémérides d'élévation azimutale seront utilisées pour le pointage de l'antenne plutôt que pour effectuer une résolution prioritaire des éphémérides.