Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Berikan data ephemeris elevasi azimuth
penting
Fitur ephemeris elevasi azimuth saat ini dalam keadaan Pratinjau dan memerlukan orientasi eksplisit.
Fungsionalitas ephemeris elevasi Azimuth berada di bawah kontrol akses yang ketat untuk sejumlah kasus penggunaan khusus yang telah ditentukan sebelumnya. Akses secara signifikan lebih ketat daripada kemampuan ephemeris standar yang disediakan pelanggan. Untuk informasi lebih lanjut tentang kasus penggunaan yang disetujui dan proses permintaan akses, silakan buka AWS Dukungan tiket melalui AWS Support Center Console
Gambaran umum
Ephemeris elevasi azimuth menyediakan cara untuk secara langsung menentukan arah penunjuk antena tanpa memberikan informasi orbit satelit. Alih-alih mengunggah data ephemeris yang menggambarkan orbit satelit, Anda memberikan azimuth dan sudut elevasi yang diberi tag waktu yang memberi tahu antena dengan tepat ke mana harus diarahkan selama kontak.
AWS Ground Station memperlakukan ephemerides sebagai Data Penggunaan Individual.
Pendekatan ini sangat berguna untuk skenario berikut:
-
Dukungan operasi awal: Selama Peluncuran dan Fase Orbit Awal (LEOP) ketika data orbital yang tepat tidak tersedia, atau parameter orbital berubah dengan cepat.
-
Pola penunjuk khusus: Menerapkan urutan penunjuk khusus untuk pengujian antena atau operasi non-standar.
catatan
Saat menggunakan ephemeris elevasi azimuth, ARN satelit dapat dihilangkan dari permintaan reservasi kontak. Jika ARN satelit tidak dihilangkan, itu masih akan dimasukkan sebagai bagian dari data kontak, tetapi ephemeris elevasi azimuth akan digunakan untuk penunjuk antena daripada melakukan resolusi prioritas ephemeris. Ephemeris elevasi azimuth dikaitkan dengan stasiun darat tertentu dan menentukan arah penunjuk antena untuk lokasi itu.
Format data ephemeris elevasi azimuth
Data ephemeris elevasi azimuth terdiri dari azimuth yang ditandai waktu dan nilai elevasi yang diatur ke dalam segmen. Setiap segmen berisi serangkaian sudut azimuth dan elevasi yang mencakup rentang waktu tertentu.
Komponen kunci dari data ephemeris elevasi azimuth adalah:
-
Stasiun Darat: Stasiun darat khusus tempat ephemeris elevasi azimuth ini akan digunakan.
-
Unit Sudut: Satuan pengukuran untuk sudut (
DEGREE_ANGLEatauRADIAN). -
Segmen: Satu atau lebih koleksi sudut azimuth dan elevasi yang dibatasi waktu.
-
Time-tagged sudut: Nilai azimuth dan elevasi individu dengan cap waktu terkait.
Setiap segmen membutuhkan:
-
Epoh referensi (waktu dasar untuk segmen)
-
Rentang waktu yang valid (waktu mulai dan akhir untuk segmen)
-
Setidaknya 5 pasangan dengan tag waktu azimuth/elevation
Kendala elevasi azimuth:
-
Azimuth dalam derajat: -180° hingga 360°
-
Azimuth dalam radian: -π hingga 2π
-
Ketinggian dalam derajat: -90° hingga 90°
-
Elevasi dalam radian: -π/2 hingga π/2
-
Nilai waktu harus dalam urutan menaik dalam setiap segmen
-
Segmen tidak boleh tumpang tindih dalam waktu
Untuk informasi selengkapnya, lihat dokumentasi CreateEphemeris API dan tipe TimeAzEl data.
Membuat ephemeris elevasi azimuth
Ephemeris elevasi azimuth dibuat menggunakan tindakan CreateEphemeris API yang sama, tetapi dengan tipe ephemeris. azEl Perbedaan utama dari TLE dan OEM ephemeris adalah:
-
Anda harus menentukan
groundStationparameter -
satelliteIdParameter harus dihilangkan dari permintaan -
Pengaturan prioritas tidak berlaku (setiap ephemeris elevasi azimuth khusus untuk stasiun darat)
-
Setiap segmen harus berisi setidaknya 5 azimuth/elevation poin untuk mendukung interpolasi Lagrange urutan ke-4
-
Batas dan persyaratan tambahan dirinci dalam dokumentasi CreateEphemeris API
Penting untuk dicatat bahwa mengunggah ephemeris mengatur ephemeris ke dan memulai alur kerja asinkron yang akan memvalidasi VALIDATING dan menghasilkan kontak potensial dari ephemeris Anda. Ephemeris hanya akan digunakan untuk kontak setelah melewati alur kerja ini dan statusnya menjadi. ENABLED Anda harus melakukan polling DescribeEphemeris untuk status ephemeris atau menggunakan CloudWatch acara untuk melacak perubahan status ephemeris.
Untuk memecahkan masalah ephemeris yang tidak valid, lihat: Memecahkan masalah ephemerides yang tidak valid
Contoh: Buat ephemeris elevasi azimuth melalui API
Contoh berikut menunjukkan cara membuat ephemeris elevasi azimuth menggunakan AWS SDK untuk 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']}")
Dalam contoh ini:
-
Data elevasi azimuth dikaitkan dengan stasiun darat “Ohio 1"
-
Sudut ditentukan dalam derajat
-
Segmen ini mencakup periode 15 menit
-
Nila
dti-nilainya adalah detik atom yang diimbangi dari zaman referensi -
En azimuth/elevation am pasang disediakan (minimal 5)
Contoh: Unggah data elevasi azimuth dari S3
Untuk kumpulan data yang lebih besar, Anda dapat mengunggah data elevasi azimuth dari bucket 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']}")
Objek S3 harus berisi struktur JSON dengan data elevasi azimuth dalam format yang sama seperti yang ditunjukkan pada contoh unggahan langsung.
Memesan kontak dengan ephemeris elevasi azimuth
Saat menggunakan ephemeris elevasi azimuth untuk memesan kontak, prosesnya berbeda dari TLE dan ephemeris OEM:
-
Buat ephemeris elevasi azimuth menggunakan CreateEphemeris
-
Tunggu sampai ephemeris mencapai status
ENABLED -
Pesan kontak menggunakan ReserveContact dengan penggantian pelacakan
Contoh pemesanan kontak dengan ephemeris elevasi azimuth:
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']}")
catatan
satelliteArnParameter dapat dihilangkan saat memesan kontak dengan ephemeris elevasi azimuth. Antena akan mengikuti azimuth dan sudut elevasi yang ditentukan selama kontak.
Daftar kontak yang tersedia
Saat menggunakan ephemeris elevasi azimuth, ListContacts API memerlukan parameter khusus:
-
satelliteArnParameter dapat dihilangkan dari permintaan -
Anda harus memberikan
ephemerisparameter dengan ID ephemeris elevasi azimuth untuk menentukan ephemeris mana yang akan digunakan -
Jendela kontak yang tersedia menunjukkan kapan azimuth dan sudut elevasi yang disediakan berada di atas topeng lokasi stasiun darat yang diminta
-
Anda harus tetap menyediakan
groundStationdanmissionProfileArn
Contoh membuat ephemeris elevasi azimuth dan mencantumkan kontak yang tersedia dengannya:
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")
catatan
ephemerisParameter dengan ID elevasi azimuth harus diberikan saat mencantumkan kontak untuk menentukan ephemeris elevasi azimuth mana yang harus digunakan untuk menentukan jendela kontak. Jika diser satelliteArn takan, itu akan dikaitkan dengan data kontak, tetapi ephemeris elevasi azimuth akan digunakan untuk penunjuk antena daripada melakukan resolusi prioritas ephemeris.