6.8 KiB
6.8 KiB
Проект: 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
- Последнее обновление: 21 апреля 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: 10–12 GB
- SSD: 80–100 GB max
Режимы работы
- live
- recovery
- overlap recovery
Базовые сущности хранения
capturesraw_packetsaircraftflightstrack_pointstracksprocessing_statenoise_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.04–19.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) — в работе
- ⚠️ DDL fix: VARCHAR(5) в flight_tracks_fa — в работе
- ⚠️ Яндекс backfill 06–19.04 не завершён (rate limit)
- Bulk rebuild витрины за 02–19.04
🔜 Фаза 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_marttasks/flightradar24/docs/VM_SETUP.md— инструкция по VMtasks/flightradar24/prototype/docs/NOISE_MODEL.md— шумовая модель
8. Критерий направления
Проект считается развивающимся правильно, если:
- noisemap остаётся рабочим и полезным
- ingest-контур получает данные без дырок
- recovery умеет догонять сырьё автоматически
- БД не раздувается сверх лимитов VM
- карта продолжает получать данные для визуализации