Cartes des secteurs de contrôle de l'espace aérien civil français

Dernière mise à jour de l'article : 17/07/2017.

Je suis d'un tempérament plutôt curieux. De nombreux domaines sont susceptibles de m'intéresser. Le logiciel libre, la cartographie et l'aéronautique en font partie. Un sujet technique, un brin d'informatique, une pincée de créativité et un menu défi à relever ? Lorsqu'un projet personnel réunit certains ingrédients, c'est un plaisir que d'y consacrer du temps. Pour celui-ci, c'est carton plein.

Le problème

Le service de l'information aéronautique (SIA) — dépendant de la direction générale de l'aviation civile (DGAC) — publie de nombreux documents. Il y avait notamment, jusqu'à il y a quelques années, des cartes représentant les secteurs de contrôle de l'espace aérien civil français. Ces cartes ne sont plus produites mais les coordonnées géographiques des secteurs sont publiées en HTML.

Qu'à cela ne tienne. Je m'en vais réaliser ces cartes moi-même.

Site web du SIA : www.sia.aviation-civile.gouv.fr

Logo de la DGAC
Logo de la DGAC

Le problème du problème

Je suis profondément convaincu par le logiciel libre et l'esprit qui anime ce mouvement. Et quitte à faire les choses, autant qu'elles soient bien faites.

Les cartes réalisées seront diffusées sous licence CC BY-SA. Pour ce faire, il faut bien entendu que l'ensemble des éléments utilisés soient compatibles avec cette licence. Je pense m'en sortir assez facilement pour les données cartographiques de base. Quant à celles publiées par une administration publique, je m'interroge. Aucune information légale n'est disponible. Après deux messages envoyés via le formulaire de contact disponible sur le site web du SIA — laissés sans réponse — je change de stratégie et m'intéresse au droit encadrant généralement ce type de données.

Les licences Creative Commons, article Wikipédia : https://fr.wikipedia.org/wiki/Licence_Creative_Commons

Logo CC BY-SA
Logo de la licence CC BY-SA

Le problème du problème du problème

Présent sur Diaspora*, je soumets la question à Lionel Maurel qui semble plutôt bien tâter le sujet. Ayant certainement plein d'autres trucs à faire — ici, ici ou ici —, on peut comprendre qu'il ne se soit pas penché sur mon petit soucis. Plein de bonne volonté, je contacte Romaine Lubrique ; qui me renvoie vers OpenStreetMap France. Logique. C'est le président de l'association en personne qui me répond ; et me renvoie à son tour vers le SIA.

J'ai comme qui dirait l'impression de tourner en rond.

Je tente d'envoyer un petit courriel à data.gouv.fr, sans conviction ni plus de succès. Tant pis.

Puisque personne ne semble intéressé pour m'expliquer que j'ai tort, c'est que je dois certainement avoir raison. (Et pif ! Vous ne l'avez pas vu venir celle-là, hein ?)

QGIS

Le logiciel choisi pour réaliser la carte se nomme QGIS, le « système d'information géographique libre et open source » publié sous licence GNU GPL v2. Lequel est d'ailleurs présent dans les dépôts logiciels officiels de la Debian GNU/Linux « Stretch » qui propulse mon ordinateur portable. Facile. Afin de pouvoir profiter de la dernière version du programme, un dépôt spécifique à ajouter au gestionnaire de paquets est proposé.

Site web de QGIS : www.qgis.org

Logo de QGIS
Logo de QGIS

Ma compétence en matière de cartographie se résume grossièrement à une contribution au projet OpenStreetMap. Et même si ça m'éclate, je suis loin d'être géomaticien. Je ne m'étais pas vraiment intéressé aux systèmes d'information géographiques (SIG), et la découverte de QGIS a été une excellente surprise. Ce logiciel est une merveille. Il est possible de se connecter à de nombreux serveurs Internet afin de télécharger de multiples jeux de données, ainsi que d'importer une foule de fichiers standards. Le logiciel est très puissant et le composeur de rendus truffé d'options. Il m'a fallu un peu de temps pour prendre l'outil en main, mais c'est avec plaisir que j'en découvre les fonctionnalités.

