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.リクエスト
特定の飛行機や時刻に対して、以下のリクエストパラメータを使って状態ベクトルを(任意で)リクエストできます。
| プロパティ | タイプ | 詳細 |
|---|---|---|
| time | integer | どの時点(時刻)の航空機のステータス情報を取得するかを指定します。時刻表示はUnixタイムスタンプ(秒単位)です。 省略の場合は現在の時刻を使用します。 |
| icao24 | string | 1つ以上のICAO24トランスポンダーアドレスを指定します。16進文字列(例:a8ecf5)。 ICAO24トランスポンダーアドレスは各航空機に割り当てられた世界で唯一の識別コードです。 複数アドレスを取得するするには、各アドレスを追加します。 省略の場合は全ての航空機の状態ベクトルが返されます。 |
さらに、WGS84座標(GPSやGoogleマップ、国際的な地図・ナビゲーションで標準的に使用される地心座標系)のバウンディングボックス(境界ボックス、四角形の境界で定義された特定の領域)に限定したデータを取得することも可能です。
| プロパティ | タイプ | 詳細 |
|---|---|---|
| lamin | float | 緯度の下限(小数点数)です。 |
| lomin | float | 経度の下限(小数点数)です。 |
| lamax | float | 緯度の上限(小数点数)です。 |
| lomax | float | 経度の上限(小数点数)です。 |
最後に、航空機のカテゴリー情報をリクエストできます。
カテゴリーは、大型機、小型機、ヘリコプターなどです。
このパラメーターは、デフォルト(指定しない場合)では false の状態になっています。
| プロパティ | タイプ | 詳細 |
|---|---|---|
| extended | integer | 必要に応じて1に設定してください。 |
5.レスポンス
応答は以下のプロパティを持つJSONオブジェクトです。
| プロパティ | タイプ | 詳細 |
|---|---|---|
| time | integer | そのデータセット(全機体のリスト)がサーバー側で生成された時刻を表します。 Unixタイムスタンプ(秒単位)。 |
| states | array | 状態ベクトル(航空機の状態情報)。 |
状態ベクトルは二次元配列です。各行は状態ベクトルを表します。詳細は以下の通りです。
| インデックス | プロパティ | タイプ | 説明 |
|---|---|---|---|
| 0 | icao24 | string | 航空機のトランスポンダーの一意な24ビットアドレス。16進数の文字列で表現されます。 |
| 1 | callsign | string | 航空機のコールサイン(最大8文字)。受信されていない場合はnullになることがあります。 |
| 2 | origin_country | string | ICAO 24ビットアドレスから推測された航空機の登録国。 |
| 3 | time_position | int | 最新の位置情報が更新されたUnixタイムスタンプ(秒)。過去15秒以内に位置情報を受信しなかった場合はnullになることがあります。 |
| 4 | last_contact | int | トランスポンダーから有効なメッセージを最後に受信した時点のUnixタイムスタンプ(秒)。 |
| 5 | longitude | float | WGS-84座標系における経度(10進数)。nullになることがあります。 |
| 6 | latitude | float | WGS-84座標系における緯度(10進数)。nullになることがあります。 |
| 7 | baro_altitude | float | 気圧から算出された高度(メートル)。nullになることがあります。 |
| 8 | on_ground | boolean | 地上での位置情報レポートから取得されたかどうかを示すブール値。 |
| 9 | velocity | float | 対地速度(メートル/秒)。nullになることがあります。 |
| 10 | true_track | float | 真北を0°として時計回りの真方位(10進数)。nullになることがあります。 |
| 11 | vertical_rate | float | 垂直方向の速度(メートル/秒)。上昇が正、下降が負。nullになることがあります。 |
| 12 | sensors | int [ ] | このステートベクトルに貢献した受信機のIDの配列。リクエストで受信機のフィルタリングが使用されていない場合はnullになります。 |
| 13 | geo_altitude | float | GPSなどから得られる幾何学的な高度(メートル)。nullになることがあります。 |
| 14 | squawk | string | スコーク。航空管制で使われるトランスポンダーコード。nullになることがあります。 |
| 15 | spi | boolean | フライトステータスが特殊目的を示すかどうか。 |
| 16 | position_source | int | この位置情報の元となるデータソース。 0 = ADS-B 1 = ASTERIX 2 = MLAT 3 = FLARM |
| 17 | category | int | 航空機のカテゴリーを示す整数値。< 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