Pour commencer rapidement
Ici des exemples basic pour créer des structures de données PyCTOH (Track, Grid et TimeSeries) :
Lire un fichier GDR
Pour créer un objet Track à partir d’un fichier trace GDR il faut utiliser la fonction read_product qui appelle le constructor approprié au type de produit fourni par le CTOH.
- track_obj=read_product(filename, product_kind=None, memory_optimization=True, decode_times=True, no_maskedarray=True)
- Paramètres:
filename – Nom du fichier GDR.
product_kind – Type de produit. Les types de produit définis dans la bibliothèque PyCTOH. Ils sont disponibles via la fonction **idproduct()** (lien vers cette fonction). Egale à None par défaut, la fonction product_factory recherche automatiquement le type de produit en fonction du nom du fichier GDR.
memory_optimization – Optimisation de la mémoire. Egale à True par défaut, cette option permet de choisir, à la lecture du fichier netCDF, le type (numpy.dtype) le mieux approprié aux variables ayant des attributs “scale_factor” et/ou “add_offset”. Sinon ces variables sont toutes définies en type numpy.dtype(“float64”).
decode_times – Décodage de la variable time en un objet Datetime. Egale à True par défaut, cette option permet de convertir, à la lecture du fichier netCDF, la variable time de type “float64” en un type “datatime64[ms]”. Pour cela les attributs « units » et « calendar » de la variable time doit être défini suivant la convention-CF.
no_maskedarray – Pas d’objet numpy.ma.MaskedArray. Egale à True par défaut, cette option permet de convertir, à la lecture du fichier netCDF, les variables numpy.ma.MaskedArray de type “float” en varaibles numpy.ndarray de type “float”. La valeur numpy.nan est affectée à toutes les valeurs masquées (masked). Toutes les variables qui ne sont pas de type “float” restent numpy.ma.MaskedArray.
Exemples d’utilisation
Création d’un objet Track à partir d’un fichier GDR trace Jason-3 fourni par le CTOH. Dans ce cas le type de produit est automatiquement reconnu par le nom du fichier telque défini par le CTOH.
>>> from pyctoh.track import read_product
>>> filename = "test_data/JA3_GPS_2PfP031_009_20161211_051419_20161211_061031.nc"
>>> track_obj = read_product(filename)
Dans le cas où le nom du fichier n’est pas conforme au type de produit CTOH, le type peut être « forcé » avec l’option product_kind. La liste des types est fournie par la fonction get_producttype(). Ici, est choisi jason_f pour définir le fichier GDR comme produit de type jason GDR-F.
>>> from pyctoh.track import get_producttype
>>> get_producttype()
['topex_cash',
'cryosat2_c',
'cryosat2_d',
'ers2_ctoh',
'envisatv21_ctoh',
'envisatv3_esa',
'jason_d',
'jason_e',
'jason_f',
'saral_t',
'saral_f',
'sentinel3_b003',
'sentinel6_f']
>>> filename = "test_data/JA3_GPS_2PfP031_009_20161211_051419_20161211_061031.nc"
>>> track_obj = read_product(filename,product_kind='jason_f')
Plus de détailles sur l’objet Track.
Accès à la base de données
L’accès aux données de la base du CTOH se fait via la méthode query_product de la classe Catalogue. Cette méthode envoie une requête à la base de données et retourne un objet Track.
- track_obj = Catalogue.query_product(product_name, track_num, cycle_num, memory_optimization=True, decode_times=True, no_maskedarray=True)
- Paramètres:
product_name – Nom du produit défini dans la catalogue de la base de données. La liste des produits disponibles est fournie avec la méthode product_list() de la classe Catalogue.
track_num – Numéro de la trace. La liste des numéros de traces disponibles est fournie avec la méthode product_cycle_track() de la classe Catalogue.
cycle_num – Numéro du cycle. Idem que pour track_num.
Les autres options sont les mêmes que pour la fonction read_product
Exemples d’utilisation
Création d’un objet Track à partir d’une requête à la base de données CTOH. Ici le cas du produit Jason-3 GDR-F (ja3_a_cnes_f_sgdr) avec la trace numéro 200 et le cycle 150.
>>> # Import de la classe 'Catalogue'
>>> from pyctoh.db.catalogue import Catalogue
>>> # Selection du catalogue CTOH
>>> cat = Catalogue(os.environ["ALT_CATALOGUE"])
>>> # Requête trace 200 cycle 150 du produit 'ja3_a_cnes_f_sgdr'
>>> track_obj = cat.query_product('ja3_a_cnes_f_sgdr', 200, 150)