Для разработчиков

От файла к плану полёта

Тот же расчёт, что в «Плане» и «Лаборатории», через HTTP API.

Скачать OpenAPI

Быстрый старт

Пять шагов от готового примера до файла маршрута.

PowerShell. Выполняйте шаги в одной оболочке: WebSession хранит cookie.

1Открыть сессию и скачать вход

$api = "/api/v1"
Invoke-RestMethod "$api/session" -SessionVariable geoscanSession | Out-Null
curl.exe -fsS "$api/examples/01-rgb.json" -o mission.json

2Проверить вход

Invoke-RestMethod -Method Post -Uri "$api/missions/validate" -ContentType "application/json" -InFile mission.json

3Запустить расчёт

$key = [guid]::NewGuid().ToString()
$job = Invoke-RestMethod -Method Post -Uri "$api/planning-jobs" -WebSession $geoscanSession -ContentType "application/json" -InFile mission.json -Headers @{"Idempotency-Key"=$key}
$job.id

Обычно ответ 202. Внутри одной сессии повтор с тем же ключом и входом возвращает существующее задание; другой вход с тем же ключом — 409.

4Дождаться результата

$job = Invoke-RestMethod "$api/planning-jobs/$($job.id)" -WebSession $geoscanSession
$job.status
$job.result.plan.metrics

Повторяйте запрос, пока статус QUEUED или RUNNING. К экспорту переходите только после SUCCEEDED.

5Скачать маршрут одного БВС

$uavId = $job.result.plan.sorties[0].uavId
Invoke-WebRequest "$api/planning-jobs/$($job.id)/exports/$uavId/geojson" -WebSession $geoscanSession -OutFile route.geojson

Браузер узнаёт вас без входа

При первом расчёте интерфейс открывает анонимную сессию. После возвращения доступны ваши расчёты и экспорты. Черновики отдельно сохраняются в этом браузере.

GET /api/v1/session устанавливает HttpOnly cookie __Host-geoscan_session на HTTPS и geoscan_session при локальной работе по HTTP, на 90 дней. Она продлевается при открытии сессии, когда до истечения остаётся меньше 30 дней. На HTTPS используются Secure, Path=/ и префикс __Host- без Domain; SameSite=Lax ограничивает передачу cookie между сайтами. Поле id в ответе не является ключом доступа.

В браузере cookie передаётся автоматически. В командной строке сохраняйте cookie jar и используйте его при создании, опросе, отмене, скачивании отчёта и маршрутов. Примеры и проверка входа доступны без сессии. HTTP 401 означает отсутствие или истечение сессии; чужой расчёт возвращает 404.

После удаления cookie, истечения срока или на другом устройстве история недоступна. Регистрация и восстановление доступа пока не предусмотрены. Скачанный JSON позволяет сохранить важный результат отдельно.

До 4 активных расчётов на браузер и до 20 всего. При HTTP 429 дождитесь завершения или отмените один из расчётов; повтор с тем же Idempotency-Key не занимает новый слот.

Сведения об этом браузере

Что передавать

Полный JSON миссии до 16 МиБ. Геометрия — Polygon или MultiPolygon в WGS84: [долгота, широта]. Начните с примера выше и изменяйте параметры.

