Save up to 17% with yearly billing

See pricing

Радионавигационные средства

Поиск по инфраструктуре радионавигации — VOR (всенаправленный азимутальный радиомаяк ОВЧ-диапазона, основное радионавигационное средство на маршруте), NDB (ненаправленный радиомаяк), ILS (система посадки по приборам), DME (дальномерное оборудование), TACAN (тактическая аэронавигационная система) и комбинированные объекты, такие как VORTAC (совмещённые VOR и TACAN). Используйте этот эндпоинт для наложения маршрутов, панелей с контекстом захода на посадку или слоёв карты, где нужны радионавигационные средства сверх того набора, который встроен в Аэропорты.

Требуется хотя бы один фильтр (ident, airport, type, country или bbox). Глобальная выгрузка без фильтров заблокирована.

Запрос

Требования

Авторизация
x-api-key в каждом запросе (прямая подписка). Подробнее →
GEThttps://data.skylinkapi.com/v3.1/navaids
ПараметрТипОбязательныйПо умолчаниюОписание
identstringНужен хотя бы один фильтр-Идентификатор радионавигационного средства, например JFK
airportstringНужен хотя бы один фильтр-Код аэропорта ICAO для связанных радионавигационных средств
typestringНужен хотя бы один фильтр-Тип радионавигационного средства, например VOR, NDB, VORTAC, ILS, DME
countrystringНужен хотя бы один фильтр-Код страны ISO 3166-1 alpha-2
bboxstringНужен хотя бы один фильтр-Ограничивающий прямоугольник (bounding box): lat1,lon1,lat2,lon2 — сначала юго-западный угол, затем северо-восточный. Пример: 40,-74,41,-73
limitintegerНет100Максимальное число возвращаемых записей (не более 500)

