Base de données CTOH
Structure arborescente de données
Le terme « base de données CTOH » est utilisé au sens large qui correspond en réalité à une structure arboréssente de fichiers (SAF) où les fichiers sont répartie de manière hiérarchique par produit, cycle, sous-produit et trace.
Vue simplifiée de l’organisation de produits en cycles, gdrtypes et fichiers.
Principes de la SAF
La SAF a été construite selon les principes suivants :
le point d’entrée à la SAF est un fichier catalogue qui se trouve à un endroit référencé par la variable d’environnement $GDR (/ctoh/data/db)
le catalogue décrit un ensemble de produits disponibles ;
chaque utilisateur peut définir un ou plusieurs catalogues propres à lui combinant des données de la SAF à la gestion de ces propres produits de recherche, en beta-test. Quand ils sont prêts, ils intègrent le catalogue général ;
un produit est, virtuellement, un fichier netCDF et il est définit par le nom du produit, son cycle et son numéro de trace.
chaque produit à un chemin de données associé, des gdrtypes, et des conventions de nommage.
en réalité, le fichier-produit (virtuel) n’existe pas en tant que tel ; il est éclaté en plusieurs gdrtypes, chacun étant bien un fichier netCDF. Un fichier-produit est donc l’union potentielle de tous les fichiers gdrtypes. Pour pouvoir faire cette union de fichiers netCDF, les variables de dimensions doivent être identiques pour tous les gdrtypes .
chaque fichier netcdf gdrtype est donc un fichier netCDF complet et il doit pouvoir être visualisé, traité ou mise à jour de façon indépendante des autres.
les droits d’accès aux fichiers sont ceux des fichiers unix. En pratique, pour accéder aux produits qui sont stockés sur /ctoh/data/db il faut appartenir au groupe unix ctoh, et idem pour usrcto. Le groupe ctoh est un sous-ensemble de usrcto.
Catalogues de données
Il y a plusieurs catalogues décrivant la SAF:
Générale : Disponible à tous. Il est par défaut définit avec la variable d’environnement ALT_CATALOGUE
> echo $ALT_CATALOGUE > ALT_CATALOGUE=/ctoh/data/db/catalogue_yml/ctoh_products_base.yml
Personnalisée : Créer par l’utilisateur sur la base du catalogue générale contenant des produits en phase beta ou enrichi de sous produits pour des besoins spécifiques. Dans ce cas la variable d’environnement ALT_CATALOGUE doit défini par l’utilisateur
> export ALT_CATALOGUE=/user/path/catalogue/custom_products_base.yml > echo $ALT_CATALOGUE > ALT_CATALOGUE=/user/path/catalogue/custom_products_base.yml
Services
Droits d’accès à la base
Les produits de la SAF
Le contenu des produits de la SAF CTOH se trouve dans :
/ctoh/data/db/products
La liste des répertoires de produits disponibles en base est la suivante:
cs2_b_gop_c_gdr/ ja1_a_cnes_e_gdr/ s3a_a_lan_%_sgdr/
cs2_b_ice_d_gdr/ ja1_b_cnes_e_gdr/ s3a_a_wat_%_sgdr/
env_a_ctoh_v0210_gdr/ ja1_c_cnes_e_gdr/ s3b_a_lan_%_sgdr/
env_a_esa_v0300_sgdr/ ja2_a_cnes_d_gdr/ s3b_a_wat_%_sgdr/
env_b_ctoh_v0210_gdr/ ja2_b_cnes_d_gdr/ s3b_b_lan_%_sgdr/
env_b_esa_v0300_sgdr/ ja3_a_cnes_%_sgdr/ s3b_b_wat_%_sgdr/
ers2_a_ctoh_v0100_gdr/ ja3_a_cnes_f_sgdr/ srl_a_cnes_%_sgdr/
ers2_a_reaper_v0108_gdr/ ja3_a_cnes_%_sigdr/ srl_b_cnes_%_sgdr/
ers2_a_reaper_v0108_sgdr/ srl_b_cnes_%_sigdr/
tpx_a_cash_v0100_gdr/
Convention de nommage des produits
Chaque produit est identifié par un nom unique comportant 5 champs:
“mission_phase_fournisseur_version_type”
détaillés ici:
- mission:
Le nom de la mission (en abrégé: ja1 pour jason-1, etc)
- phase:
phase d’orbite de la mission (on commence par a, puis b si elle change, etc)
- fournisseur:
Nom de l’organisme ayant traité/fournis les données (cnes,esa,ctoh), cela peut être aussi le nom d’un projet (cash, reaper).
- version:
version du produit si homogène (« e » pour GDR-E ou « v0210 » pour version 2.1) sinon le caractère % est utilisé (mélange de version).
- type:
le type de produit d’origine (gdr, sgdr, sigdr).
Cette convention de nommage est définie une expression regex dans le fichier
catalogue sous le paramètre prod_name_pattern.
Par exemple, le produit ja3_a_cnes_%_sgdr.
ja3_a_cnes_%_sgdr : Il décrit le produit de la mission Jason-3 en phase A (orbite nominale) fourni par le CNES. Le symbole % indique que la version du produit n’est pas homogène (mélange GDR-D et GDR-f) et pour finir le type du produit : sgdr.
SAF du produit ja3_a_cnes_%_sgdr
L’exemple ci dessous, montre la structure du produit ja3_a_cnes_%_sgdr dans la base de données du CTOH. Le premier niveau de l’arborescence est le nom du produit, dans le deuxième niveau sont les cycles d’orbite et le troisième niveau sont les paramètres de type (définis par gdrtypes). Le type principale est fournis par les agences spatiales : ceux sont les paramètres d’origines (gdr ou sgdr). Sans ces paramètres origines, le produit ne peut exister.
Les autres types de paramètres (gdrtypes) tels que ctoh2 et normpass, sont des paramètres complémentaires ajoutés par le CTOH dans sa base de données. Dans ces répertoires gdrtypes se trouvent les fichiers NetCDF de paramètres type.
ja3_a_cnes_%_sgdr # Nom du produit dans la base de données CTOH
├── cycle_000 # Numéro du cycle
│ ├── sgdr # Produit sgdr original
│ │ ├── JA3_GPS_2PTP000_118_20160212_020721_20160212_030333.nc
│ │ ├── JA3_GPS_2PTP000_120_20160212_035946_20160212_045559.nc
│ │ ├── JA3_GPS_2PTP000_122_20160212_055212_20160212_064825.nc
│ │ └── ...
│ │
│ ├── ctoh2 # Paramètres CTOH complémentaires ajoutés au produit sgdr original
│ │ ├── ctoh2_JA3_GPS_2PTP000_118_20160212_020721_20160212_030333.nc
│ │ ├── ctoh2_JA3_GPS_2PTP000_120_20160212_035946_20160212_045559.nc
│ │ ├── ctoh2_JA3_GPS_2PTP000_127_20160212_103316_20160212_112929.nc
│ │ └── ...
│ │
│ │
│ ├── normpass # Paramètres CTOH complémentaires ajoutés au produit sgdr original
│ │ ├── normpass_JA3_GPS_2PTP000_118_20160212_020721_20160212_030333.nc
│ │ ├── normpass_JA3_GPS_2PTP000_120_20160212_035946_20160212_045559.nc
│ │ ├── normpass_JA3_GPS_2PTP000_122_20160212_055212_20160212_064825.nc
│ │ └── ...
│
├── cycle_001
│ ├── ctoh2
│ ├── gdr
│ ├── gpd
│ └── normpass
├── cycle_002
│ ├── ctoh2
│ ├── gdr
│ ├── gpd
│ └── normpass
├── ...
.
.
Les sous-produits (gdrtype)
Le contenu du produit est organisé par cycle et par sous produit (aussi appelé gdrtype). Il existe plusieurs types de sous produit. Le principal est de type gdr, sgdr ou sigdr. Il est fourni par les agences spatiales et contient les paramètres originaux de la mesure altimètrique.
Les autres types complètent ce produit type de base pour fournir des paramètres et des corrections complémentaires afin d’avoir des produits les plus homogènes et à jour possible.
Voici les types de sous produit que l’on peut trouver:
- CTOH1:
corrections complémentaires atmosphériques et de marée calculés à 1 Hz,
- CTOH2:
paramètres complémentaires interpolés provenant de données grillées (distance à la cote, géoïde, mdt,mss, etc).
- GPD:
correction complémentaire de troposphère humide et sèche fournie par J Fernandez de l’université de Porto.
- Normpass:
paramètres d’indexation calculés le long de la trace, permettant la création de la structure de trace normalisée pour l’analyse colinéaire de données altimétrique
- Meanpass:
traces moyennes du produit calculées avec les traces normalisées
Avertissement
Les fichiers de données sont au format NetCDF. Mais ils ne sont pas tous de la même version : netCDF3, netCDF4 classic model ou netCDF4/HDF-5.
Fichiers de configuration de la SAF
La base de données utilise deux types fichiers de configuration. Le premier décrit la SAF de la base de données : le fichier catalogue. Le deuxième décrit les produits : les fichiers de description de produit.
Le catalogue
Le fichier catalogue liste les produits disponibles en base de données. Ci-dessous le catalogue de la base de données du CTOH (/ctoh/data/db/catalogue/ctoh_products_base.yml)
# Description of the CTOH DATA BASE
prod_name_pattern : (?P<alias_mission>[a-z,0-9]*)_(?P<orbit_phase>[a-z]{1})_(?P<supplier>[a-z]*)_(?P<version>[a-z,0-9]*|%)_(?P<type>[a-z]*) # Regex pattern of product name
default_path: /ctoh/data/db/products # common absolute path
products:
ja3_a_cnes_f_sgdr : /ctoh/data/db/catalogue_yml/current/ja3_a_cnes_f_sgdr.yml
ja3_a_cnes_%_sgdr : /ctoh/data/db/catalogue_yml/current/ja3_a_cnes_%_sgdr.yml
ja2_a_cnes_d_sgdr : /ctoh/data/db/catalogue_yml/current/ja2_a_cnes_d_sgdr.yml
ja2_b_cnes_d_sgdr : /ctoh/data/db/catalogue_yml/current/ja2_b_cnes_d_sgdr.yml
ja2_c_cnes_d_sgdr : /ctoh/data/db/catalogue_yml/current/ja2_c_cnes_d_sgdr.yml
ja2_d_cnes_d_sgdr : /ctoh/data/db/catalogue_yml/current/ja2_d_cnes_d_sgdr.yml
ja1_a_cnes_e_gdr : /ctoh/data/db/catalogue_yml/current/ja1_a_cnes_e_gdr.yml
ja1_b_cnes_e_gdr : /ctoh/data/db/catalogue_yml/current/ja1_b_cnes_e_gdr.yml
ja1_c_cnes_e_gdr : /ctoh/data/db/catalogue_yml/current/ja1_c_cnes_e_gdr.yml
srl_a_cnes_f_sgdr : /ctoh/data/db/catalogue_yml/current/srl_a_cnes_f_sgdr.yml
srl_b_cnes_f_sgdr : /ctoh/data/db/catalogue_yml/current/srl_b_cnes_f_sgdr.yml
ers2_a_ctoh_v0100_gdr : /ctoh/data/db/catalogue_yml/current/ers2_a_ctoh_v0100_gdr.yml
ers2_a_reaper_v0108_gdr : /ctoh/data/db/catalogue_yml/current/ers2_a_reaper_v0108_gdr.yml
ers2_a_reaper_v0108_sgdr : /ctoh/data/db/catalogue_yml/current/ers2_a_reaper_v0108_sgdr.yml
env_a_ctoh_v0210_gdr : /ctoh/data/db/catalogue_yml/current/env_a_ctoh_v0210_gdr.yml
env_b_ctoh_v0210_gdr : /ctoh/data/db/catalogue_yml/current/env_b_ctoh_v0210_gdr.yml
env_a_esa_v0300_sgdr : /ctoh/data/db/catalogue_yml/current/env_a_esa_v0300_sgdr.yml
env_b_esa_v0300_sgdr : /ctoh/data/db/catalogue_yml/current/env_b_esa_v0300_sgdr.yml
s3a_a_lan_%_sgdr : /ctoh/data/db/catalogue_yml/current/s3a_a_lan_%_sgdr.yml
s3b_a_lan_%_sgdr : /ctoh/data/db/catalogue_yml/current/s3b_a_lan_%_sgdr.yml
s3b_b_lan_%_sgdr : /ctoh/data/db/catalogue_yml/current/s3b_b_lan_%_sgdr.yml
s3a_a_wat_%_sgdr : /ctoh/data/db/catalogue_yml/current/s3a_a_wat_%_sgdr.yml
s3b_a_wat_%_sgdr : /ctoh/data/db/catalogue_yml/current/s3b_a_wat_%_sgdr.yml
s3b_b_wat_%_sgdr : /ctoh/data/db/catalogue_yml/current/s3b_b_wat_%_sgdr.yml
cs2_b_ice_d_gdr : /ctoh/data/db/catalogue_yml/current/cs2_b_ice_d_gdr.yml
cs2_b_gop_c_gdr : /ctoh/data/db/catalogue_yml/current/cs2_b_gop_c_gdr.yml
Les champs du fichier catalogue sont définis par :
Fichier de description
Le fichier de description du produits détaille le contenu du produit. Ci-dessous un exemple du produit ja2_a_cnes_d_sgdr:
name : ja2_a_cnes_d_sgdr
mission : Jason-2
orbit_phase : A
provider : CNES
product_version : GDR-D, SGDR
doc :
product_prefix : ja2_a_cnes_d_sgdr/
cycle_prefix : cycle_\d{3}/
gdrtype_prefix :
sgdr : sgdr/JA2_GPS_
normpass: normpass/normpass_JA2_GPS_
file_postfix : (?P<mission>JA2)_GPS_2P(?P<baseline_collection>[A-Z,a-z])P(?P<cycle>\d{3})_(?P<pass>\d{3})_\d{4}[01]\d[0-3]\d_[0-2]\d[0-5]\d[0-5]\d_\d{4}[01]\d[0-3]\d_[0-2]\d[0-5]\d[0-5]\d\.nc
ref_gdr : sgdr
meanpass_dir :
dims_alias: # ^(?P<freq>lf|hf)_dim(?P<suffix>.*) --> exemples: lf_dim, hf_dim_ku, hf_dim_c, hf_dim_sar_ku, hf_dim_lrm_ku, etc.
lf_dim : time
wf_dims_alias:
meas_ind: meas_ind
wf_sample: wvf_ind
coords_alias :
time:
lon: lon
lat: lat
time: time
coords_alias_2d : # Product having coordinates parameters in 2d (time versus meas_ind)
time_hf :
lon : lon_20hz
lat : lat_20hz
time : time_20hz
aliases: etc/ctoh_aliases_jason2d.desc # Gridded tracks (for regional access optimization)
tracksgrid: etc/tracksgrid/
orbit: topex
ellipsoid:
'name': 'TP'
'a': 6378136.30
'f': 1/298.257
Ci-dessous le détail des différents champs:
L’identité du produit
- name:
Nom du produit conformément à la nomenclature décrite ici
- mission:
Nom de la mission
- orbit_phase:
Phase d’orbite. La premère est désigné par A, puis le suivante par B, … Ainsi de suite.
- provider:
L’organisme qui a créé le produit (ex : ctoh, cnes, esa, etc). Cela peut aussi être une désignation (ex: lan, wat, GOP, ice, etc)
- product_version:
Un paramétre qui défini la version du produit.
- doc:
Element de documentation
Accès au données.
Ces champs décrivent la structure arboresente du produit dans la base.
- product_prefix:
Le nom du répertoire du produit. Il est normalement identique au nom du produit.
- cycle_prefix:
Le nom du répertoire du cycle. Par défaut, il doit être : cycle_d{3}
- gdrtype_prefix:
La liste de gdrtype. Cette liste contient en premier lieu le produit altimètrique GDR (ou SGDR) de base. La clé doit être définit par gdr ou par sgdr et l’attribut correspond au nom du répertoire et du préfixe du fichier :
sgdr : sgdr/JA2_GPS_Puis viennent les paramètres/corrections complémentaires.
normpass: normpass/normpass_JA2_GPS_- file_postfix:
Suffixe fichier format regex avec description. Les champs disponibles si ils existent sont :
start_date : date de début d’acquisition
end_date : date de fin d’acquisition
proc_date : date de traitement
duration : durée de l’acquisition
relative_orbit : orbite relative
cycle : numéro de cycle
pass : numéro de trace
product_generating_center : organisme de traitement
platform : classe operationnel/validation/reprocessing
processing_workflow : type de traitement (gdr, igdr, ntc, stc)
baseline_collection : version de produit
mode : mode instrumental LRM/SAR/SARin (sar, lrm, hf, lf, etc)
Exemple :
file_pattern : (?P<mission>JA2)_GPS_2P(?P<baseline_collection>[A-Z,a-z])P(?P<cycle>\d{3})_(?P<pass>\d{3})_\d{4}[01]\d[0-3]\d_[0-2]\d[0-5]\d[0-5]\d_\d{4}[01]\d[0-3]\d_[0-2]\d[0-5]\d[0-5]\d\.nc- ref_gdr:
spécifie le nom gdrtype du produit altimétrique de base (reférence)
- meanpass_dir:
chemin complet du répertoire de meanpass
- dbfs_file:
fichier dbfs. Il est généré avec la commande
alt_dbfs <produc_name>- metadata_file:
fichier de métadonnées. Il est généré avec la commande
alt_metadata <produc_name>Structuration des données
- dims_alias:
liste les dimensions du produit. Chaque dimension est défini par une clé et une valeur. Le nom de la clé doit suivre une convention de nomage ^(?P<freq>lf|hf)_dim(?P<suffix>.*) –> exemples: lf_dim, hf_dim_ku, hf_dim_c, hf_dim_sar_ku, hf_dim_lrm_ku, etc. La value est le nom du paramètre de dimension du fichier GDR.
lf_dim : time- wf_dims_alias:
liste les dimensions de forme d’onde.
meas_ind: meas_ind wf_sample: wvf_ind- coords_alias:
liste les coordonnées associées au dimension défini dans dims_alias
time: lon: lon lat: lat time: time- coords_alias_2d:
Pour les produits ayant des paramètres haute fréquence en 2 dimension (time versus meas_ind).
time_hf : lon : lon_20hz lat : lat_20hz time : time_20hz