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 acimutal.
importante
La función de efemérides de elevación acimutal se encuentra actualmente en estado de vista previa y requiere una incorporación explícita.
La funcionalidad de efemérides de elevación acimutal está sometida 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, abra un AWS Support ticket a través del. AWS Support Center Console
Descripción general de
La efeméride de elevación acimutal proporciona una forma de 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 describan la órbita de un satélite, se proporcionan ángulos acimutales y de elevación marcados en el tiempo que indican a la antena exactamente hacia dónde debe apuntar durante un contacto.
AWS Ground Station trata las efemérides como datos de uso individualizados. https://aws.amazon.com/service-terms
Este enfoque es especialmente útil en los siguientes escenarios:
-
Apoyo a las primeras operaciones: durante la fase de lanzamiento y órbita temprana (LEOP), cuando no se dispone de datos orbitales precisos o los parámetros orbitales cambian rápidamente.
-
Patrones de señalamiento personalizados: implementación de secuencias de señalamiento específicas para pruebas de antenas o operaciones no estándar.
nota
Cuando se utilizan efemérides de elevación acimutal, es posible que se omita el ARN del satélite en la solicitud de reserva de contactos. Si no se omite el ARN del satélite, se seguirá incluyendo como parte de los datos de contacto, pero la efeméride de elevación acimutal se utilizará para apuntar la antena en lugar de para resolver las efemérides por prioridad. 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 acimutal
Los datos de efemérides de elevación acimutal se componen de valores de acimut y elevación marcados en el tiempo organizados en segmentos. Cada segmento contiene una serie de ángulos acimutales y de elevación que cubren un rango de tiempo específico.
Los componentes clave de los datos de efemérides de elevación acimutal son:
-
Estación terrestre: la estación terrestre específica en la que se utilizará esta efeméride de elevación acimutal.
-
Unidad angular: la unidad de medida de los ángulos (o).
DEGREE_ANGLERADIAN -
Segmentos: una o más colecciones de ángulos de acimut y elevación con límite temporal.
-
Time-tagged ángulos: 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 con etiquetas temporales azimuth/elevation
Restricciones de elevación acimutal:
-
Azimut en grados: de -180° a 360°
-
Azimut 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, consulte la documentación de la CreateEphemeris API y el tipo de TimeAzEl datos.
Creación de efemérides de elevación acimutal
Las efemérides de elevación acimutal se crean con la misma acción de la API, pero con el tipo de efemérides. CreateEphemeris azEl Las principales diferencias entre las efemérides TLE y OEM son las siguientes:
-
Debe especificar un parámetro
groundStation -
El
satelliteIdparámetro debe omitirse en la solicitud -
La configuración de prioridad no se aplica (cada efeméride de elevación acimutal 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 usará para los contactos una vez que haya superado este flujo de trabajo y su estado pase a ser. ENABLED Debes sondear el estado de las efemérides o usar CloudWatch eventos DescribeEphemeris para realizar un seguimiento de los cambios de estado de las efemérides.
Para solucionar problemas relacionados con una efeméride no válida, consulte: Solucionar problemas de efemérides no válidas
Ejemplo: Cree efemérides de elevación acimutal mediante la API
El siguiente ejemplo muestra cómo crear una efeméride de elevación acimutal con el SDK para 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']}")
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 una diferencia de segundos con respecto a la época de referencia -
Se proporcionan seis azimuth/elevation pares (el mínimo es 5)
Ejemplo: Cargue datos de elevación acimutal desde S3
Para conjuntos de datos más grandes, puedes cargar datos de elevación acimutal desde un bucket 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 acimutal en el mismo formato que se muestra en el ejemplo de carga directa.
Reserva de contactos con efemérides de elevación acimutal
Cuando se utiliza una efeméride de elevación acimutal para reservar un contacto, el proceso difiere del de las efemérides TLE y OEM:
-
Cree las efemérides de elevación acimutal utilizando CreateEphemeris
-
Espere a que las efemérides alcancen el estado
ENABLED -
Reserva el contacto ReserveContact con anulaciones de seguimiento
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 se puede omitir al reservar un contacto con efemérides de elevación acimutal. La antena seguirá los ángulos de acimut y elevación especificados durante el contacto.
Listar los contactos disponibles
Cuando se utilizan efemérides de elevación acimutal, la ListContacts API requiere parámetros específicos:
-
El
satelliteArnparámetro se puede omitir en la solicitud -
Debe proporcionar un
ephemerisparámetro con el ID de efeméride de elevación acimutal para especificar qué efemérides usar -
Las ventanas de contacto disponibles muestran cuando los ángulos de acimut y elevación proporcionados están por encima de la máscara de ubicación de la estación terrestre solicitada https://docs.aws.amazon.com/ground-station/latest/ug/locations.site-masks.html
-
Aún debe proporcionar y
groundStationmissionProfileArn
Ejemplo de cómo crear una efeméride de elevación acimutal y con ella se enumeran los contactos disponibles:
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
Se debe proporcionar el ephemeris parámetro con el identificador de elevación acimutal al enumerar los contactos para especificar qué efemérides de elevación acimutal se deben utilizar para determinar las ventanas de contacto. Si satelliteArn se incluye, se asociará a los datos de contacto, pero la efeméride de elevación acimutal se utilizará para apuntar la antena en lugar de para resolver la prioridad de las efemérides.