All State Vectors(全状態ベクトル)OpenSky REST API

1.All State Vectors(全状態ベクトル)とは

All State Vectors(オール ステート ベクターズ、全状態ベクトル)はOpenSky REST APIの1つのエンドポイントです。
全世界又は指定したエリアの航空機データを取得します。

※なぜ「State Vector(ステート ベクター)」と呼ぶのか?
航空用語における「ステート(状態)」とは、ある特定の瞬間における航空機の位置、速度、高度などの物理的なパラメータのセットを指します。
これらが一列のデータ(ベクトル)として並んでいるため、OpenSkyではこれを State Vector と呼んでいます。

2.機能

このエンドポイントは、全世界又は指定したエリアの航空機データをJSON形式で返します。
データは数秒ごとに更新されます。

  • 認証あり: OpenSkyアカウントでログインして利用(より高い頻度でリクエスト可能)。
  • 認証なし: 誰でも利用可能(ただし、リクエスト頻度やデータ鮮度に制限あり)。

※エンドポイント
エンドポイントとは、Web APIにおいてサーバー上の特定データや機能にアクセスするための「入り口となる具体的なURL(URL)」です。

3.オペレーション

GET /states/all

4.リクエスト

特定の飛行機や時刻に対して、以下のリクエストパラメータを使って状態ベクトルを(任意で)リクエストできます。

プロパティタイプ詳細
timeintegerどの時点(時刻)の航空機のステータス情報を取得するかを指定します。時刻表示はUnixタイムスタンプ(秒単位)です。
省略の場合は現在の時刻を使用します。
icao24string1つ以上のICAO24トランスポンダーアドレスを指定します。16進文字列(例:a8ecf5)。
ICAO24トランスポンダーアドレスは各航空機に割り当てられた世界で唯一の識別コードです。
複数アドレスを取得するするには、各アドレスを追加します。
省略の場合は全ての航空機の状態ベクトルが返されます。

さらに、WGS84座標(GPSやGoogleマップ、国際的な地図・ナビゲーションで標準的に使用される地心座標系)のバウンディングボックス(境界ボックス、四角形の境界で定義された特定の領域)に限定したデータを取得することも可能です。

プロパティタイプ詳細
laminfloat緯度の下限(小数点数)です。
lominfloat経度の下限(小数点数)です。
lamaxfloat緯度の上限(小数点数)です。
lomaxfloat経度の上限(小数点数)です。

最後に、航空機のカテゴリー情報をリクエストできます。
カテゴリーは、大型機、小型機、ヘリコプターなどです。
このパラメーターは、デフォルト(指定しない場合)では false の状態になっています。

プロパティタイプ詳細
extendedinteger必要に応じて1に設定してください。

5.レスポンス

応答は以下のプロパティを持つJSONオブジェクトです。

プロパティタイプ詳細
timeintegerそのデータセット(全機体のリスト)がサーバー側で生成された時刻を表します。
Unixタイムスタンプ(秒単位)。
statesarray状態ベクトル(航空機の状態情報)。

状態ベクトルは二次元配列です。各行は状態ベクトルを表します。詳細は以下の通りです。

インデックスプロパティタイプ説明
0icao24string航空機のトランスポンダーの一意な24ビットアドレス。16進数の文字列で表現されます。
1callsignstring航空機のコールサイン(最大8文字)。受信されていない場合はnullになることがあります。
2origin_countrystringICAO 24ビットアドレスから推測された航空機の登録国。
3time_positionint最新の位置情報が更新されたUnixタイムスタンプ(秒)。過去15秒以内に位置情報を受信しなかった場合はnullになることがあります。
4last_contactintトランスポンダーから有効なメッセージを最後に受信した時点のUnixタイムスタンプ(秒)。
5longitudefloatWGS-84座標系における経度(10進数)。nullになることがあります。
6latitudefloatWGS-84座標系における緯度(10進数)。nullになることがあります。
7baro_altitudefloat気圧から算出された高度(メートル)。nullになることがあります。
8on_groundboolean地上での位置情報レポートから取得されたかどうかを示すブール値。
9velocityfloat対地速度(メートル/秒)。nullになることがあります。
10true_trackfloat真北を0°として時計回りの真方位(10進数)。nullになることがあります。
11vertical_ratefloat垂直方向の速度(メートル/秒)。上昇が正、下降が負。nullになることがあります。
12sensorsint [ ]このステートベクトルに貢献した受信機のIDの配列。リクエストで受信機のフィルタリングが使用されていない場合はnullになります。
13geo_altitudefloatGPSなどから得られる幾何学的な高度(メートル)。nullになることがあります。
14squawkstringスコーク。航空管制で使われるトランスポンダーコード。nullになることがあります。
15spibooleanフライトステータスが特殊目的を示すかどうか。
16position_sourceintこの位置情報の元となるデータソース。
0 = ADS-B
1 = ASTERIX
2 = MLAT
3 = FLARM
17categoryint航空機のカテゴリーを示す整数値。< 15500 lbs(軽量機)から> 300000 lbs(重量機)、Rotorcraft(回転翼機)など、様々な種類があります。
0 = No information at all
1 = No ADS-B Emitter Category Information
2 = Light (< 15500 lbs)
3 = Small (15500 to 75000 lbs)
4 = Large (75000 to 300000 lbs)
5 = High Vortex Large (aircraft such as B-757)
6 = Heavy (> 300000 lbs)
7 = High Performance (> 5g acceleration and 400 kts)
8 = Rotorcraft
9 = Glider / sailplane
10 = Lighter-than-air
11 = Parachutist / Skydiver
12 = Ultralight / hang-glider / paraglider
13 = Reserved
14 = Unmanned Aerial Vehicle
15 = Space / Trans-atmospheric vehicle
16 = Surface Vehicle – Emergency Vehicle
17 = Surface Vehicle – Service Vehicle
18 = Point Obstacle (includes tethered balloons)
19 = Cluster Obstacle
20 = Line Obstacle

6.プログラム例(Python)

Pythonによるプログラム例を示します。
特定のエリア(東京近郊)の航空機データを取得するプログラム例です。

import requests

# 東京近郊の範囲を指定
params = {
    'lamin': 34.0,
    'lomin': 138.5,
    'lamax': 36.0,
    'lomax': 140.5
}

url = "https://opensky-network.org/api/states/all"
response = requests.get(url, params=params)

if response.status_code == 200:
    data = response.json()
    for flight in data['states']:
        print(f"コールサイン: {flight[1]}, 登録国: {flight[2]}, 高度: {flight[7]}m, スコーク: {flight[14]}")

出力例

コールサイン: ANA412 , 登録国: Japan, 高度: 5341.62m, スコーク: 2430
コールサイン: JAL183 , 登録国: Japan, 高度: 6096m, スコーク: 0437
コールサイン: QFA26 , 登録国: Australia, 高度: 3307.08m, スコーク: 3107
コールサイン: VJC932 , 登録国: Viet Nam, 高度: Nonem, スコーク: 4406
コールサイン: JAL903 , 登録国: Japan, 高度: 1242.06m, スコーク: 2305

引用:The OpenSky Network API documentation
https://openskynetwork.github.io/opensky-api/rest.html#all-state-vectors