Принять, чтобы получить меньше полей, чем запрошено в MARS Web API? - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь загрузить прогноз на 25 дней вперед из веб-API ECMWF MARS для всех 2018 года. Эти прогнозы (WAEF Control Forecast) публикуются только по понедельникам и четвергам, и здесь я сталкиваюсь с проблемами при полученииданные с использованием MARS Web API.

Я пытался запросить интуитивно понятный 2018-01-01/to/2018-12-31, но, поскольку есть 5 дней в неделю, когда нет полей для извлечения, запрос завершается неудачей.

Мой файл запроса MARS выглядит следующим образом:

retrieve,
class=od,
date=2018-01-01/to/2018-12-31,
expver=1,
param=229.140/245.140,
step=600/624/648/672,
stream=waef,
time=00:00:00,
type=cf,
target="output.grib"

Что приводит к следующему ответу:

...
mars - INFO   - 20190215.100826 - Welcome to MARS
mars - INFO   - 20190215.100826 - MARS Client build stamp: 20190130224336
mars - INFO   - 20190215.100826 - MARS Client version: 6.23.3
mars - INFO   - 20190215.100826 - MIR version: 1.1.2
mars - INFO   - 20190215.100826 - Using ecCodes version 2.10.1
mars - INFO   - 20190215.100826 - Using odb_api version: 0.15.9 (file format version: 0.5)
mars - INFO   - 20190215.100826 - Maximum retrieval size is 30.00 G
retrieve,target="output.grib",stream=waef,param=229.140/245.140,padding=0,step=600/624/648/672,expver=1,time=00:00:00,date=2018-01-01/to/2018-12-31,type=cf,class=odmars - WARN   - 20190215.100826 - For wave data, LEVTYPE forced to Surface
mars - INFO   - 20190215.100826 - Automatic split by date is on
mars - INFO   - 20190215.100826 - Request has been split into 12 monthly retrievals

mars - INFO   - 20190215.100826 - Processing request 1

RETRIEVE,
    CLASS      = OD,
    TYPE       = CF,
    STREAM     = WAEF,
    EXPVER     = 0001,
    REPRES     = SH,
    LEVTYPE    = SFC,
    PARAM      = 229.140/245.140,
    TIME       = 0000,
    STEP       = 600/624/648/672,
    DOMAIN     = G,
    TARGET     = "output.grib",
    PADDING    = 0,
    DATE       = 20180101/20180102/20180103/20180104/20180105/20180106/20180107/20180108/20180109/20180110/20180111/20180112/20180113/20180114/20180115/20180116/20180117/20180118/20180119/20180120/20180121/20180122/20180123/20180124/20180125/20180126/20180127/20180128/20180129/20180130/20180131

mars - INFO   - 20190215.100826 - Web API request id: xxx
mars - INFO   - 20190215.100826 - Requesting 248 fields
mars - INFO   - 20190215.100826 - Calling mars on 'marsod', callback on 36551
mars - INFO   - 20190215.100827 - Server task is 228 [marsod]
mars - INFO   - 20190215.100827 - Request cost: 72 fields, 17.2754 Mbytes on 1 tape, nodes: hpss [marsod]
2019-02-15 11:08:59 Request is active
mars - INFO   - 20190215.102300 - Transfering 18114554 bytes
mars - WARN   - 20190215.102301 - Visiting database marsod : expected 248, got 72
mars - ERROR  - 20190215.102301 - Expected 248, got 72.
mars - ERROR  - 20190215.102301 - Request failed
...

Есть ли способ разрешить получение меньшего количества полей, чем запрошено, или любое другое элегантное решение дляэта проблема, кроме запроса только правильных дат по понедельникам и четвергам?

1 Ответ

0 голосов
/ 16 февраля 2019

Мне все-таки удалось найти ответ в документации MARS.Использование expect = any в разделе управления решило проблему.Более подробную информацию можно найти здесь: https://confluence.ecmwf.int/pages/viewpage.action?pageId=43521134

retrieve,
class=od,
date=2018-01-01/to/2018-12-31,
expver=1,
param=229.140/245.140,
step=600/624/648/672,
stream=waef,
time=00:00:00,
type=cf,
expect=any,
target="output.grib"
...