591 lines
16 KiB
Plaintext
591 lines
16 KiB
Plaintext
|
|
# * Format of the rules is:
|
|
|
|
# [a1, a2, a3 ...[b1, b2, b3... [c1, c2, c3...]]]
|
|
|
|
# - The first level (a) defines which attributes are used to name the top level directory
|
|
# - The second level (b) defines which attributes are used to name the data files
|
|
# - The third level (c) defines which attributes are used as index keys
|
|
|
|
# * Rules can be grouped
|
|
|
|
# [a1, a2, a3 ...
|
|
# [b1, b2, b3... [c1, c2, c3...]]
|
|
# [B1, B2, B3... [C1, C2, C3...]]
|
|
# ]
|
|
|
|
# * A list of values can be given for an attribute
|
|
# [ ..., stream=enfo/efov, ... ]
|
|
# This will be used when matching rules.
|
|
|
|
# * Attributes can be typed
|
|
# Globally, at the begining of this file:
|
|
|
|
# refdate: Date;
|
|
|
|
# or in the context of a rule:
|
|
# [type=cl, ... [date:ClimateMonth, ...]]
|
|
|
|
# Typing attributes is done when the user's requests or the GRIB values need to be modified before directories, files and indexes are created. For example, ClimateMonth will transform 2010-04-01 to 'may' internally.
|
|
|
|
# * Attributes can be optional
|
|
# [ step, levelist?, param ]
|
|
# They will be replaced internally by an empty value. It is also posiible to provide a default subtitution value: e.g. [domain?g] will consider the domain to be 'g' if missing.
|
|
|
|
# * Attributes can be removed:
|
|
# [grid-]
|
|
# This is useful to remove attributes present in the GRIB that should not be ignored
|
|
|
|
# * Rules are matched:
|
|
|
|
# - If the attributes are present in the GRIB/Request, or marked optional or ignored
|
|
# - If a list of possible value is provided, one of them must match, for example
|
|
# [ class, expver, stream=enfo/efov, date, time, domain ]
|
|
# will match either stream=enfo or stream=efov, all other attributes will be matched if they exist in the GRIB or user's request
|
|
|
|
# * On archive:
|
|
# - Attributes are extracted from the GRIB (namespace 'mars'), possibly modified by the attribute type
|
|
# - Only the first rule is used, so order is important
|
|
# - All GRIB attributes must be used by the rules, otherwise an error is raised
|
|
|
|
# * On retrieve:
|
|
# - Attributes are extracted from the user's request, possibly modified by the attribute type (e.g. for handling of U/V)
|
|
# - All the matching rules are considered
|
|
# - Only attributes listed in the rules are used to extract values from the user's request
|
|
|
|
|
|
# Default types
|
|
|
|
param: Param;
|
|
step: Step;
|
|
date: Date;
|
|
hdate: Date;
|
|
refdate: Date;
|
|
latitude: Double;
|
|
longitude: Double;
|
|
levelist: Double;
|
|
grid: Grid;
|
|
expver: Expver;
|
|
|
|
time: Time;
|
|
fcmonth: Integer;
|
|
|
|
number: Integer;
|
|
frequency: Integer;
|
|
direction: Integer;
|
|
channel: Integer;
|
|
|
|
instrument: Integer;
|
|
ident: Integer;
|
|
|
|
diagnostic: Integer;
|
|
iteration: Integer;
|
|
system: Integer;
|
|
method: Integer;
|
|
|
|
# ???????
|
|
|
|
# reference: Integer;
|
|
# fcperiod: Integer;
|
|
|
|
# opttime: Integer;
|
|
# leadtime: Integer;
|
|
|
|
# quantile: ??????
|
|
# range: ??????
|
|
|
|
# band: Integer;
|
|
|
|
|
|
########################################################
|
|
# These rules must be first, otherwise fields of These
|
|
# classes will be index with the default rule for oper
|
|
[ class=ti/s2, expver, stream, date, time, model
|
|
[ origin, type, levtype, hdate?
|
|
[ step, number?, levelist?, param ]]
|
|
]
|
|
|
|
[ class=ms, expver, stream, date, time, country=de
|
|
[ domain, type, levtype, dbase, rki, rty, ty
|
|
[ step, levelist?, param ]]
|
|
]
|
|
|
|
[ class=ms, expver, stream, date, time, country=it
|
|
[ domain, type, levtype, model, bcmodel, icmodel:First3
|
|
[ step, levelist?, param ]
|
|
]
|
|
]
|
|
|
|
[ class=el, expver, stream, date, time, domain
|
|
[ origin, type, levtype
|
|
[ step, levelist?, param ]]
|
|
]
|
|
|
|
########################################################
|
|
# The are the rules matching most of the fields
|
|
# oper/dcda
|
|
[ class, expver, stream=oper/dcda/scda, date, time, domain?
|
|
|
|
[ type=im/sim
|
|
[ step?, ident, instrument, channel ]]
|
|
|
|
[ type=ssd
|
|
[ step, param, ident, instrument, channel ]]
|
|
|
|
[ type=4i, levtype
|
|
[ step, iteration, levelist, param ]]
|
|
|
|
[ type=me, levtype
|
|
[ step, number, levelist?, param ]]
|
|
|
|
[ type=ef, levtype
|
|
[ step, levelist?, param, channel? ]]
|
|
|
|
[ type=ofb/mfb
|
|
[ obsgroup, reportype ]]
|
|
|
|
[ type, levtype
|
|
[ step, levelist?, param ]]
|
|
|
|
]
|
|
|
|
# dcwv/scwv/wave
|
|
[ class, expver, stream=dcwv/scwv/wave, date, time, domain
|
|
[ type, levtype
|
|
[ step, param, frequency?, direction? ]]]
|
|
|
|
# enfo
|
|
[ class, expver, stream=enfo/efov, date, time, domain
|
|
|
|
[ type, levtype=dp, product?, section?
|
|
[ step, number?, levelist?, latitude?, longitude?, range?, param ]]
|
|
|
|
[ type=tu, levtype, reference
|
|
[ step, number, levelist?, param ]]
|
|
|
|
[ type, levtype
|
|
[ step, quantile?, number?, levelist?, param ]]
|
|
|
|
]
|
|
|
|
# waef/weov
|
|
[ class, expver, stream=waef/weov, date, time, domain
|
|
[ type, levtype
|
|
[ step, number?, param, frequency?, direction? ]]
|
|
]
|
|
|
|
########################################################
|
|
# enda
|
|
[ class, expver, stream=enda, date, time, domain
|
|
|
|
[ type=ef/em/es/ses, levtype
|
|
[ step, number?, levelist?, param, channel? ]]
|
|
|
|
[ type=ssd
|
|
[ step, number, param, ident, instrument, channel ]]
|
|
|
|
|
|
[ type, levtype
|
|
[ step, number?, levelist?, param ]]
|
|
]
|
|
|
|
# ewda
|
|
[ class, expver, stream=ewda, date, time, domain
|
|
[ type, levtype
|
|
[ step, number?, param, frequency?, direction? ]]
|
|
]
|
|
|
|
|
|
########################################################
|
|
# elda
|
|
[ class, expver, stream=elda, date, time, domain?
|
|
|
|
[ type=ofb/mfb
|
|
[ obsgroup, reportype ]]
|
|
|
|
[ type, levtype, anoffset
|
|
[ step, number?, levelist?, iteration?, param, channel? ]]
|
|
]
|
|
|
|
# ewda
|
|
[ class, expver, stream=ewla, date, time, domain
|
|
[ type, levtype, anoffset
|
|
[ step, number?, param, frequency?, direction? ]]
|
|
]
|
|
|
|
########################################################
|
|
# elda
|
|
[ class, expver, stream=lwda, date, time, domain?
|
|
|
|
[ type=ssd, anoffset
|
|
[ step, param, ident, instrument, channel ]]
|
|
|
|
[type=me, levtype, anoffset
|
|
[ number, step, levelist?, param]]
|
|
|
|
[ type=4i, levtype, anoffset
|
|
[ step, iteration, levelist, param ]]
|
|
|
|
[ type=ofb/mfb
|
|
[ obsgroup, reportype ]]
|
|
|
|
[ type, levtype, anoffset
|
|
[ step, levelist?, param]]
|
|
]
|
|
|
|
# ewda
|
|
[ class, expver, stream=lwwv, date, time, domain
|
|
[ type, levtype, anoffset
|
|
[ step, param, frequency?, direction? ]]
|
|
]
|
|
########################################################
|
|
# amap
|
|
[ class, expver, stream=amap, date, time, domain
|
|
[ type, levtype, origin
|
|
[ step, levelist?, param ]]]
|
|
|
|
# maed
|
|
[ class, expver, stream=maed, date, time, domain
|
|
[ type, levtype, origin
|
|
[ step, levelist?, param ]]]
|
|
|
|
# mawv
|
|
[ class, expver, stream=mawv, date, time, domain
|
|
[ type, levtype, origin
|
|
[ step, param, frequency?, direction? ]]]
|
|
|
|
# cher
|
|
[ class, expver, stream=cher, date, time, domain
|
|
[ type, levtype
|
|
[ step, levelist, param ]]]
|
|
|
|
|
|
# efhc
|
|
[ class, expver, stream=efhc, refdate, time, domain
|
|
[ type, levtype, date
|
|
[ step, number?, levelist?, param ]]]
|
|
|
|
# efho
|
|
[ class, expver, stream=efho, date, time, domain
|
|
[ type, levtype, hdate
|
|
[ step, number?, levelist?, param ]]]
|
|
|
|
|
|
# efhs
|
|
[ class, expver, stream=efhs, date, time, domain
|
|
[ type, levtype
|
|
[ step, quantile?, number?, levelist?, param ]]]
|
|
|
|
# wehs
|
|
[ class, expver, stream=wehs, date, time, domain
|
|
[ type, levtype
|
|
[ step, quantile?, number?, levelist?, param ]]]
|
|
|
|
# kwbc
|
|
[ class, expver, stream=kwbc, date, time, domain
|
|
[ type, levtype
|
|
[ step, number?, levelist?, param ]]]
|
|
|
|
# ehmm
|
|
[ class, expver, stream=ehmm, date, time, domain
|
|
[ type, levtype, hdate
|
|
[ fcmonth, levelist?, param ]]]
|
|
|
|
|
|
# ammc/cwao/edzw/egrr/lfpw/rjtd/toga
|
|
[ class, expver, stream=ammc/cwao/edzw/egrr/lfpw/rjtd/toga/fgge, date, time, domain
|
|
[ type, levtype
|
|
[ step, levelist?, param ]]]
|
|
|
|
########################################################################
|
|
|
|
# enfh
|
|
[ class, expver, stream=enfh, date, time, domain
|
|
|
|
[ type, levtype=dp, hdate, product?, section?
|
|
[ step, number?, levelist?, latitude?, longitude?, range?, param ]]
|
|
|
|
[ type, levtype, hdate
|
|
[ step, number?, levelist?, param ]]
|
|
]
|
|
|
|
# enwh
|
|
[ class, expver, stream=enwh, date, time, domain
|
|
[ type, levtype, hdate
|
|
[ step, number?, param, frequency?, direction? ]]
|
|
]
|
|
|
|
########################################################################
|
|
# sens
|
|
[ class, expver, stream=sens, date, time, domain
|
|
[ type, levtype
|
|
[ step, diagnostic, iteration, levelist?, param ]]]
|
|
|
|
########################################################################
|
|
# esmm
|
|
[ class, expver, stream=esmm, date, time, domain
|
|
[ type, levtype
|
|
[ fcmonth, levelist?, param ]]]
|
|
# ewhc
|
|
[ class, expver, stream=ewhc, refdate, time, domain
|
|
[ type, levtype, date
|
|
[ step, number?, param, frequency?, direction? ]]]
|
|
|
|
########################################################################
|
|
# ewho
|
|
[ class, expver, stream=ewho, date, time, domain
|
|
[ type, levtype, hdate
|
|
[ step, number?, param, frequency?, direction? ]]]
|
|
|
|
# mfam
|
|
[ class, expver, stream=mfam, date, time, domain
|
|
|
|
[ type=pb/pd, levtype, origin, system?, method
|
|
[ fcperiod, quantile, levelist?, param ]]
|
|
|
|
[ type, levtype, origin, system?, method
|
|
[ fcperiod, number?, levelist?, param ]]
|
|
|
|
]
|
|
|
|
# mfhm
|
|
[ class, expver, stream=mfhm, refdate, time, domain
|
|
[ type, levtype, origin, system?, method, date?
|
|
[ fcperiod, number?, levelist?, param ]]]
|
|
# mfhw
|
|
[ class, expver, stream=mfhw, refdate, time, domain
|
|
[ type, levtype, origin, system?, method, date
|
|
[ step, number?, param ]]]
|
|
# mfwm
|
|
[ class, expver, stream=mfwm, date, time, domain
|
|
[ type, levtype, origin, system?, method
|
|
[ fcperiod, number, param ]]]
|
|
# mhwm
|
|
[ class, expver, stream=mhwm, refdate, time, domain
|
|
[ type, levtype, origin, system?, method, date
|
|
[ fcperiod, number, param ]]]
|
|
|
|
# mmsf
|
|
[ class, expver, stream=mmsf, date, time, domain
|
|
|
|
[ type, levtype=dp, origin, product, section, system?, method
|
|
[ step, number, levelist?, latitude?, longitude?, range?, param ]]
|
|
|
|
[ type, levtype, origin, system?, method
|
|
[ step, number, levelist?, param ]]
|
|
]
|
|
|
|
# mnfc
|
|
[ class, expver, stream=mnfc, date, time, domain
|
|
|
|
[ type, levtype=dp, origin, product, section, system?, method
|
|
[ step, number?, levelist?, latitude?, longitude?, range?, param ]]
|
|
|
|
[ type, levtype, origin, system?, method
|
|
[ step, number?, levelist?, param ]]
|
|
]
|
|
|
|
# mnfh
|
|
[ class, expver, stream=mnfh, refdate, time, domain
|
|
[ type, levtype=dp, origin, product, section, system?, method, date
|
|
[ step, number?, levelist?, latitude?, longitude?, range?, param ]]
|
|
[ type, levtype, origin, system?, method, date?
|
|
[ step, number?, levelist?, param ]]
|
|
]
|
|
|
|
# mnfm
|
|
[ class, expver, stream=mnfm, date, time, domain
|
|
[ type, levtype, origin, system?, method
|
|
[ fcperiod, number?, levelist?, param ]]]
|
|
|
|
# mnfw
|
|
[ class, expver, stream=mnfw, date, time, domain
|
|
[ type, levtype, origin, system?, method
|
|
[ step, number?, param ]]]
|
|
|
|
# ea/mnth
|
|
[ class=ea, expver, stream=mnth, date, domain
|
|
[ type, levtype
|
|
[ time, step?, levelist?, param ]]]
|
|
|
|
# mnth
|
|
[ class, expver, stream=mnth, domain
|
|
[ type=cl, levtype
|
|
[ date: ClimateMonthly, time, levelist?, param ]]
|
|
[ type, levtype
|
|
[ date , time, step?, levelist?, param ]]]
|
|
|
|
# mofc
|
|
[ class, expver, stream=mofc, date, time, domain
|
|
[ type, levtype=dp, product, section, system?, method
|
|
[ step, number?, levelist?, latitude?, longitude?, range?, param ]]
|
|
[ type, levtype, system?, method
|
|
[ step, number?, levelist?, param ]]
|
|
]
|
|
|
|
# mofm
|
|
[ class, expver, stream=mofm, date, time, domain
|
|
[ type, levtype, system?, method
|
|
[ fcperiod, number, levelist?, param ]]]
|
|
|
|
# mmsa/msmm
|
|
[ class, expver, stream=mmsa, date, time, domain
|
|
[ type, levtype, origin, system?, method
|
|
[ fcmonth, number?, levelist?, param ]]]
|
|
|
|
[ class, expver, stream=msmm, date, time, domain
|
|
[ type, levtype, origin, system?, method
|
|
[ fcmonth, number?, levelist?, param ]]]
|
|
|
|
# ocea
|
|
[ class, expver, stream=ocea, date, time, domain
|
|
[ type, levtype, product, section, system?, method
|
|
[ step, number, levelist?, latitude?, longitude?, range?, param ]]
|
|
]
|
|
|
|
#=# seas
|
|
[ class, expver, stream=seas, date, time, domain
|
|
|
|
[ type, levtype=dp, product, section, system?, method
|
|
[ step, number, levelist?, latitude?, longitude?, range?, param ]]
|
|
|
|
[ type, levtype, system?, method
|
|
[ step, number, levelist?, param ]]
|
|
]
|
|
|
|
# sfmm/smma
|
|
[ class, expver, stream=sfmm/smma, date, time, domain
|
|
[ type, levtype, system?, method
|
|
[ fcmonth, number?, levelist?, param ]]]
|
|
|
|
# supd
|
|
[ class=od, expver, stream=supd, date, time, domain
|
|
[ type, levtype, origin?, grid
|
|
[ step, levelist?, param ]]]
|
|
|
|
# For era
|
|
[ class, expver, stream=supd, date, time, domain
|
|
[ type, levtype, grid- # The minus sign is here to consume 'grid', but don't index it
|
|
[ step, levelist?, param ]]]
|
|
|
|
# swmm
|
|
[ class, expver, stream=swmm, date, time, domain
|
|
[ type, levtype, system?, method
|
|
[ fcmonth, number, param ]]]
|
|
|
|
# wamf
|
|
[ class, expver, stream=wamf, date, time, domain
|
|
[ type, levtype, system?, method
|
|
[ step, number?, param ]]]
|
|
|
|
# ea/wamo
|
|
[ class=ea, expver, stream=wamo, date, domain
|
|
[ type, levtype
|
|
[ time, step?, param ]]]
|
|
|
|
# wamo
|
|
[ class, expver, stream=wamo, domain
|
|
[ type=cl, levtype
|
|
[ date: ClimateMonthly, time, param ]]
|
|
[ type, levtype
|
|
[ date, time, step?, param ]]]
|
|
|
|
# wamd
|
|
[ class, expver, stream=wamd, date, domain
|
|
[ type, levtype
|
|
[ param ]]]
|
|
|
|
# wasf
|
|
[ class, expver, stream=wasf, date, time, domain
|
|
[ type, levtype, system?, method
|
|
[ step, number, param ]]]
|
|
# wmfm
|
|
[ class, expver, stream=wmfm, date, time, domain
|
|
[ type, levtype, system?, method
|
|
[ fcperiod, number, param ]]]
|
|
|
|
# moda
|
|
[ class, expver, stream=moda, date, domain
|
|
[ type, levtype
|
|
[ levelist?, param ]]]
|
|
|
|
# msdc/mdfa/msda
|
|
[ class, expver, stream=msdc/mdfa/msda, domain
|
|
[ type, levtype
|
|
[ date, time?, step?, levelist?, param ]]]
|
|
|
|
|
|
|
|
# seap
|
|
[ class, expver, stream=seap, date, time, domain
|
|
[ type=sv/svar, levtype, origin, method?
|
|
[ step, leadtime, opttime, number, levelist?, param ]]
|
|
|
|
[ type=ef, levtype, origin
|
|
[ step, levelist?, param, channel? ]]
|
|
|
|
[ type, levtype, origin
|
|
[ step, levelist?, param ]]
|
|
|
|
]
|
|
|
|
[ class, expver, stream=mmaf, date, time, domain
|
|
[ type, levtype, origin, system?, method
|
|
[ step, number, levelist?, param ]]
|
|
]
|
|
|
|
[ class, expver, stream=mmam, date, time, domain
|
|
[ type, levtype, origin, system?, method
|
|
[ fcmonth, number, levelist?, param ]]
|
|
]
|
|
|
|
|
|
[ class, expver, stream=dacl, domain
|
|
[ type=pb, levtype
|
|
[ date: ClimateDaily, time, step, quantile, levelist?, param ]]
|
|
[ type, levtype
|
|
[ date: ClimateDaily, time, step, levelist?, param ]]
|
|
|
|
]
|
|
|
|
[ class, expver, stream=dacw, domain
|
|
[ type=pb, levtype
|
|
[ date: ClimateDaily, time, step, quantile, param ]]
|
|
[ type, levtype
|
|
[ date: ClimateDaily, time, step, param ]]
|
|
|
|
]
|
|
|
|
[ class, expver, stream=edmm/ewmm, date, time, domain
|
|
[ type=ssd
|
|
[ step, number, param, ident, instrument, channel ]]
|
|
[ type, levtype
|
|
[ step, number, levelist?, param ]]
|
|
]
|
|
|
|
[ class, expver, stream=edmo/ewmo, date, domain
|
|
[ type, levtype
|
|
[ number, levelist?, param ]]
|
|
]
|
|
|
|
# stream gfas
|
|
[ class=mc/rd, expver, stream=gfas, date, time, domain
|
|
[ type=ga, levtype
|
|
[ step, param ]]
|
|
|
|
[ type=gsd
|
|
[ param, ident, instrument ]]
|
|
|
|
]
|
|
|
|
# class is e2
|
|
[ class, expver, stream=espd, date, time, domain
|
|
[ type, levtype, origin, grid
|
|
[ step, number, levelist?, param ]]]
|
|
|
|
[ class=cs, expver, stream, date:Default, time, domain
|
|
[ type, levtype
|
|
[ step, levelist?, param ]]]
|
|
|
|
|