Расстояние и азимут
Рассчитывайте расстояние по ортодромии (кратчайший путь между двумя точками на сфере, а не прямая линия на плоской карте), начальный азимут (направление от точки отправления к точке назначения в градусах относительно истинного меридиана), направление по восьми румбам и географическую среднюю точку между двумя точками. Каждая из сторон может быть кодом аэропорта или координатами WGS-84 — поддерживается и смешанный режим.
Подходит для карточек предпросмотра маршрута, калькуляторов топлива и наложения колец дальности без собственной реализации формулы гаверсинусов.
Запрос
Требования
x-api-key в каждом запросе (прямая подписка). Подробнее →https://data.skylinkapi.com/v3.1/distance| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
from_icao | string | Условно | - | Код ICAO или IATA аэропорта отправления |
to_icao | string | Условно | - | Код ICAO или IATA аэропорта назначения |
from_lat | number | Условно | - | Широта точки отправления (от -90 до 90) |
from_lon | number | Условно | - | Долгота точки отправления (от -180 до 180) |
to_lat | number | Условно | - | Широта точки назначения (от -90 до 90) |
to_lon | number | Условно | - | Долгота точки назначения (от -180 до 180) |
unit | string | Нет | nm | Предпочтительная единица отображения (nm, km, mi) |
Задайте каждую сторону либо парой кодов, либо парой координат:
| Режим | Пример |
|---|---|
| Аэропорт → аэропорт | from_icao=KJFK&to_icao=EGLL |
| Координаты → аэропорт | from_lat=40.6413&from_lon=-73.7781&to_icao=EGLL |
| Координаты → координаты | from_lat=40.64&from_lon=-73.78&to_lat=51.47&to_lon=-0.46 |
Ответ
{
"from": "KJFK",
"to": "EGLL",
"distance_nm": 2991.61,
"distance_km": 5539.91,
"distance_mi": 3442.19,
"bearing_deg": 51.35,
"cardinal": "NE",
"midpoint_lat": 52.216,
"midpoint_lon": -41.306
}| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
from | string | Да | Распознанный идентификатор точки отправления |
to | string | Да | Распознанный идентификатор точки назначения |
distance_nm | number | Да | Расстояние в морских милях (1 NM ≈ 1.852 km — стандартная авиационная единица) |
distance_km | number | Да | Расстояние в километрах |
distance_mi | number | Да | Расстояние в сухопутных (уставных) милях |
bearing_deg | number | Да | Начальный истинный азимут (0–360) |
cardinal | string | Да | Направление по восьми румбам (N, NE, E, …), вычисленное по азимуту |
midpoint_lat | number | Да | Широта географической средней точки |
midpoint_lon | number | Да | Долгота географической средней точки |
Все три единицы расстояния возвращаются всегда, независимо от параметра unit. Используйте unit только как предпочтение для отображения.
Клиентские типы
"""Distance endpoint response models for /distance."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass DistanceRequest: from_icao: str | None = None to_icao: str | None = None from_lat: float | None = None from_lon: float | None = None to_lat: float | None = None to_lon: float | None = None unit: str | None = None@dataclassclass DistanceResponse: from_: str to: str distance_nm: float distance_km: float distance_mi: float bearing_deg: float cardinal: str midpoint_lat: float midpoint_lon: floatИнтеграция
Рассчитайте геометрию маршрута для карточки предпросмотра с явной обработкой тайм-аутов.
import osimport requestsBASE = "https://data.skylinkapi.com/v3.1"HEADERS = { "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}def fetch_distance(from_icao: str, to_icao: str) -> dict: """Fetch great-circle distance and initial bearing between two airports.""" r = requests.get( f"{BASE}/distance", headers=HEADERS, params={"from_icao": from_icao, "to_icao": to_icao}, timeout=(10, 15), ) r.raise_for_status() return r.json()if __name__ == "__main__": import json data = fetch_distance("KJFK", "KLAX") print(json.dumps(data, indent=2, default=str))Примечания по реализации
Валидация входных данных. Проверяйте границы широты и долготы на стороне клиента, чтобы избежать лишних ответов 422.
Направление по румбам. cardinal отражает только начальный азимут — без учёта ветра и опубликованных маршрутов по воздушным трассам.
Определение маршрута. Чтобы получить пару «пункт отправления — пункт назначения» по позывному, используйте Маршруты. Блочное время, предсказанное ML-моделью, см. на странице Время полёта.
Ответы с ошибками
Общие ошибки платформы см. в разделе Обработка ошибок. Специфичные для эндпоинта:
422 — некорректно заданная точка
{
"detail": [
{
"type": "value_error",
"loc": ["query", "from_lat"],
"msg": "from_lat must be between -90 and 90"
}
]
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Query Parameters
Origin airport ICAO or IATA code (e.g. KJFK, JFK)
Destination airport ICAO or IATA code (e.g. EGLL, LHR)
Origin latitude (-90 to 90)
Origin longitude (-180 to 180)
Destination latitude (-90 to 90)
Destination longitude (-180 to 180)
Distance unit: nm (nautical miles), km, or mi
"nm""nm" | "km" | "mi"Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/distance"{
"from_point": {
"latitude": 40.639751,
"longitude": -73.778925,
"icao_code": "KJFK",
"iata_code": "JFK",
"name": "John F Kennedy International Airport"
},
"to_point": {
"latitude": 51.4706,
"longitude": -0.461941,
"icao_code": "EGLL",
"iata_code": "LHR",
"name": "London Heathrow Airport"
},
"distance": 2991.01,
"unit": "nm",
"bearing": 51.35,
"bearing_cardinal": "NE",
"midpoint": {
"latitude": 52.216674,
"longitude": -41.302671
}
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}См. также: Аэропорты · Маршруты · Брифинг полёта