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 azimuth elevation ephemeris saat ini dalam status 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, hubungi <aws-groundstation@amazon.com>.
Gambaran umum
Ephemeris elevasi Azimuth menyediakan cara untuk secara langsung menentukan arah penunjuk antena tanpa memberikan informasi orbital 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 menunjuk ke seluruh 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 azimuth elevation ephemeris, 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 bumi tertentu dan mendefinisikan arah penunjuk antena untuk lokasi itu.
Format data ephemeris elevasi Azimuth
Data ephemeris elevasi Azimuth terdiri dari azimuth dan nilai elevasi yang ditandai dengan waktu 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:
-
Ground Station: Stasiun bumi khusus tempat ephemeris elevasi azimuth ini akan digunakan.
-
Satuan Sudut: Satuan pengukuran untuk sudut (
DEGREE_ANGLEatauRADIAN). -
Segmen: Satu atau lebih koleksi sudut azimuth dan elevasi yang dibatasi waktu.
-
Sudut dengan tag waktu: Nilai azimuth dan elevasi individu dengan stempel waktu terkait.
Setiap segmen membutuhkan:
-
Epoch referensi (waktu dasar untuk segmen)
-
Rentang waktu yang valid (waktu mulai dan berakhir untuk segmen)
-
Setidaknya 5 pasangan yang diberi tag waktu azimuth/elevation
Kendala elevasi Azimuth:
-
Azimuth dalam derajat: -180° hingga 360°
-
Azimuth dalam radian: -π ke 2π
-
Ketinggian dalam derajat: -90° hingga 90°
-
Ketinggian dalam radian: -π/2 ke π/2
-
Nilai waktu harus dalam urutan menaik dalam setiap segmen
-
Segmen tidak boleh tumpang tindih dalam waktu
Untuk informasi selengkapnya, lihat dokumentasi CreateEphemerisAPI dan tipe TimeAzEldata.
Membuat ephemeris elevasi azimuth
Ephemeris elevasi Azimuth dibuat menggunakan aksi CreateEphemerisAPI 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 bumi)
-
Setiap segmen harus berisi setidaknya 5 azimuth/elevation poin untuk mendukung interpolasi Lagrange orde ke-4
-
Batas dan persyaratan tambahan dirinci dalam dokumentasi CreateEphemerisAPI
Penting untuk dicatat bahwa mengunggah ephemeris menyetel ephemeris VALIDATING dan memulai alur kerja asinkron yang akan memvalidasi 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 DescribeEphemerisuntuk status ephemeris atau menggunakan CloudWatch peristiwa 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 SDK for AWS 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 bumi “Ohio 1"
-
Sudut ditentukan dalam derajat
-
Segmen ini mencakup periode 15 menit
-
dtNilainya adalah detik atom yang diimbangi dari zaman referensi -
Enam azimuth/elevation 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 upload langsung.
Memesan kontak dengan ephemeris elevasi azimuth
Saat menggunakan ephemeris elevasi azimuth untuk memesan kontak, prosesnya berbeda dari ephemeris TLE dan OEM:
-
Buat ephemeris elevasi azimuth menggunakan CreateEphemeris
-
Tunggu ephemeris mencapai status
ENABLED -
Pesan kontak menggunakan ReserveContactdengan 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, API memerlukan parameter khusus: ListContacts
-
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 ditampilkan ketika sudut azimuth dan elevasi yang disediakan berada di atas topeng situs stasiun bumi 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 disediakan saat mencantumkan kontak untuk menentukan ephemeris elevasi azimuth mana yang harus digunakan untuk menentukan jendela kontak. Jika disertakan, itu akan dikaitkan dengan data kontak, tetapi ephemeris elevasi azimuth akan digunakan untuk penunjuk antena daripada melakukan resolusi prioritas ephemeris. satelliteArn