Files
wiki/tasks/flightradar24/PROJECT.md
2026-04-25 13:50:01 +03:00

7.2 KiB
Raw Blame History

Проект: FR24 / noisemap + RTL-SDR ingest

1. Назначение

Проект строит карту шумового загрязнения авиации для Московской области и развивает её в сторону локального ADS-B контура на RTL-SDR.

Сейчас проект состоит из двух связанных частей:

  • noisemap / FR24-прототип — визуализация и расчёт шумовой плотности на базе исторических данных Flightradar24
  • RTL-SDR ingest-контур — приём ADS-B с локального приёмника, хранение в PostgreSQL/PostGIS и восстановление данных после сбоев

2. Статус

  • Старт проекта: 22 марта 2026
  • Текущий статус: активен
  • Текущий фокус: переход от FR24-only к локальному RTL-SDR контуру с PostgreSQL/PostGIS
  • Последнее обновление: 25 апреля 2026

3. Текущая часть: noisemap / FR24-прототип

URL

Расположение

  • tasks/flightradar24/prototype/

Стек

  • Flask
  • OpenLayers 10
  • Turf.js
  • Canvas2D
  • flask-compress

Что уже реализовано

  • слой "Плотность пролётов"
  • метрика рейсов/час
  • радиусы влияния по высоте
  • кэш плотности
  • слайдер по дням
  • легенда и попап по рейсам
  • /api/dates и /api/density
  • загрузка табло через Яндекс.Расписания

Ограничения текущей части

  • FR24 кредиты закончились
  • охват данных неполный
  • ночные рейсы и часть траекторий не покрываются

4. Новая часть: RTL-SDR ingest-контур

Цель

Построить локальный контур приёма ADS-B с RTL-SDR, который:

  • принимает поток в real time
  • сохраняет сырьё с retention 3 дня
  • догоняет пропуски после сбоя
  • хранит данные в PostgreSQL/PostGIS
  • отдаёт данные для визуализации на карте

Архитектурные рамки

  • 1 VM в PVE
  • USB RTL-SDR пробрасывается в VM
  • Docker Compose
  • отдельные контейнеры для компонентов
  • PostgreSQL + PostGIS
  • сырьё и core-данные в одной БД, но логически разделены

Согласованные ограничения VM

  • CPU: до 6 vCPU
  • RAM: 1012 GB
  • SSD: 80100 GB max

Режимы работы

  • live
  • recovery
  • overlap recovery

Базовые сущности хранения

  • captures
  • raw_packets
  • aircraft
  • flights
  • track_points
  • tracks
  • processing_state
  • noise_results

5. Данные и источники

FR24

  • исторические данные использовались для прототипа noisemap
  • FR24 API ключ хранится в ~/.openclaw/.env
  • ключи и секреты не хранятся в проектных файлах

ADS-B / RTL-SDR

  • локальный источник для ingest-контура
  • основной переходной источник после исчерпания FR24-only подхода

6. Бэклог

Выполнено (апрель 2026)

  • RTL-SDR ingest контур (capture + preprocess + api + monitoring + backup)
  • PostgreSQL/PostGIS схема fr24
  • Leaflet карта с треками и фильтром периода
  • Мониторинг дашборд
  • Батчевая запись, фильтр onground, кеш скорости с TTL
  • Callsign из MSG1

Фаза 2, Шаг 1: Внешние источники данных (выполнено 20.04.2026)

  • Контейнер fr24-schedule запущен
  • Схема fr24_ext (таблицы schedule, load_state)
  • Яндекс.Расписания API: SVO, DME, VKO, ZIA
  • Backfill 01.0419.04.2026: 28 690 рейсов
  • Cron T-1 в 02:00 UTC
  • UI табло: http://192.168.2.67:8080/schedule
  • Экспорт CSV
  • OpenSky отключён (исторические данные платные)

Фаза 2, Шаг 2: Витрина данных (выполнено 21.04.2026)

  • Схема fr24_mart (flights, track_points, noise_grid, source_coverage)
  • Контейнеры fr24-mart, fr24-tracks-fr24, fr24-tracks-fa
  • build_mart.py: мэтчинг по приоритету RTL-SDR > FR24 > FA
  • Шумовая сетка noise_grid (ячейки 0.01°×0.01°)
  • Метрики source_coverage
  • FR24 API: 1 трек загружен и проверен (FV6807)
  • FA API: 5 треков загружено (тест)
  • Мэтчинг RTL-SDR/FA в витрине исправлен (ICAO vs IATA фикс, 21.04.2026)
  • DDL fix: VARCHAR(5) → VARCHAR(20) в flight_tracks_fa (21.04.2026)
  • ⚠️ Яндекс backfill 0619.04 не завершён (rate limit)
  • Bulk rebuild витрины за 0219.04

UI enrichment (выполнено 24.04.2026)

  • Таблица fr24_ext.flight_actual (FR24 summary/full данные)
  • UI расписания: 13 колонок (fr24_id, actual_takeoff, actual_landed, delay_*, flight_category, registration)
  • aircraft_type через COALESCE(mf.aircraft_type, s.aircraft_type) — fallback на расписание (25.04.2026)

🔜 Фаза 2, Шаг 3: Перенос noisemap на VM-FR24

  • Адаптация прототипа под fr24_mart
  • Live режим из RTL-SDR
  • Фильтр по источнику данных
  • ТЗ: docs/PHASE2_STEP3_NOISEMAP_MIGRATION.md

7. Документация

  • tasks/flightradar24/docs/SYSTEM_OVERVIEW.md — полное актуальное описание системы (читать первым)
  • tasks/flightradar24/PROJECT.md — статус и бэклог
  • tasks/flightradar24/docs/INDEX.md — индекс всех документов
  • tasks/flightradar24/docs/ARCHITECTURE.md — контейнерная архитектура (базовая)
  • tasks/flightradar24/docs/PHASE2_STEP2_DATA_MART.mdТЗ витрины fr24_mart
  • tasks/flightradar24/docs/VM_SETUP.md — инструкция по VM
  • tasks/flightradar24/prototype/docs/NOISE_MODEL.md — шумовая модель

8. Критерий направления

Проект считается развивающимся правильно, если:

  • noisemap остаётся рабочим и полезным
  • ingest-контур получает данные без дырок
  • recovery умеет догонять сырьё автоматически
  • БД не раздувается сверх лимитов VM
  • карта продолжает получать данные для визуализации