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 Daten zur Azimut-Höhen-Ephemeride an
Wichtig
Die Funktion „Azimuthöhen-Ephemeride“ befindet sich derzeit im Status „Vorschau“ und erfordert ein ausdrückliches Onboarding.
Die Funktion „Azimuth Elevation Ephemeride“ 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. Für weitere Informationen zu genehmigten Anwendungsfällen und zum Verfahren zur Zugriffsanfrage öffnen Sie bitte ein AWS Support Ticket über das. AWS Support Center Console
-Übersicht
Die Azimuthöhen-Ephemeride bietet eine Möglichkeit, die Ausrichtung der Antenne direkt festzulegen, ohne Informationen zur Satellitenbahn bereitzustellen. Anstatt Ephemeridendaten hochzuladen, die die Umlaufbahn eines Satelliten beschreiben, geben Sie Azimut- und Elevationswinkel mit Zeitangaben an, die der Antenne während eines Kontakts genau mitteilen, wohin sie zeigen soll.
AWS Ground Station behandelt Ephemeriden als individualisierte Nutzungsdaten. https://aws.amazon.com/service-terms
Dieser Ansatz ist besonders für die folgenden Szenarien nützlich:
-
Unterstützung im frühen Betrieb: Während der Start- und frühen Orbitphase (LEOP), wenn keine genauen Orbitaldaten verfügbar sind oder sich die Bahnparameter schnell ändern.
-
Benutzerdefinierte Ausrichtungsmuster: Implementierung spezifischer Ausrichtungssequenzen für Antennentests oder für den Betrieb, der nicht dem Standard entspricht.
Anmerkung
Bei Verwendung der Azimut-Elevations-Ephemeride kann das 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 Azimut-Ephemeride ist einer bestimmten Bodenstation zugeordnet und definiert die Antennenausrichtung für diesen Standort.
Datenformat für Ephemeriden mit Azimuthöhe
Daten zur Azimuthöhen-Ephemeride bestehen aus Azimut- und Höhenwerten mit Zeitangaben, die in Segmenten organisiert sind. Jedes Segment enthält eine Reihe von Azimut- und Höhenwinkeln, die einen bestimmten Zeitraum abdecken.
Die wichtigsten Komponenten der Daten zur Azimuthöhen-Ephemeride sind:
-
Bodenstation: Die spezifische Bodenstation, an der diese Ephemeride für die Azimuthöhe verwendet wird.
-
Winkeleinheit: Die Maßeinheit für Winkel (oder).
DEGREE_ANGLERADIAN -
Segmente: Eine oder mehrere zeitlich begrenzte Sammlungen von Azimut- und Höhenwinkeln.
-
Time-tagged Winkel: Einzelne Azimut- und Höhenwerte mit zugehörigen Zeitstempeln.
Jedes Segment benötigt:
-
Eine Referenzepoche (die Basiszeit für das Segment)
-
Ein gültiger Zeitbereich (Start- und Endzeiten für das Segment)
-
Mindestens 5 Paare mit Zeitmarkierung azimuth/elevation
Beschränkungen der Azimuthöhe:
-
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
-
Zeitwerte müssen in jedem Segment in aufsteigender Reihenfolge angegeben werden
-
Segmente dürfen sich zeitlich nicht überlappen
Weitere Informationen finden Sie in der CreateEphemeris API-Dokumentation und zum TimeAzEl Datentyp.
Erstellung einer Azimut-Höhen-Ephemeride
Die Azimuthöhen-Ephemeride wird mit derselben CreateEphemeris API-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 -
Prioritätseinstellungen gelten nicht (jede Azimuthöhen-Ephemeride ist für eine Bodenstation spezifisch)
-
Jedes Segment muss mindestens 5 azimuth/elevation Punkte enthalten, um die Lagrange-Interpolation 4. Ordnung zu unterstützen
-
Zusätzliche Grenzwerte und Anforderungen sind in der API-Dokumentation detailliert beschrieben CreateEphemeris
Es ist wichtig zu beachten, dass beim Hochladen einer Ephemeride die Ephemeride auf einen asynchronen Workflow umgestellt VALIDATING und gestartet wird, der potenzielle Kontakte aus 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 Status der Ephemeride DescribeEphemeris abfragen oder CloudWatch Ereignisse verwenden, um die Statusänderungen der Ephemeride zu verfolgen.
Informationen zur Behebung einer ungültigen Ephemeride finden Sie unter: Fehlerbehebung bei ungültigen Ephemeriden
Beispiel: Erstellen Sie eine Azimut-Höhen-Ephemeride über die API
Das folgende Beispiel zeigt, wie mit dem SDK für Python (Boto3) eine Azimut-Höhen-Ephemeride erstellt wird: 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']}")
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
-
Bei den
dtWerten handelt es sich um atomare Sekunden, die von der Referenzepoche abweichen -
Es werden sechs azimuth/elevation Paare bereitgestellt (mindestens 5)
Beispiel: Laden Sie Azimut-Höhendaten aus 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 wie im Beispiel für den direkten Upload enthalten.
Kontakte mit Azimuthöhen-Ephemeriden reservieren
Beim Reservieren eines Kontakts mithilfe einer Azimuthöhen-Ephemeride unterscheidet sich das Verfahren von TLE- und OEM-Ephemeriden:
-
Erstellen Sie die Azimut-Höhen-Ephemeride mit CreateEphemeris
-
Warte, bis die Ephemeride ihren Status erreicht hat
ENABLED -
Reservieren Sie den Kontakt ReserveContact mit Tracking-Overrides
Beispiel für das Reservieren eines Kontakts mit 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 Ephemeride mit Azimuthöhe reserviert wird. Die Antenne folgt während des Kontakts den angegebenen Azimut- und Elevationswinkeln.
Liste der verfügbaren Kontakte
Bei der Verwendung von Azimut-Elevations-Ephemeriden benötigt die ListContacts API bestimmte Parameter:
-
Der
satelliteArnParameter kann in der Anfrage weggelassen werden -
Sie müssen einen
ephemerisParameter mit der Ephemeriden-ID für die Azimuthöhe angeben, um anzugeben, welche Ephemeride verwendet werden soll -
Verfügbare Kontaktfenster zeigen an, wann der angegebene Azimut- und Höhenwinkel über der Standortmaske der angeforderten Bodenstation liegt https://docs.aws.amazon.com/ground-station/latest/ug/locations.site-masks.html
-
Sie müssen immer noch Folgendes angeben
groundStationmissionProfileArn
Beispiel für die Erstellung einer Azimut-Höhen-Ephemeride und die damit verbundenen Auflisten 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 Azimuthöhen-ID muss beim Auflisten von Kontakten angegeben werden, um festzulegen, welche Azimuthöhen-Ephemeride zur Bestimmung von Kontaktfenstern verwendet werden soll. Wenn der angegeben satelliteArn ist, wird er mit den Kontaktdaten verknüpft. Die Ephemeride für die Azimuthöhe wird jedoch für die Antennenausrichtung verwendet und nicht für die Ephemeriden-Prioritätsauflösung.