Территория
area — что снимать; allowedAirspace — где разрешено лететь; запреты и здания задаются отдельно.
Съёмка
RGB, мультиспектр, тепловизор, LiDAR или геофизика. Рабочая высота съёмки — над землёй или верхом препятствия до 150 м включительно. Более высокие объекты и объекты неизвестной высоты обходятся сбоку. В выходных точках AGL всегда отсчитывается от рельефа. Для кадровой съёмки перекрытие не ниже 50%; результат обязан пройти проверку качества.
Флот
От 1 до 10 аппаратов: коптеры, самолёты и VTOL. Без политики зарядки — один вылет; с rechargePolicy — до 20 последовательных вылетов на аппарат. modelId и sensorModelId обозначают выбранные профили; числовые характеристики остаются редактируемыми.
Батарея
safetyReserveRatio — доля полной ёмкости: заряд 25% и резерв 20% оставляют на миссию 5% ёмкости. Уход на резерв также должен помещаться в доступный ресурс.
Зарядка
rechargePolicy.maxSortiesPerUav — лимит вылетов; durationS — время полной зарядки. Первый вылет использует исходный заряд, последующие — 100%. Нужна совместимая общая площадка взлёта и посадки с chargerCount > 0; при занятых зарядных местах появляется очередь. uavs[].initialSiteId закрепляет аппарат за базой.
Площадки
capacity — мест (по умолчанию 1); clearanceTimeS — время освобождения после посадки (30 с). Для одной точки эти параметры совпадают во всех ролях. Резервная площадка физически отличается от основной.
ВПП
headingDeg — истинный курс; runwayLengthM — длина ВПП. У самолёта нужны takeoffRunM и landingRunM. Длина воздушного захода approachLengthM задаётся отдельно.
Рельеф
Плоский тестовый рельеф, готовая сетка либо подготовка из DEM / внешнего источника. DEMO_SYNTHETIC создаёт искусственные высоты для опытов; это явно отмечается в источнике рельефа. Шаг 20–30 м. Максимумы ячеек сохраняются; verticalUncertaintyM — редактируемый запас на погрешность, 5 м для подготовленных данных, не гарантия точности источника.
Поиск
API по умолчанию использует sortie-graph-v3. timeLimitMs и maxCandidateEvaluations ограничивают поиск; maxIterations — число пространственных порядков. Оптимальность в restrictedMasterOptimal относится только к сгенерированным вариантам вылетов, не ко всей задаче.
Лимиты
Территория до 150 км², до 20 запретных зон, расчёт до 1800 с, срок миссии до суток. Ветер сохраняется, но модель его не учитывает. Площадки и модель съёмки требуют проверки на местности.

Проверить вход прямо здесь

Загрузите выбранный пример или вставьте свой JSON. Проверка не создаёт запись в истории расчётов.

Как читать ответ

result.plan.metrics — суммарный налёт, момент завершения, дистанция, энергия и покрытие. sorties — вылеты, фазы, площадки, резервные маршруты и интервалы занятости. Один uavId может повторяться: sequenceNumber задаёт номер вылета этого аппарата. rechargeBeforeS, rechargeStartS и rechargeEndS описывают зарядку; totalRechargeTimeS суммирует её по всем аппаратам и не входит в налёт.

QUEUED / RUNNING

В очереди / Вычисляется

Продолжайте опрашивать состояние раз в 1–3 секунды.

SUCCEEDED

План проверен

Доступны метрики, маршруты, резервные пути и экспорт. Глобальная оптимальность не гарантируется.

NO_SOLUTION

План не найден

Проверенные варианты не удовлетворили ограничениям. Посмотрите violations; это не доказательство невозможности задачи.

INVALID_INPUT

Ошибка входа

Исправьте поля из issues. Валидация или создание задания также могут вернуть HTTP 422.

TIMED_OUT

Лимит времени

Проверенного плана нет. Если он был найден до лимита, вернётся SUCCEEDED с TIME_LIMIT_BEST_VERIFIED.

FAILED / CANCELLED

Ошибка расчёта / Отменён

FAILED — техническая ошибка, CANCELLED — расчёт отменён. Экспорт недоступен.

HTTP 409 — конфликт ключа или результат ещё недоступен; 422 — неверный вход; 429 — очередь заполнена; 503 — сервис недоступен.

GeoJSON и KML включают все вылеты выбранного БВС. GeoJSON экспортирует геометрию WGS84, высоты MSL/AGL — в свойствах. KML использует AGL. Это план полёта, не протокол загрузки в автопилот.

Методы API

Перечень и схемы запросов загружаются из текущей спецификации сервера.

Схемы данных

Точные имена полей, диапазоны и обязательные свойства. Ссылки $ref ведут к именам схем из этого списка.