[PYTHON] Convertir le GRIB des coordonnées per-polaires du radar de l'Agence météorologique GPV en netCDF (norme CF / Radial)

TL;DR

Le programme de conversion est placé sur GitHub, veuillez donc le faire à vos propres risques. Veuillez consulter cet article pour la conversion des données de coordonnées polaires du radar météorologique à double polarisation.

introduction

Vous voudrez peut-être utiliser les données radar de l'Agence météorologique (JMA) pour étudier les phénomènes de précipitations. Normalement, GPV d'intensité d'écho de radar synthétique national de maillage de 1 km et [pluviométrie analysée](https: // www. Vous utiliserez souvent des données spatiales bidimensionnelles de précipitations créées en traitant les informations de plusieurs radars tels que data.jma.go.jp/add/suishin/shiyou/pdf/no11601)). Cependant, lorsque vous faites des choses élaborées telles que l'étude de la distribution spatiale tridimensionnelle des précipitations, l'intensité de réflexion est stockée dans la grille de coordonnées polaires pour chaque angle d'élévation centré sur le radar [Données de coordonnées polaires radio](https://www.data. Il est nécessaire de gérer jma.go.jp/add/suishin/shiyou/pdf/no13702).

Ces données sont stockées au format GRIB2 comme les autres données de l'Agence météorologique et sont caractérisées en utilisant les modèles originaux de JMA tels que les modèles 3.50120 et 4.51022 ([Spécification du matériel de distribution n ° 13702]( Voir https://www.data.jma.go.jp/add/suishin/shiyou/pdf/no13702). Par conséquent, lisez et dessinez tel quel avec un logiciel de dessin tel que NCL et GrADS. Vous ne pouvez pas.

Une façon de dessiner est d'utiliser l'exemple de programme dans Site de téléchargement des données du radar de coordination polaire de l'Agence météorologique des NTIC. Cet exemple de programme utilise wgrib2 avec un correctif et un correctif qui vous permettent de lire le propre modèle de JMA sur wgrib2. Inclut un programme C qui convertit les binaires simples qui ont été convertis en coordonnées orthogonales centrées sur le site radar, et un script GrADS qui dessine les données converties.

D'autre part, récemment, des données radar en Python telles que PyART et wradlib Les outils d'analyse deviennent de plus en plus conséquents. Bien sûr, ces outils ne doivent pas lire le GRIB de leur propre modèle, mais convertir les données au format NetCDF de la convention CF / Radial et le lire. J'ai besoin de te laisser. Il semble que personne n'ait publié un tel programme de conversion, alors je l'ai créé.

Que sont les termes CF / radial

Avant d'expliquer les termes CF / radial, vous devez connaître les termes CF. Concernant les règles CF, l'explication du site de M. Toyoda traduction japonaise des règles NetCDF CF Je vais le citer car il est concis.

NetCDF définit le cadre du format de données (tout comme XML). Vous pouvez attribuer à l'ensemble de données une paire nom-valeur appelée attribut, mais vous pouvez écrire n'importe quelle information selon votre consentement, vous devez donc promettre comment l'utiliser, ce qui s'appelle la convention NetCDF. Je vais. Il s'agit d'une traduction japonaise du Code CF, qui est en train de devenir la norme de facto dans le code.

Comme vous pouvez le voir d'après le nom officiel de la convention CF / Radial qui est «Format netCDF compatible CF pour les données de moment pour RADAR et LIDAR en coordonnées radiales», la convention CF n'était pas entièrement prise en charge, de sorte qu'elle puisse être exprimée en coordonnées polaires. C'est une convention qui exprime les données d'observation de divers radars et coureurs.

Il existe deux types de conventions CF / Radial, la série version 1.x (CfRadial1) et la série 2.x (CfRadial2). CfRadial1 est basé sur le modèle de données classique de NetCDF. La première version 1.1 a été formulée en 2011 et la dernière version 1.4 (https://github.com/NCAR/CfRadial/blob/master/docs/CfRadialDoc.v1.4.20160801.pdf) formulée en 2016. Ce sera une version. D'autre part, CfRadial2 utilise NetCDF4 et groupe et n'est pas rétrocompatible avec CfRadial1. La dernière version actuelle de Version 2.0 a été formulée en 2017 et le sera en partie en 2019. Des mises à jour ont été ajoutées. De plus, la version préliminaire Version 2.1 sera publiée en 2019.

Depuis la création récente de CfRadial2, il semble que l'état du support diffère selon l'outil. Concernant PyART, [Issue Reading CF / Radial 2.0 Files # 858](https://github.com/ARM-DOE/pyart/issues/ D'après ce que j'ai lu 858), il semble y avoir des problèmes avec CfRadial2 dans la version officielle, et il semble que des volontaires et des lecteurs compatibles ont été créés. Pour wradlib, pour autant que vous puissiez voir wradlib.io.xarray.CfRadial , CfRadial2 semble être pris en charge. (Ni l'un ni l'autre n'a été confirmé)

Créer un convertisseur

En gros, tout ce que vous avez à faire est de lire Spécifications concernant le matériel de distribution n ° 13702 et d'écrire le code à convertir. Cette fois, comme de nombreux environnements peuvent être utilisés et que la structure est simple, elle est convertie en CF / Radial Version 1.4. J'ai décidé de le faire. J'ai utilisé le package netCDF4 de Python pour créer NetCDF. Voici quelques points.

-Comme vous pouvez le voir dans la section 2.3 de Format de fichier de données CfRadial, la méthode de stockage des données est régulière. Il existe deux types: stockage 2D et stockage 2D échelonné. Le premier est le cas où le nombre de cases dans la direction de la distance est constant quel que soit le temps, et des variables telles que l'intensité de réflexion sont stockées sous la forme d'un tableau bidimensionnel de plage et de temps. Ce dernier cas est le cas où le nombre de cases dans la direction de distance est variable avec le temps, des variables telles que l'intensité de réflexion sont stockées dans un tableau unidimensionnel, et le nombre et la position des cases dans la direction de distance à chaque instant sont stockées dans ray_n_gates et ray_start_index. Dans le cas des données de coordonnées polaires pour chaque radar, le nombre de cases dans la direction de distance est variable en fonction de l'angle d'élévation, j'ai donc décidé d'utiliser le stockage 2D échelonné au début. Cependant, la sortie netCDF n'a pas pu être bien lue par PyART, je l'ai donc définie sur Stockage 2D normal et j'ai rempli la partie sans valeur avec _FillValue.

--Le radar de l'Agence météorologique a été mis à jour séquentiellement depuis 2020, et au moment de la rédaction Mis à jour par Tokyo Radar c'était fait. Le point culminant de cette mise à jour est la double polarisation, mais une amélioration cachée est que le balayage de volume (balayage en trois dimensions à tous les angles d'élévation de haut en bas) prend 10 à 5 minutes. Peut être fait. Étant donné que les données GRIB2 continuent d'être une en 10 minutes, un fichier contiendra deux analyses de volume. Si vous lisez la convention CF / Radial, cela ressemble à un volume par fichier (je ne suis pas sûr que ce soit vrai), vous pouvez donc générer deux netCDF à partir d'un GRIB. J'ai donc rendu possible la découpe en précisant le nombre de données stockées dans GRIB (correspondant à l'angle d'élévation).

Placez le programme de conversion créé sur GitHub sous la licence MIT.

Dessin des données converties

Bien que ce ne soit pas le sujet principal, si vous dessinez un diagramme des données de sortie avec PyART, cela ressemblera à ceci. Il est pratique de pouvoir dessiner un chiffre minimum avec 4 lignes.

draw.py


import matplotlib.pyplot as plt
import pyart

radar = pyart.io.read_cfradial('./work/RS47695.nc')
display = pyart.graph.RadarDisplay(radar)
display.plot('DBZ', sweep=29)
plt.show()

RS47695_29.png

Merci

--M. Kazuya Yamazaki (École supérieure des sciences, Université de Tokyo) a évoqué la méthode de lecture GRIB en Python.

Recommended Posts

Convertir le GRIB des coordonnées per-polaires du radar de l'Agence météorologique GPV en netCDF (norme CF / Radial)
Convertir le GRIB des coordonnées per-polaires du radar de l'Agence météorologique GPV en netCDF (norme CF / Radial)
Téléchargez les données éoliennes de l'Agence météorologique
Lire le fichier GRIB2 de l'Agence météorologique sur pygrib
Téléchargez les données éoliennes de l'Agence météorologique