Комбинируйте фильтры (например, country=US&type=[VOR](https://en.wikipedia.org/wiki/VHF_omnidirectional_range)), чтобы сузить большие наборы результатов.

Ответ

{
  "navaids": [
    {
      "id": 89475,
      "ident": "JFK",
      "name": "Kennedy",
      "type": "VOR-DME",
      "frequency_khz": 115900.0,
      "latitude_deg": 40.63290023803711,
      "longitude_deg": -73.77140045166016,
      "elevation_ft": 11.0,
      "iso_country": "US",
      "dme_frequency_khz": 115900.0,
      "dme_channel": "106X",
      "slaved_variation_deg": -12.001,
      "magnetic_variation_deg": -13.182,
      "usageType": "BOTH",
      "power": "HIGH",
      "associated_airport": "KJFK"
    }
  ],
  "total": 1,
  "filters_applied": {
    "ident": "JFK"
  }
}

Поля верхнего уровня

ПолеТипОбязательныйОписание
navaidsarrayДаНайденные записи радионавигационных средств (может быть [])
totalintegerДаКоличество возвращённых записей
filters_appliedobjectДаПовтор принятых фильтров
ПолеТипОбязательныйМожет быть null?Описание
idintegerДаНикогдаЧисловой идентификатор записи
identstringДаНикогдаИдентификатор радионавигационного средства
namestringДаНикогдаНазвание радионавигационного средства
typestringДаНикогдаТип объекта (VOR-DME, NDB и т. д.)
frequency_khznumber | nullНетДаОсновная частота в кГц
latitude_degnumberДаНикогдаШирота WGS-84
longitude_degnumberДаНикогдаДолгота WGS-84
elevation_ftnumber | nullНетДаПревышение в футах над MSL
iso_countrystring | nullНетДаКод страны
dme_frequency_khznumber | nullНетДаЧастота DME, если применимо
dme_channelstring | nullНетДаКанал DME, например 106X
slaved_variation_degnumber | nullНетДаМагнитное склонение, на которое выставлен радиомаяк (slaved variation)
magnetic_variation_degnumber | nullНетДаМестное магнитное склонение (угол между истинным и магнитным севером в точке установки радионавигационного средства)
usageTypestring | nullНетДаКласс использования (например, BOTH)
powerstring | nullНетДаКласс мощности передатчика
associated_airportstring | nullНетДаКод аэропорта ICAO, если средство привязано к аэропорту
Необязательные поля авионики (допустимость null)Развернуть раздел

dme_frequency_khz, dme_channel, slaved_variation_deg и magnetic_variation_deg в зависимости от типа объекта часто равны null. associated_airport может быть null для радионавигационных средств на маршруте. Рассматривайте type радионавигационного средства как открытую строку — не прерывайте обработку с ошибкой при неизвестных значениях.

Клиентские типы

"""Navaid search response models for GET /navaids."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass NavaidsSearchRequest:    ident: str | None = None    airport: str | None = None    type: str | None = None    country: str | None = None    bbox: str | None = None    limit: int | None = None@dataclassclass NavaidRecord:    id: int    ident: str    name: str    type: str    frequency_khz: float | None    latitude_deg: float    longitude_deg: float    elevation_ft: float | None    iso_country: str | None    dme_frequency_khz: float | None    dme_channel: str | None    slaved_variation_deg: float | None    magnetic_variation_deg: float | None    usageType: str | None    power: str | None    associated_airport: str | None@dataclassclass NavaidsResponse:    navaids: list[NavaidRecord]    total: int    filters_applied: dict[str, str]

Интеграция

Получите радионавигационные средства в районе аэропорта и верните готовые для карты объекты для наложения маршрутов.

Пример ниже кэширует результаты запросов на 6 часов и использует явные таймауты, чтобы отрисовка карты не зависала из-за медленного ответа.

import osimport timefrom dataclasses import dataclassimport requestsHEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}BASE = "https://data.skylinkapi.com/v3.1"CACHE: dict[str, tuple[dict, float]] = {}NAVAID_TTL = 21_600  # 6 h@dataclassclass NavaidPoint:    ident: str    name: str    navaid_type: str    latitude: float    longitude: float    frequency_khz: float | None    associated_airport: str | Nonedef fetch_navaids(*, airport: str) -> list[dict]:    airport = airport.upper()    key = f"navaids:airport:{airport}"    cached = CACHE.get(key)    if cached and time.time() < cached[1]:        return cached[0]["navaids"]    try:        r = requests.get(            f"{BASE}/navaids",            headers=HEADERS,            params={"airport": airport},            timeout=(10, 15),        )    except requests.Timeout as exc:        raise RuntimeError(f"SkyLink timeout fetching navaids for {airport}") from exc    r.raise_for_status()    data = r.json()    CACHE[key] = (data, time.time() + NAVAID_TTL)    return data.get("navaids", [])def navaid_points_for_map(airport: str) -> list[NavaidPoint]:    return [        NavaidPoint(            ident=item["ident"],            name=item["name"],            navaid_type=item["type"],            latitude=item["latitude_deg"],            longitude=item["longitude_deg"],            frequency_khz=item.get("frequency_khz"),            associated_airport=item.get("associated_airport"),        )        for item in fetch_navaids(airport=airport)    ]if __name__ == "__main__":    import json    from dataclasses import asdict    points = navaid_points_for_map("KJFK")    print(json.dumps([asdict(p) for p in points[:8]], indent=2))

Примечания по реализации

Фильтруйте как можно раньше. Комбинируйте фильтры country, type или airport, чтобы уменьшить объём ответа и не перегружать карту.

Формат BBox. Используйте lat1,lon1,lat2,lon2 (юго-запад → северо-восток), как в Ветер на высотах, PIREP и AIRMET/SIGMET, — а не minLon,minLat,maxLon,maxLat.

Радионавигационные средства аэропорта. Аэропорты встраивают для каждого аэродрома лишь часть средств. Используйте этот эндпоинт для запросов по bbox, фильтров по типу и стране или наложений, выходящих за рамки запроса по одному аэропорту.

Ответы с ошибками

Общие ошибки: Обработка ошибок. Ошибки, специфичные для эндпоинта:

400 - не передано ни одного фильтра

{
  "detail": "At least one filter is required: ident, airport, type, country, or bbox. Returning the full navaid dataset unfiltered is not supported."
}

400 - недопустимый bbox

{
  "detail": "Invalid bbox: could not convert string to float: 'bad'"
}
GET
/navaids
x-api-key<token>

Your SkyLink licence key, for keys bought direct from skylinkapi.com.

In: header

Query Parameters

ident?|

Navaid identifier — partial, case-insensitive (e.g. JFK, VOR)

airport?|

Associated airport ICAO code — exact match (e.g. KJFK)

type?|

Navaid type — exact, case-insensitive (e.g. VOR, NDB, ILS, DME, TACAN)

country?|

ISO country code — exact match (e.g. US, GB)

bbox?|

Bounding box as lat1,lon1,lat2,lon2 (SW corner to NE corner)

limit?Limit

Maximum number of results to return (default 100, max 500)

Default100
Range1 <= value <= 500

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/navaids"
{
  "navaids": [
    {
      "id": 0,
      "ident": "string",
      "name": "string",
      "type": "string",
      "frequency_khz": 0,
      "latitude_deg": 0,
      "longitude_deg": 0,
      "elevation_ft": 0,
      "iso_country": "string",
      "dme_frequency_khz": 0,
      "dme_channel": "string",
      "slaved_variation_deg": 0,
      "magnetic_variation_deg": 0,
      "usageType": "string",
      "power": "string",
      "associated_airport": "string"
    }
  ],
  "total": 0,
  "filters_applied": {}
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Руководства по интеграции

РуководствоОхватывает
АэропортыПоиск, частоты, сравнение ВПП
Поиск аэропортовАвтодополнение и поиск ближайших по GPS
Радионавигационные средстваНаложение на карту и фильтр ILS
Обработка ошибок404, пустой поиск, валидация
Кэширование и мониторингTTL и логирование квоты

См. также: Аэропорты · Поиск аэропортов · Аэронавигационные карты