Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Proporcione datos de efemérides de elevación del acimut
importante
La función de efemérides de elevación azimutal se encuentra actualmente en estado de vista previa y requiere una incorporación explícita.
La funcionalidad de efemérides de elevación azimutal está sujeta a un estricto control de acceso para un número limitado de casos de uso especializados y predeterminados. El acceso es considerablemente más restrictivo que el de las funciones de efemérides estándar proporcionadas por el cliente. <Para obtener más información sobre los casos de uso aprobados y el proceso de solicitud de acceso, póngase en contacto con aws-groundstation@amazon.com.>
Descripción general de
Las efemérides de elevación azimutal permiten especificar directamente las direcciones de orientación de la antena sin proporcionar información sobre la órbita del satélite. En lugar de cargar datos de efemérides que describen la órbita de un satélite, se proporcionan ángulos de acimut y elevación marcados con el tiempo que indican a la antena exactamente hacia dónde debe apuntar un contacto.
AWS Ground Station trata las efemérides como datos de uso individualizados.
Este enfoque resulta especialmente útil en los siguientes escenarios:
-
Apoyo a las primeras operaciones: durante la fase de lanzamiento y la fase de órbita temprana (LEOP), cuando no se dispone de datos orbitales precisos o los parámetros orbitales cambian rápidamente.
-
Patrones de puntería personalizados: implementación de secuencias de puntería específicas para pruebas de antenas u operaciones no estándar.
nota
Cuando se utilizan efemérides de elevación de acimut, es posible que se omita el ARN del satélite en la solicitud de reserva de contacto. Si no se omite el ARN del satélite, se seguirá incluyendo como parte de los datos de contacto, pero las efemérides de elevación del acimut se utilizarán para apuntar la antena en lugar de realizar una resolución prioritaria de efemérides. La efeméride de elevación acimutal está asociada a una estación terrestre específica y define las direcciones de orientación de la antena para esa ubicación.
Formato de datos de efemérides de elevación azimutal
Los datos de efemérides de elevación azimutal se componen de valores de acimut y elevación etiquetados en función del tiempo y organizados en segmentos. Cada segmento contiene una serie de ángulos de acimut y elevación que cubren un intervalo de tiempo específico.
Los componentes clave de los datos de efemérides de elevación del acimut son:
-
Ground Station: la estación terrestre específica en la que se utilizará esta efeméride de elevación acimutal.
-
Unidad de ángulo: la unidad de medida de los ángulos (o).
DEGREE_ANGLERADIAN -
Segmentos: uno o más conjuntos de ángulos de acimut y elevación limitados en el tiempo.
-
Ángulos etiquetados con el tiempo: valores individuales de acimut y elevación con marcas de tiempo asociadas.
Cada segmento requiere:
-
Una época de referencia (el tiempo base del segmento)
-
Un intervalo de tiempo válido (horas de inicio y finalización del segmento)
-
Al menos 5 pares etiquetados con el tiempo azimuth/elevation
Restricciones de elevación del acimut:
-
Acimut en grados: de -180° a 360°
-
Acimut en radianes: de -π a 2π
-
Elevación en grados: de -90° a 90°
-
Elevación en radianes: de -π /2 a π /2
-
Los valores de tiempo deben estar en orden ascendente dentro de cada segmento
-
Los segmentos no deben superponerse en el tiempo
Para obtener más información, consulta la documentación de la CreateEphemerisAPI y el tipo de TimeAzEldatos.
Crear efemérides de elevación de acimut
Las efemérides de elevación azimutal se crean mediante la misma acción de API, pero con el tipo de efemérides. CreateEphemerisazEl Las principales diferencias entre las efemérides TLE y OEM son:
-
Debe especificar un parámetro
groundStation -
El
satelliteIdparámetro debe omitirse de la solicitud -
No se aplica la configuración de prioridad (cada efeméride de elevación de acimut es específica de una estación terrestre)
-
Cada segmento debe contener al menos 5 azimuth/elevation puntos para admitir la interpolación de Lagrange de cuarto orden
-
Los límites y requisitos adicionales se detallan en la documentación de la API CreateEphemeris
Es importante tener en cuenta que al cargar una efeméride ésta se establece en VALIDATING e inicia un flujo de trabajo asíncrono que validará y generará contactos potenciales a partir de la efeméride. Una efeméride solo se utilizará para los contactos una vez que haya superado este flujo de trabajo y su estado pase a ser. ENABLED Deberías sondear el estado de las efemérides o usar CloudWatch eventos DescribeEphemerispara realizar un seguimiento de los cambios de estado de las efemérides.
Para solucionar problemas relacionados con una efeméride no válida, consulta: Solucionar problemas de efemérides no válidas
Ejemplo: cree efemérides de elevación de acimut mediante la API
El siguiente ejemplo muestra cómo crear una efeméride de elevación de acimut mediante el AWS SDK para 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']}")
En este ejemplo:
-
Los datos de elevación acimutal están asociados a la estación terrestre «Ohio 1"
-
Los ángulos se especifican en grados
-
El segmento cubre un período de 15 minutos
-
Los
dtvalores son segundos atómicos con respecto a la época de referencia -
Se proporcionan seis azimuth/elevation pares (el mínimo es 5)
Ejemplo: cargue datos de elevación de acimut desde S3
Para conjuntos de datos más grandes, puede cargar datos de elevación de acimut desde un depósito de 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']}")
El objeto S3 debe contener una estructura JSON con los datos de elevación del acimut en el mismo formato que se muestra en el ejemplo de carga directa.
Reservar contactos con efemérides de elevación de acimut
Cuando se utiliza una efeméride de elevación de acimut para reservar un contacto, el proceso es diferente al de las efemérides TLE y OEM:
-
Cree las efemérides de elevación de acimut mediante CreateEphemeris
-
Espere a que las efemérides alcancen el estado
ENABLED -
Reserva el contacto utilizando las anulaciones de ReserveContactseguimiento
Ejemplo de reserva de un contacto con efemérides de elevación acimutal:
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
El satelliteArn parámetro puede omitirse al reservar un contacto con efemérides de elevación de acimut. La antena seguirá los ángulos de acimut y elevación especificados durante el contacto.
Listado de contactos disponibles
Cuando se utilizan efemérides de elevación de acimut, la ListContactsAPI requiere parámetros específicos:
-
Es posible que el
satelliteArnparámetro se omita en la solicitud -
Debe proporcionar un
ephemerisparámetro con el identificador de efemérides de elevación del acimut para especificar qué efemérides utilizar -
Aún así, debe proporcionar y
groundStationmissionProfileArn
Ejemplo de cómo crear una efeméride de elevación acimutal y enumerar los contactos disponibles con ella:
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
Al enumerar los contactos, se debe proporcionar el ephemeris parámetro con el identificador de elevación de acimut para especificar qué efemérides de elevación de acimut se deben utilizar para determinar las ventanas de contacto. Si satelliteArn se incluye, se asociará a los datos de contacto, pero las efemérides de elevación acimutal se utilizarán para apuntar la antena en lugar de realizar una resolución prioritaria de efemérides.