Fenêtre principale de QGIS
Fenêtre principale de QGIS
Composeur de rendu de QGIS
Composeur de rendu de QGIS

Police d'écriture

La police d'écriture choisie se nomme Alegreya. Publiée sous licence SIL OFL 1.1, son auteur est Juan Pablo del Peral. Elle peut être téléchargée en de nombreux endroits, notamment sur Font Squirrel.

Aperçu de la police d'écriture Alegreya
Police d'écriture Alegreya

Données cartographiques

Les données cartographiques choisies, élevées dans le domaine public, sont issues de Natural Earth.

Initié par des nord-américains, le projet regroupe des contributeurs de tout horizon. L'objectif est de centraliser un maximum de données cartographiques libres de droit afin de les mettre à la disposition du plus grand nombre. Tout un chacun est invité à participer.

Mes besoins étant assez rudimentaires, je ne me suis servi que de trois jeux de données : les frontières nationales, les limites départementales et les principales villes de France et du Monde. Les données aéroportuaires proposées par Natural Earth étant assez limitées, je me suis tourné vers le projet OurAirports.

Logo de Natural Earth
Logo de Natural Earth

Données du SIA

Comme je l'expliquais plus haut, le SIA publie les coordonnées géographiques des secteurs de contrôle de l'espace aérien civil national. Sur une page web, au format HTML. Laquelle contient également tout un tas de données non pertinentes pour mon projet. De quoi s'amuser un brin.

La page concernée, intitulée « ENR 3.8 Secteurs de contrôle ACC/UAC », peut être enregistrée localement. Grâce à mes dix doigts — et à grands coups de sed et de awk bien dégueulasses — j'ai confectionné un script Bash qui prend le fichier HTML original en entrée et me sort un fichier GeoJSON contenant l'ensemble des données utiles en sortie. Lequel fichier peut-être directement importé dans QGIS pour traitement. Classieux.

Le script est disponible ci-dessous. Je m'excuse par avance auprès de la confédération des ninjas ceinture noire ès Bash troisième dan pour sa piètre qualité. Je suis ouvert à toute proposition d'amélioration.

#!/bin/bash
 
# Script d'extraction des données géographiques relatives
# aux secteurs de contrôle de l'espace aérien civil français
# depuis la page HTML ENR 3.8 du service de l'information
# aéronautique (SIA, www.sia.aviation-civil.gouv.fr) en format
# GeoJSON sur la sortie standard.
#
# Auteur : Cyprien Pouzenc (cyprien@cypouz.com)
# Date de création : 2014-10-17
# Dernière modification : 2017-07-12
 
 
# Message d'aide.
helpmsg ()
{
cat << EOF
 
$(basename $0) extracts geographic data from ENR 3.8 HTML file
to GeoJSON format on standard output.
 
Usage: ./$(basename $0) input_file.html
 
EOF
}
 
if [[ $1 == "" ]] ; then
    helpmsg
    exit 0;
fi
 
 
cat "$1" |
 
# Sélection des lignes de données utiles.
grep -e "AIRSPACE.TXT_NAME\"" \
     -e "AIRSPACE.VAL_DIST_VER_UPPER" \
     -e "AIRSPACE.VAL_DIST_VER_LOWER" \
     -e "AIRSPACE_VERTEX.GEO" \
     -e "AmdtInsertedAIRAC" |

# Suppression du formatage.
sed "
    s/^.*>\(.*\)<.*$/\1/g
    /Frontière/d
    /</d
" |

# Réunion des coordonnées.
sed '/^[[:digit:]]/ {N; s/\n/,/}' |

# Préparation/nettoyage des coordonnées.
awk 'BEGIN {
    FS=",";
}
 
function sanitize_coordinates(coordinates) {
    if (coordinates ~ /^.*°..'"'"'.."[NSEWO]/) {
        gsub(/^.*W/, "-&", coordinates)
        gsub(/[°"'"'"'NSEWO]/, " ", coordinates)
    }
        return coordinates
}
 
