1.Flights by Aircraft(航空機毎のフライト履歴情報)とは
Flights by Aircraft(航空機毎のフライト履歴情報)はOpenSky REST APIの1つのエンドポイントです。
特定の航空機のフライト履歴情報を取得します。
2.機能
このエンドポイントは、特定の航空機の特定の時間範囲内のフライト履歴情報をJSON形式で返します。
3.オペレーション
GET /flights/aircraft
4.リクエスト
以下が要求パラメータです。
| プロパティ | タイプ | 詳細 |
|---|---|---|
| icao24 | string | 機体固有の24ビットICAOアドレス(小文字)。 |
| begin | integer | フライト情報取得のための開始時刻(検索開始時刻)。Unix時間。 |
| end | integer | フライト情報取得のための終了時刻(検索終了時刻)。Unix時間。 |
検索期間は2日を超えてはいけません。
5.レスポンス
応答は以下のプロパティを持つJSONオブジェクトです。
一般的なAPIのように「配列の0番目がICAO24、1番目が…」といったインデックス形式(CSV的な構造)ではなく、キーと値がペアになったオブジェクト形式です。
| プロパティ | タイプ | 詳細 |
|---|---|---|
| icao24 | string | 機体固有の24ビットICAOアドレス(小文字)。 |
| firstSeen | integer | 最初に観測された時刻(Unix Timestamp)。通常は離陸時刻に相当。 |
| estDepartureAirport | string | 出発空港のICAOコード。特定できない場合は null。 |
| lastSeen | integer | 最後に観測された時刻(Unix Timestamp)。通常は着陸時刻に相当。 |
| estArrivalAirport | string | 到着空港のICAOコード。特定できない場合は null。 |
| callsign | string | コールサイン(8文字以内)。 |
| estDepartureAirportHorizDistance | integer | 出発空港からの水平距離(メートル)。 |
| estDepartureAirportVertDistance | integer | 出発空港からの垂直距離(メートル)。 |
| estArrivalAirportHorizDistance | integer | 到着空港からの水平距離(メートル)。 |
| estArrivalAirportVertDistance | integer | 到着空港からの垂直距離(メートル)。 |
| departureAirportCandidatesCount | integer | 出発空港の候補数。 |
| arrivalAirportCandidatesCount | integer | 到着空港の候補数。 |
6.プログラム例(Python)
Pythonによるプログラム例を示します。
日本航空の特定の航空機(ICAOアドレス:850E36)について、現在時刻から遡って25時間前から1時間前までのフライト履歴情報を取得するプログラム例です。
import requests
import time
from datetime import datetime
# 1. 航空機を設定、取得範囲の時間を設定(UNIXタイムスタンプ)
# 特定の航空機のICAOアドレスを指定
icao24 = "850e36" #日本航空 Boeing 737-846
# 現在時刻から遡って指定(例: 25時間前から1時間前まで)
now = int(time.time())
end_time = now - 3600 # 1時間前
begin_time = end_time - 86400 # さらにその24時間前(24時間の間隔)
# 2. APIエンドポイントとパラメータ
url = "https://opensky-network.org/api/flights/aircraft"
params = {
'icao24': icao24,
'begin': begin_time,
'end': end_time
}
# 3. データ取得
begin_str = datetime.fromtimestamp(begin_time).strftime('%H:%M:%S')
end_str = datetime.fromtimestamp(end_time).strftime('%H:%M:%S')
print(f"データ取得中... ({begin_str} から {end_str})")
response = requests.get(url, params=params)
flights = response.json()
# 4. 結果の表示(最初の10件)
print(f"{'ICAO24':<10} | {'便名':<10} | {'出発空港':<10} | {'到着空港':<10}")
print("-" * 50)
for f in flights[:10]:
icao24 = f.get('icao24', 'N/A')
callsign = (f.get('callsign') or 'N/A').strip()
est_dep = f.get('estDepartureAirport') or 'Unknown'
est_arr = f.get('estArrivalAirport') or 'Unknown'
print(f"{icao24:<10} | {callsign:<10} | {est_dep:<10} | {est_arr:<10}")
出力例
引用:The OpenSky Network API documentation
https://openskynetwork.github.io/opensky-api/rest.html#flights-by-aircraft