

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'élévation azimutale
<a name="providing-azimuth-elevation-ephemeris-data"></a>

**Important**  
 La fonction d'éphéméride d'élévation azimutale est actuellement en état de prévisualisation et nécessite une intégration explicite.   
 La fonctionnalité des éphémérides d'élévation azimutale 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, veuillez ouvrir un AWS Support ticket via le [AWS Support Center Console](https://console.aws.amazon.com/support). Notre équipe vous guidera tout au long du processus d'approbation pour les cas d'utilisation spécialisés. 

## Vue d’ensemble
<a name="w2aac28c17c15b5"></a>

 Les éphémérides d'élévation azimutale permettent de spécifier directement les directions de pointage de l'antenne sans fournir d'informations orbitales par satellite. Au lieu de télécharger des données d'éphémérides décrivant l'orbite d'un satellite, vous fournissez des angles d'azimut et d'élévation chronométré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. ](https://aws.amazon.com/service-terms) Si vous utilisez cette fonctionnalité optionnelle, AWS utilisera vos données d'éphémérides pour fournir une assistance en matière de dépannage. 

 Cette approche est particulièrement utile pour les scénarios suivants : 
+ *Assistance aux opérations précoces : * 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**  
 Lors de l'utilisation d'éphémérides d'élévation 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 azimutale seront utilisées pour le pointage de l'antenne plutôt que pour la 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'élévation azimutale
<a name="w2aac28c17c15b7"></a>

 Les données d'éphémérides d'élévation azimutale consistent en des 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'élévation azimutale sont les suivants : 
+ *Station au sol : * station au sol spécifique où cette éphéméride d'élévation azimutale sera utilisée.
+ *Unité d'angle : * unité de mesure des angles (`DEGREE_ANGLE`ou`RADIAN`).
+ *Segments : * une ou plusieurs collections limitées dans le temps d'angles d'azimut et d'élévation.
+ *Time-tagged angles : valeurs * individuelles d'azimut et d'altitude avec horodatages associés.

 Chaque segment nécessite : 
+ Une époque de référence (l'heure de base du segment)
+ Un intervalle de temps valide (heures de début et de fin du segment)
+ Au moins 5 paires chronométrées azimuth/elevation 

 Contraintes d'élévation azimutale : 
+ 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 pour chaque segment
+ Les segments ne doivent pas se chevaucher dans le temps

 Pour plus d'informations, consultez la documentation de l'[CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html)API et le type de [ TimeAzEl ](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_TimeAzEl.html) données. 

## Création d'éphémérides d'élévation azimutale
<a name="w2aac28c17c15b9"></a>

 Les éphémérides d'élévation azimutale sont créées à l'aide de la même action d'[CreateEphemeris](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html)API, 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'élévation azimutale 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 [ CreateEphemeris ](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html) l'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 vos éphémérides. Une éphéméride ne sera utilisée pour les contacts qu'une fois qu'elle aura terminé ce flux de travail et que son statut sera devenu. `ENABLED` Vous devez effectuer un sondage [ DescribeEphemeris ](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_DescribeEphemeris.html) pour connaître l'état des éphémérides ou utiliser des CloudWatch événements pour suivre les changements de statut des éphémérides. 

 Pour résoudre les problèmes liés à une éphéméride non valide, consultez : [Résoudre les problèmes liés aux éphémérides non valides](troubleshooting-invalid-ephemerides.md) 

## Exemple : créer des éphémérides d'élévation azimutale via une API
<a name="w2aac28c17c15c11"></a>

 L'exemple suivant montre comment créer une éphéméride d'élévation 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'élévation 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 des secondes atomiques décalées 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'élévation azimutale depuis S3
<a name="w2aac28c17c15c13"></a>

 Pour les ensembles de données plus volumineux, vous pouvez télécharger des données d'élévation 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'élévation azimutale dans le même format que celui illustré dans l'exemple de téléchargement direct. 

## Réservation de contacts avec des éphémérides d'élévation azimutale
<a name="w2aac28c17c15c15"></a>

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

1. Créez les éphémérides d'élévation azimutale à l'aide de [ CreateEphemeris ](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_CreateEphemeris.html)

1. Attendez que les éphémérides atteignent leur statut `ENABLED`

1. Réservez le contact en utilisant [ ReserveContact ](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ReserveContact.html) des dérogations de suivi

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

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

## Répertorier les contacts disponibles
<a name="w2aac28c17c15c17"></a>

 Lorsque vous utilisez des éphémérides d'élévation azimutale, l'[ListContacts](https://docs.aws.amazon.com/ground-station/latest/APIReference/API_ListContacts.html)API nécessite des paramètres spécifiques : 
+ Le `satelliteArn` paramètre peut être omis de la demande
+ Vous devez fournir un `ephemeris` paramètre avec l'identifiant des éphémérides d'élévation azimutale pour spécifier les éphémérides à utiliser
+ Les fenêtres de contact disponibles indiquent quand les angles d'azimut et d'élévation fournis sont supérieurs au masque [ de ](https://docs.aws.amazon.com/ground-station/latest/ug/locations.site-masks.html) site de la station au sol demandée
+ Vous devez tout de même fournir `groundStation` et `missionProfileArn`

 Exemple de création d'une éphéméride d'élévation 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'élévation azimutale doit être fourni lors de la liste des contacts afin de spécifier quelles éphémérides d'élévation azimutale doivent être utilisées pour déterminer les fenêtres de contact. Si le `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 la résolution prioritaire des éphémérides. 