{
    print sanitize_coordinates($1), sanitize_coordinates($2);
}' |
 
# Conversion des coordonnées sexagécimales en décimales.
awk 'function compute_coordinates(coordinates) {
        if (coordinates ~ /^[0-9 ]*$/) {
            latitude = $1 + ($2+($3/60))/60
            longitude = $4 + ($5+($6/60))/60
            return longitude ", " latitude
        } else if (coordinates ~ /\-[0-9 ]*$/) {
            latitude = $1 + ($2+($3/60))/60
            longitude = -(-$4 + ($5+($6/60))/60)
            return longitude ", " latitude
        } else
            return coordinates
    }
 
{
    print compute_coordinates($0);
}' |
 
# Formatage GeoJSON.
sed '/^[[:alpha:]]/ {
    N; N;
    s/ *\n/, /g;
    s/ $//;
    s/^/    { "type": "Feature",\n      \"properties\": {\n        \"description\": \"/;
    s/$/"\n      },\n      "geometry": {\n        "type": "Polygon",\n        "coordinates": [\n          [/
}' |
sed '/^-\?[[:digit:]]/ {s/^.*$/            [&]/}' |
sed ':x; /[-\?[[:digit:]].*]$/ {s/]\n/],\n/; N; bx}' |
sed '/[[:digit:]]]$/ s/$/\n          ]\n        ]\n      }\n    },/' |
sed '1i { "type": "FeatureCollection",\n  "features": [' |
sed '$c\    }\n  ]\n}'

Pour s'en servir, rien de plus simple. Si le script est enregistré dans un fichier nommé parse_enr38.sh, la page web originale dans un fichier nommé page.html et que l'on souhaite récupérer les données au format GeoJSON dans un fichier nommé data.geojson, il suffit d’exécuter la commande suivante :

./parse_enr38.sh page.html > data.geojson

Le résultat obtenu peut être téléchargé ici (GeoJSON, 129 ko).

À noter que les secteurs de contrôle ne sont pas triés. Ce travail est à réaliser manuellement dans QGIS afin de les regrouper comme bon nous semble.

Voilà enfin de quoi faire joujou !

Secteurs de contrôle

L'espace aérien civil français est découpé en de nombreux secteurs de contrôle géographiques et altimétriques. Les cinq centres de contrôles régionaux, couvrant l'intégralité du territoire national, sont chargés du trafic en croisière — ou « en route » — tandis que les nombreux centres de contrôles d'approche s'occupent des abords d'aérodromes. Les communications s'opèrent par radio. Chaque secteur dispose de sa propre fréquence. Néanmoins, en fonction du trafic, les secteurs peuvent être regroupés afin d'en faciliter la gestion à moindre personnel. Ainsi, durant son trajet, un avion va traverser de multiples secteurs, changeant régulièrement d'interlocuteur et de fréquence.

Le contrôle aérien, article Wikipédia : https://fr.wikipedia.org/wiki/Contrôle_aérien

Produire une carte des secteurs de contrôle n'est pas une mince affaire. Globalement, on peut définir une couche de secteurs de basse altitude (Area Control Center, ACC) et trois couches de secteurs de haute altitude (Upper Area Control, UAC) ; chaque zone géographique disposant alors de quatre niveaux de navigation. Dans les faits, ce n'est pas aussi simple. Les secteurs ne disposent pas systématiquement de limites communes, dans le plan comme dans l'espace. On peut trouver deux couches de basse altitude, jusqu'à cinq couches de haute altitude et trois couches intermédiaires de cas particuliers... Sans même parler des plafonds et planchers obliques. Un sacré bazar. Aussi, il paraît compliqué de réaliser une synthèse à la fois juste et claire. Et l'on peut alors comprendre que le SIA ait arrêté de produire une telle carte.

