Makina Blog

Le blog Makina-corpus

Gulf Stream Story : traitement des données


Comment traiter des données océanographiques au format NetCDF pour créer des vidéos, des images et des geojson

Cet article fait suite à celui sur les données NetCDF. Nous y avions présenté le format ainsi que les outils nous permettant la visualisation et l'exploration de ces données. Les données étant maintenant sélectionnées, nous, nous intéresserons à leur traitement.

Dans l'application, la plupart des données NetCDF apparaissent sous la forme de vidéos. Une méthode de traitement similaire a été utilisée pour leur traitement, leur extraction et leur conversion en vidéos. Nous prendrons dans les prochains paragraphes l'exemple de la température de surface.

Script Python

Pour la température nous souhaitions récupérer une image traitée par jour. La solution QGIS a vite été abandonnée car elle nécessitait de traiter et d'extraire les données couche par couche. Pour une vidéo d'une année, il aurait fallu répéter le même protocole 365 fois. Nous avons donc décidé d'automatiser le traitement et l'extraction à l'aide d'un script Python :

script-python

Voici les différents outils Python utilisés:

L'exemple ci-dessous nous montre comment extraire 180 images (.png) grâce au script précédemment présenté.

gulf-stream

Pour assembler ces pngs et obtenir une vidéo .mp4, nous avons utilisé l'outil ffmpeg : https://ffmpeg.org/

gulf stream story

Légende de la carte

Un autre script Python a été créé pour créer la légende. Pour chaque température affichée dans la légende, nous souhaitions récupérer sa couleur correspondante (couleur de l'échelle matplotlib utilisée dans le script d'extraction) :

gulf stream story

Cette échelle a ensuite été insérée dans le html :

gulf stream story

Autre utilisation des données NetCDF, la vitesse des courants en fonction de la profondeur

gulf stream story

Cette étape de l'application nous présente la vitesse et l'orientation des courants à travers un ensemble de flèches réparties tous les degrés. L’ascenseur de gauche permet de visualiser ces vecteurs à différentes profondeurs.

Pour passer du fichier raster NetCDF à ces flèches vectorielles il a fallu procéder en plusieurs étapes :

Utilisation de l'outil netCDF Operator

http://nco.sourceforge.net/

Les fichiers NetCDF utilisés comportaient des profondeurs de 0m à 5000m. Comme nous souhaitions étudier les courants à une profondeur donnée, nous avons extrait les données relatives aux profondeurs d'intérêt. Exemple de -1452,251m :

ncks -d depth, 1452.251 global-analysis-forecast-phys-001-002_1467209627690.nc orient_1452.nc

En climatologie les données relatives aux vents et aux courants sont composés de deux vecteurs vitesse orientés nord (v : northward) et est (u : eastward). Pour récupérer l'orientation et la vitesse, nous avons de nouveau utilisé NCO. Exemple de -1452,251m :

ncap2 --64 -v -s "dir=(atan2(u, v))*360/(2*3.1415926535)" -s "norme=sqrt(u*u+v*v)" orient_1452.nc orient_1452_intensite.nc

Utilisation de QGIS

Nous avons ensuite cherché à extraire les données traitées avec NCO afin d'alimenter des flèches vecteurs orientées, de taille et de couleur proportionnelles à leur vitesse. Nous avons créé un GeoJSON par profondeur avec une valeur tous les degrés :

Utilisation de QGIS (attention : nécessite QGIS 2.14 si l’on souhaite utiliser l’étape affichage des données) :

- Création d'une grille tous les 1° (vecteur/points réguliers)

- Point Sampling Tool (extension) : sélection de la norme et de l'orientation (bien vérifier que le nom des champs soit bien différent)

- Affichage des données : dans le style de la couche créée : choix d'une image de flèche, orientation en fonction orientation, taille en fonction de la norme, couleur de remplissage ramp_color

- Extraction d’un geojson par profondeur.

Intégration des données au fichier Javascript

gulf java script

 

Autres données

Tuilage des données

Les fonds de cartes et illustrations ont été tuilées à l’aide de l’outil GDAL :

http://www.gdal.org/

Les fonds de cartes proviennent du site natural earth data qui proposent des fonds de carte de grande qualité et libres de droit :

http://www.naturalearthdata.com/

Voici un exemple de commande permettant de créer le tuilage de l’image natural_eath_data pour les zooms 0 à 5 :

gdal2tiles.py -p raster -z 0-5 -w all natural_earth_data.jpg

Vecteurs courant

Les vecteurs courant ont été tracés à la souris sous QGIS. Il s'agit d'une numérisation de données à partir de cartes tirées de la littérature, géoréférencées sous QGIS. Ces vecteurs ont été extraits en GeoJSON.

Graphique

Pour créer le graphique de thermocline, les données ont été récupérées sous QGIS à partir du NetCDF relatif à la température. Elles ont été extraites en csv. La bibliothèque JavaScript HighCharts a été utilisée pour sa création.

http://www.highcharts.com/

Formations associées

Formations Front end

Formation Développement d'applications JavaScript

À distance (FOAD) Du 2 au 4 avril 2025

Voir la Formation Développement d'applications JavaScript

Formations SIG / Cartographie

Formation QGIS

Nantes Du 2 au 4 avril 2025

Voir la Formation QGIS

Formations Python

Formation Python avancé

Nantes Du 7 au 11 avril 2025

Voir la Formation Python avancé

Actualités en lien

Récolt’Ô est le lauréat des Trophées Inno­va­tion aux Aqua Busi­ness Days 2024

17/12/2024

L’ap­pli­ca­tion Récolt’Ô de valo­ri­sa­tion de l’eau de pluie remporte les Trophées Inno­va­tion Aqua Busi­ness Days 2024. Avec Récolt’Ô préser­vez votre terri­toire.
Voir l'article
Image
Trophée Aqua Business Days Récolt'Ô

Adapt’Ac­tion : contri­buez au futur de Récolt’Ô, parti­ci­pez au Hacka­thon Open Boos­ter

10/12/2024

Le 30 octobre dernier, Récolt’Ô a été nommé lauréat des Data Chal­­lenges Adapt’Ac­­tion. Pendant les 10 semaines du Hacka­thon à venir, nous unirons nos efforts pour accé­lé­rer le déve­lop­pe­ment de communs numé­riques dédiés à l’adap­ta­tion au chan­ge­ment clima­tique ! 🌱  
Voir l'article
Image
Open booster Hackaton 2024 2025

Gulf Stream Story : récupérer et visualiser des données océanographiques

23/09/2016

Cet article traite des données utilisées dans l'application Gulf Stream Story. Si vous ne l'avez pas encore parcourue, n'hésitez pas à vous rendre sur cette page : https://makinacorpus.github.io/gulf-stream-story/

Toutes les données utilisées sont issues du catalogue Marine Copernicus et au format NetCDF.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus