89 lines
4.7 KiB
SQL
89 lines
4.7 KiB
SQL
-- =============================================================================
|
|
-- 04_airports.sql — table de référence des aérodromes d'Île-de-France
|
|
--
|
|
-- Sert de liste d'exclusion à l'onglet « Départs hors aérodromes » : tout point
|
|
-- de décollage situé dans le rayon d'un aérodrome ACTIF est écarté des
|
|
-- résultats. Chaque site a son propre rayon, ajustable indépendamment.
|
|
--
|
|
-- Le rayon n'est pas la taille de l'aérodrome mais la zone dans laquelle un
|
|
-- avion en montée initiale est encore attribuable à ce terrain. Il est donc
|
|
-- plus large pour les grandes plateformes (trajectoires de départ étendues)
|
|
-- que pour un héliport.
|
|
--
|
|
-- Usage :
|
|
-- docker exec -i wordpress-postgres psql -U pgz_admin -d wpz_postgres \
|
|
-- -v ON_ERROR_STOP=1 < 04_airports.sql
|
|
-- =============================================================================
|
|
|
|
\set ON_ERROR_STOP on
|
|
|
|
CREATE TABLE IF NOT EXISTS adsb.airports (
|
|
id serial PRIMARY KEY,
|
|
code text NOT NULL UNIQUE, -- code OACI (LFPG, LFPO, ...)
|
|
nom text NOT NULL,
|
|
lat double precision NOT NULL,
|
|
lon double precision NOT NULL,
|
|
rayon_km double precision NOT NULL DEFAULT 8,
|
|
type text NOT NULL DEFAULT 'aerodrome', -- aeroport|aerodrome|heliport|base
|
|
actif boolean NOT NULL DEFAULT true,
|
|
commentaire text
|
|
);
|
|
|
|
COMMENT ON TABLE adsb.airports IS
|
|
'Aérodromes connus, utilisés comme zones d''exclusion pour la détection des '
|
|
'départs atypiques. actif=false désactive l''exclusion sans perdre la fiche.';
|
|
COMMENT ON COLUMN adsb.airports.rayon_km IS
|
|
'Rayon d''exclusion en km : zone dans laquelle une montée initiale est '
|
|
'considérée comme issue de ce terrain.';
|
|
|
|
-- Colonne géographique générée, pour un ST_DWithin indexable
|
|
ALTER TABLE adsb.airports
|
|
ADD COLUMN IF NOT EXISTS geom geography(Point,4326)
|
|
GENERATED ALWAYS AS (ST_SetSRID(ST_MakePoint(lon, lat), 4326)::geography) STORED;
|
|
|
|
CREATE INDEX IF NOT EXISTS airports_geom_gix ON adsb.airports USING GIST (geom);
|
|
CREATE INDEX IF NOT EXISTS airports_actif_idx ON adsb.airports (actif) WHERE actif;
|
|
|
|
-- ── Données de référence ─────────────────────────────────────────────────────
|
|
-- Rayons de départ, à ajuster selon les résultats observés.
|
|
INSERT INTO adsb.airports (code, nom, lat, lon, rayon_km, type, commentaire) VALUES
|
|
('LFPG', 'Paris-Charles de Gaulle', 49.0097, 2.5479, 15, 'aeroport',
|
|
'Doublets de pistes, départs très étalés — rayon large'),
|
|
('LFPO', 'Paris-Orly', 48.7233, 2.3794, 12, 'aeroport',
|
|
'Départs vers le sud et l''ouest'),
|
|
('LFPB', 'Paris-Le Bourget', 48.9694, 2.4414, 10, 'aeroport',
|
|
'Aviation d''affaires, trafic dense en jets'),
|
|
('LFPV', 'Vélizy-Villacoublay', 48.7744, 2.2014, 8, 'base',
|
|
'Base aérienne 107 — à ~6 km de la station, très bien captée'),
|
|
('LFPN', 'Toussus-le-Noble', 48.7519, 2.1062, 8, 'aerodrome',
|
|
'Aviation légère et écoles — fort volume de tours de piste'),
|
|
('LFPZ', 'Saint-Cyr-l''École', 48.8081, 2.0736, 6, 'aerodrome',
|
|
'Aviation légère, planeurs'),
|
|
('LFPI', 'Paris-Issy-les-Moulineaux', 48.8331, 2.2725, 4, 'heliport',
|
|
'Héliport de Paris — à ~1 km de la station, couverture excellente'),
|
|
('LFPM', 'Melun-Villaroche', 48.6047, 2.6711, 8, 'aerodrome',
|
|
'Essais en vol et aviation générale'),
|
|
('LFPT', 'Pontoise-Cormeilles', 49.0966, 2.0408, 8, 'aerodrome',
|
|
'Aviation légère, école'),
|
|
('LFPL', 'Lognes-Émerainville', 48.8228, 2.6261, 6, 'aerodrome',
|
|
'Aviation légère'),
|
|
('LFPK', 'Coulommiers-Voisins', 48.8375, 3.0161, 8, 'aerodrome',
|
|
'Limite est de la couverture'),
|
|
('LFXU', 'Les Mureaux', 48.9983, 1.9433, 6, 'aerodrome',
|
|
'Aérodrome industriel'),
|
|
('LFPU', 'Moret-Épisy', 48.3422, 2.7986, 6, 'aerodrome',
|
|
'Planeurs — souvent hors de portée'),
|
|
('LFAI', 'Nangis-Les Loges', 48.5961, 3.0067, 6, 'aerodrome',
|
|
'Aviation légère, parachutisme'),
|
|
('LFOP', 'Rouen-Vallée de Seine', 49.3842, 1.1758, 10, 'aeroport',
|
|
'Hors couverture nominale — désactivable'),
|
|
('LFOB', 'Beauvais-Tillé', 49.4544, 2.1128, 12, 'aeroport',
|
|
'Limite nord de la couverture')
|
|
ON CONFLICT (code) DO NOTHING;
|
|
|
|
-- Sites au-delà de la portée utile : renseignés mais désactivés par défaut,
|
|
-- pour éviter d'exclure inutilement des zones où l'on ne capte rien.
|
|
UPDATE adsb.airports SET actif = false WHERE code IN ('LFOP', 'LFPU');
|
|
|
|
SELECT code, nom, rayon_km, type, actif FROM adsb.airports ORDER BY actif DESC, code;
|