Il faut donc faire des choix. On peut décider d'être exhaustif et réaliser de nombreuses cartes afin de reproduire l'ensemble des secteurs de contrôle ; et rater ainsi l'intérêt initial de la représentation cartographique qui se veut une lecture facilitée d'un jeu de données. Soit on décide de tricher. C'est ce que j'ai fait.

Si l'on s'en tient au modèle simplifié, il est possible de tracer deux cartes aussi génériques que possible. L'une pour l'espace inférieur, l'autre pour l'espace supérieur. Elles sont globalement justes, sauf à y regarder dans le détail. La région parisienne — au nord de Valence, donc — est certainement la plus entachée d'erreurs, tant l'enchevêtrement des secteurs y est complexe.

Les choix que j'ai fait sont certainement discutables. Aussi, j'invite quiconque maîtrisant le sujet à éclairer ma lanterne afin d'améliorer le rendu.

Téléchargement

Les cartes sont disponibles en haute résolution aux liens suivants :

Secteurs de contrôle ACC
Carte des secteurs de contrôle ACC
Secteurs de contrôle UAC
Carte des secteurs de contrôle UAC

    Journal des modifications

    17/07/2017 — Réécriture du script d'extraction des données — qui ne sont plus publiées en PDF mais en HTML. Mise à jour des cartes. Amélioration du rendu.
    11/03/2015 — Nouvelle source de données pour les aéroports. Ajout des capitales des états limitrophes.
    20/02/2015 — Distinction des secteurs de contrôles de chaque FIR (flight information region, région d'information de vol) par des couleurs différentes.

    Publié le

    Mardi 3 février 2015 à 11h50

    Commentaires

    Énorme travail !!! Les vraies cartes sont difficiles à interpréter pour les non initiés ! Merci !

    Bizarre de voir « © Service de l'Information Aéronautique, France » sur le document PDF ENR-3.8 du SIA, non ?

    C'est effectivement bizarre. Tout d'abord car le copyright n'existe pas dans le droit français. À supposer que cela indique qu'ils sont l'auteur du document, cela n'informe en rien sur la licence des données contenues.

    Par ailleurs, étant donné que le SIA ne produit aucune donnée GPS — jusqu'à preuve du contraire —, cela ne saurait signifier leur pouvoir à ce propos ; ces données leur étant fourni par une administration publique financée par le contribuable.

    Joli travail... Wink J'avais prévu de m'y pencher dessus pour intégrer les données dans un soft mais la solution d'extraction de données aurait certainement été moins « sophistiquée ».

    Concernant la complexité des secteurs, autant que je sache, il n'y a pas de plafond/plancher oblique (impossible à représenter sur une visu de contrôle aérien qui est une « projection » 2D) mais une multitude de planchers/plafonds différents parfois au sein d'un même secteur. Par exemple, la carte ACC fait référence à un secteur ML (quart sud-est) ou encore LS qui ont des plafonds au niveau de vol 245 alors que l'inférieur est supposé s'arrêter au FL195. Idem, le secteur W que l'on trouve en UAC a en fait une margelle entre le FL195/FL245 pour assurer une continuité entre le secteur supérieur W et le secteur inférieur LE ce qui est utile pour les arrivées de l'ouest vers le terrain de Genève.

    Toutes ces bizarreries contribuent à complexifier l'espace aérien mais, il y a derrière cela une volonté d'optimiser l'utilisation de ce dernier et surtout de limiter l'impact de quelques vols en évolution (sur de courte période de temps donc) sur certains secteurs très demandés lors des pics de trafics permettant ainsi de ne pas trop faire attendre les avions au sol.

    Pour obtenir une carte « réaliste », il suffit juste de prendre un niveau de vol et de dessiner les volumes qui s'y trouvent : cette « section » sera forcément vraie pour l'altitude choisie. Sinon, il faut dessiner suivant plusieurs codage couleur, l'ensemble des secteurs portant le même nom : W se découpe ainsi en 3 couches W1, W2 et W3 et seule la couche 1 (FL195-FL305) revêt des limites bizarres (la fameuses margelle).

    ++

    Chakram

    http://controle-aerien.chakram.info

    Merci Chakram pour ces très intéressantes précisions ! Ainsi que pour le lien vers ton site que je ne connaissais pas et qui contient de nombreuses informations utiles.

    Quand aux planchers et plafonds obliques, le document ENR-3.8 y fait référence pour les secteurs DG2, DO1 et DS. Je t'invite donc à le consulter afin de nous éclairer à leur sujet !

    Je vais y jeter un coup d'oeil de ce pas car j'avoue que je ne connaissais pas ces cas particuliers.

    Merci,

    Chakram

    J'ai le doc' sous les yeux. La description purement écrite laisse pantois. En effet, si certains points sont clairs (exclusions de certains secteurs de la partie oblique), d'autres le sont moins comme le fait de parler de plafond oblique sans avoir spécialement de référence indiquant le plan même si, le secteur (DO en l'occurrence) étant un secteur parisien, il paraît raisonnable que le plan devrait s'axer vers Paris pour avoir un effet de tunnel vers les aéroports de la région parisienne.

    Intéressant en tout cas, à creuser.

    ++

    Chak

    Merci de ton retour. Si tu trouves plus d'infos, tient moi au courant !

    Désolé de ne pas avoir répondu avant. La base de données dont je disposais ne permet pas une exploitation vraiment 3D. Le système actuel fonctionne sur un principe de pseudo 3D avec une association de points et de niveaux permettant d'associer les vols aux secteurs de contrôle concernés. Nous sommes loin du système volumique qui devrait arriver avec la nouvelle génération d'outil de contrôle.

    ++

    Chak

    Merci pour ces informations précises et fortes intéressantes. Je suis dans le nord-est, je « m'éclate » en écoutant la bande aéro avec une clef SDR et SDR#. J'ai la chance d'entendre Reims contrôle, voix montante sur deux fréquences, les écoutes sont bien plus intéressantes ainsi !

    Super travail, qui mériterait d'être mis à jour car de nombreuses fréquences ont changé, notamment depuis la mise en place du 8,33... mais le fond reste très utile !

    Super boulot !

    Je tente de faire une version récente de la chose mais la page HTML, une fois traitée par le script, me renvoie des mochetées dans le fichier GeoJSON généré. Je crains qu'il ne faille modifier le script pour s'adapter à la page HTML version 2020... Je vais mettre mon nez dedans, sans garantie Wink

    Bravo pour cet énorme travail. Je me suis penché sur le sujet, certains secteurs ayant un peu évolué depuis. Je suis passé par un script Python mais il y a encore du travail à faire à la main après. Pour l'instant j'édite des cartes en coupe, à différents niveaux, mais il doit y avoir moyen de faire des coupes verticales un peu plus larges et judicieuses. En effet, j'ai ajouté les fréquences dans les secteurs affichés et ne faire que deux cartes inf et sup me paraît trop juste. Je me suis beaucoup inspiré de ton travail, en reprenant notamment l'utilisation de QGIS que j'ai découvert à cette occasion.

    Voilà un premier jet ici : https://albiorix.fr/?p=1

    These maps are supremely helpful to me, an airband radio enthusiast in SW England. THANK YOU SO MUCH for the hours of hard work you have applied to this complex problem and to bring us these maps. Best wishes. Adam

    Ces cartes sont extrêmement utiles pour moi, un passionné de radio airband dans le sud-ouest de l'Angleterre. MERCI BEAUCOUP pour les heures de travail acharné que vous avez consacrées à ce problème complexe et pour nous avoir apporté ces cartes. Meilleurs vœux. Adam

     

    Ajouter un commentaire

    HTML filtré

    • Balises HTML autorisées : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <p>
    • Textual smiley will be replaced with graphical ones.
    • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
    • Les lignes et les paragraphes vont à la ligne automatiquement.

    Texte brut

    • Aucune balise HTML autorisée.
    • Les adresses de pages web et de courriels sont transformées en liens automatiquement.
    • Les lignes et les paragraphes vont à la ligne automatiquement.

    Flux RSS des commentaires de cet article.