Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Geben Sie Azimut-Elevations-Ephemeridendaten an
Wichtig
Die Funktion „Azimut-Elevation-Ephemeride“ befindet sich derzeit im Vorschaustatus und erfordert eine explizite Einführung.
Die Azimut-Elevation-Ephemeridenfunktion unterliegt einer strengen Zugriffskontrolle für eine begrenzte Anzahl von vorab festgelegten, speziellen Anwendungsfällen. Der Zugriff ist deutlich restriktiver als bei standardmäßigen, vom Kunden bereitgestellten Ephemeridenfunktionen. <Weitere Informationen zu zugelassenen Anwendungsfällen und zum Verfahren für Zugriffsanfragen erhalten Sie unter aws-groundstation@amazon.com.>
Übersicht
Die Azimut-Elevations-Ephemeride bietet eine Möglichkeit, die Richtung der Antennenausrichtung direkt zu spezifizieren, ohne Informationen über die Umlaufbahn des Satelliten bereitzustellen. Anstatt Ephemeridendaten hochzuladen, die die Umlaufbahn eines Satelliten beschreiben, geben Sie Azimut- und Elevationswinkel mit Zeitmarkierungen an, die der Antenne genau sagen, wohin sie während eines Kontakts zeigen soll.
AWS Ground Station behandelt Ephemeriden als individualisierte Nutzungsdaten.
Dieser Ansatz ist besonders nützlich für die folgenden Szenarien:
-
Unterstützung in der Anfangsphase des Betriebs: Während der Start- und Early-Orbit-Phase (LEOP), wenn keine genauen Orbitaldaten verfügbar sind oder sich die Bahnparameter schnell ändern.
-
Benutzerdefinierte Zeigemuster: Implementierung spezifischer Zeigesequenzen für Antennentests oder für nicht standardmäßige Operationen.
Anmerkung
Bei Verwendung der Azimut-Elevations-Ephemeride kann der Satelliten-ARN in der Kontaktreservierungsanfrage weggelassen werden. Wenn das Satelliten-ARN nicht weggelassen wird, wird es trotzdem als Teil der Kontaktdaten aufgenommen, aber die Azimuthöhen-Ephemeride wird für die Antennenausrichtung verwendet, anstatt die Ephemeriden-Prioritätsauflösung durchzuführen. Die Azimuthöhen-Ephemeride ist einer bestimmten Bodenstation zugeordnet und definiert die Richtungsrichtungen der Antenne für diesen Standort.
Datenformat der Azimut-Elevations-Ephemeride
Ephemeridendaten zur Azimut-Höhe bestehen aus Azimut- und Höhenwerten mit Zeitangabe, die in Segmenten angeordnet sind. Jedes Segment enthält eine Reihe von Azimut- und Höhenwinkeln, die einen bestimmten Zeitraum abdecken.
Die wichtigsten Komponenten der Azimut-Elevations-Ephemeridendaten sind:
-
Ground Station: Die spezifische Bodenstation, an der diese Azimuthöhen-Ephemeride verwendet wird.
-
Winkeleinheit: Die Maßeinheit für Winkel (oder).
DEGREE_ANGLERADIAN -
Segmente: Eine oder mehrere zeitlich begrenzte Sammlungen von Azimut- und Elevationswinkeln.
-
Winkel mit Zeitangabe: Einzelne Azimut- und Höhenwerte mit zugehörigen Zeitstempeln.
Jedes Segment erfordert:
-
Eine Referenzepoche (die Basiszeit für das Segment)
-
Ein gültiger Zeitraum (Start- und Endzeit für das Segment)
-
Mindestens 5 Paare mit Zeitmarkierungen azimuth/elevation
Einschränkungen der Azimut-Elevation:
-
Azimut in Grad: -180° bis 360°
-
Azimut im Bogenmaß: -π bis 2π
-
Höhe in Grad: -90° bis 90°
-
Höhe im Bogenmaß: -π /2 bis π /2
-
Die Zeitwerte müssen innerhalb jedes Segments in aufsteigender Reihenfolge angegeben werden
-
Segmente dürfen sich zeitlich nicht überlappen
Weitere Informationen finden Sie in der CreateEphemerisAPI-Dokumentation und zum TimeAzElDatentyp.
Eine Azimut-Elevations-Ephemeride erstellen
Die Azimut-Elevation-Ephemeride wird mit derselben CreateEphemerisAPI-Aktion erstellt, jedoch mit dem Ephemeridentyp. azEl Die wichtigsten Unterschiede zu TLE- und OEM-Ephemeriden sind:
-
Sie müssen einen Parameter angeben
groundStation -
Der
satelliteIdParameter muss in der Anfrage weggelassen werden -
Die Prioritätseinstellungen gelten nicht (jede Azimut-Elevations-Ephemeride ist spezifisch für eine Bodenstation)
-
Jedes Segment muss mindestens 5 azimuth/elevation Punkte enthalten, um die Lagrange-Interpolation 4. Ordnung zu unterstützen
-
Zusätzliche Beschränkungen und Anforderungen sind in der API-Dokumentation detailliert beschrieben CreateEphemeris
Es ist wichtig zu beachten, dass durch das Hochladen einer Ephemeride die Ephemeride in einen asynchronen Workflow umgewandelt VALIDATING und gestartet wird, der potenzielle Kontakte anhand Ihrer Ephemeride validiert und generiert. Eine Ephemeride wird erst dann für Kontakte verwendet, wenn sie diesen Workflow bestanden hat und ihr Status lautet. ENABLED Sie sollten den Ephemeridenstatus DescribeEphemerisabfragen oder CloudWatch Ereignisse verwenden, um die Statusänderungen der Ephemeriden nachzuverfolgen.
Informationen zur Fehlerbehebung bei einer ungültigen Ephemeride finden Sie unter: Fehlerbehebung bei ungültigen Ephemeriden
Beispiel: Eine Azimut-Elevations-Ephemeride per API erstellen
Das folgende Beispiel zeigt, wie Sie mit dem AWS SDK for Python (Boto3) eine Azimut-Elevations-Ephemeride erstellen:
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 diesem Beispiel:
-
Die Azimut-Höhendaten sind der Bodenstation „Ohio 1" zugeordnet
-
Winkel werden in Grad angegeben
-
Das Segment deckt einen Zeitraum von 15 Minuten ab
-
Die
dtWerte sind Atomsekunden, die von der Referenzepoche abweichen -
Es werden sechs azimuth/elevation Paare bereitgestellt (mindestens 5)
Beispiel: Laden Sie Azimut-Höhendaten von S3 hoch
Für größere Datensätze können Sie Azimut-Höhendaten aus einem S3-Bucket hochladen:
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']}")
Das S3-Objekt sollte eine JSON-Struktur mit den Azimut-Höhendaten im gleichen Format enthalten, wie im direkten Upload-Beispiel gezeigt.
Kontakte mit Azimut-Elevations-Ephemeriden reservieren
Bei der Verwendung einer Azimut-Elevations-Ephemeride zur Reservierung eines Kontakts unterscheidet sich das Verfahren von TLE- und OEM-Ephemeriden:
-
Erstellen Sie die Azimut-Elevations-Ephemeride mit CreateEphemeris
-
Warten Sie, bis die Ephemeride den Status erreicht hat
ENABLED -
Reservieren Sie den Kontakt mithilfe von ReserveContactTracking-Overrides
Beispiel für die Reservierung eines Kontakts mit einer Azimut-Elevations-Ephemeride:
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']}")
Anmerkung
Der satelliteArn Parameter kann weggelassen werden, wenn ein Kontakt mit einer Azimut-Elevations-Ephemeride reserviert wird. Die Antenne folgt während des Kontakts den angegebenen Azimut- und Elevationswinkeln.
Verfügbare Kontakte auflisten
Bei der Verwendung von Azimut-Elevation-Ephemeriden benötigt die ListContactsAPI bestimmte Parameter:
-
Der
satelliteArnParameter kann in der Anfrage weggelassen werden -
Sie müssen einen
ephemerisParameter mit der Azimut-Elevation-Ephemeriden-ID angeben, um anzugeben, welche Ephemeride verwendet werden soll -
Sie müssen immer noch angeben und
groundStationmissionProfileArn
Beispiel für die Erstellung einer Azimut-Elevations-Ephemeride und die damit verbundene Auflistung verfügbarer Kontakte:
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")
Anmerkung
Der ephemeris Parameter mit der Azimut-Elevation-ID muss beim Auflisten von Kontakten angegeben werden, um anzugeben, welche Azimut-Elevation-Ephemeride für die Bestimmung von Kontaktfenstern verwendet werden soll. Wenn das angegeben satelliteArn ist, wird es mit den Kontaktdaten verknüpft, aber die Azimut-Elevations-Ephemeride wird für die Antennenausrichtung verwendet, anstatt die Ephemeriden-Prioritätsauflösung durchzuführen.