Browse Source

Show holes in time distribution

master
Michael Uleysky 1 week ago
parent
commit
3d1d6878c3
  1. 24
      actions/actioninfo.h
  2. 3
      doc.txt

24
actions/actioninfo.h

@ -46,6 +46,7 @@ MString ActionInfo_DoAction(const CLArgs& args, D& data)
// Header // Header
message(titCol, ad.Title(), C()); message(titCol, ad.Title(), C());
// All times
{ {
const auto& times = ad.Times(); const auto& times = ad.Times();
@ -61,6 +62,8 @@ MString ActionInfo_DoAction(const CLArgs& args, D& data)
if(uniform) out += ", step is " + timeCol + (times.back() - times.front()).Seconds() / (times.size() - 1) + C() + " s"; if(uniform) out += ", step is " + timeCol + (times.back() - times.front()).Seconds() / (times.size() - 1) + C() + " s";
message(out); message(out);
} }
// Selected times
{ {
const auto times = ad.TimeIndexes() | std::views::transform([&times = ad.Times()](size_t i) { return times[i]; }); const auto times = ad.TimeIndexes() | std::views::transform([&times = ad.Times()](size_t i) { return times[i]; });
@ -75,6 +78,27 @@ MString ActionInfo_DoAction(const CLArgs& args, D& data)
if(!onetime && !uniform) out += ", not uniform"; if(!onetime && !uniform) out += ", not uniform";
if(uniform) out += ", step is " + timeCol + (times.back() - times.front()).Seconds() / (times.size() - 1) + C() + " s"; if(uniform) out += ", step is " + timeCol + (times.back() - times.front()).Seconds() / (times.size() - 1) + C() + " s";
message(out); message(out);
// Holes
if(times.size() > 1 && !uniform && args.contains("showholes"))
{
auto delta = times[1] - times[0];
for(size_t i = 1; i < times.size(); i++) delta = std::min(delta, times[i] - times[i - 1]);
out = "Holes:";
auto time = times[0];
size_t i = 0;
while(time + delta <= times.back() || i >= times.size())
{
if(time != times[i])
out += " " + time.ToTString();
else
i++;
time += delta;
}
message(out);
}
} }
// Variables // Variables

3
doc.txt

@ -1,7 +1,8 @@
color, nocolor - включить/выключить цветной вывод в консоль. color, nocolor - включить/выключить цветной вывод в консоль.
Действия Действия
info - показывает информацию об источнике данных. Собственных параметров нет. Обычно нужен параметр dataset для указания источника данных. info - показывает информацию об источнике данных. Обычно нужен параметр dataset для указания источника данных.
showholes - при наличии этого параметра дополнительно показывает дырки в равномерной сетке времени, для которых отсутствуют данные. Для источников COPERNICUS и HYCOM.
tsc - получает физические величины на некоторой плоскости из источника данных. Параметры: tsc - получает физические величины на некоторой плоскости из источника данных. Параметры:
var или vars - список разделённых запятыми физических величин. Возможные значения: U, U2, u, v, ugeo, vgeo, temp, ptemp, pdens, sal, chl, mld, ssh, w, NO3, PO4, Si, O2, prprod, Cchl. Доступность тех или иных величин зависит от источника данных. Если источник имеет список переменных по умолчанию, то этот параметр может быть опущен. var или vars - список разделённых запятыми физических величин. Возможные значения: U, U2, u, v, ugeo, vgeo, temp, ptemp, pdens, sal, chl, mld, ssh, w, NO3, PO4, Si, O2, prprod, Cchl. Доступность тех или иных величин зависит от источника данных. Если источник имеет список переменных по умолчанию, то этот параметр может быть опущен.
time или пара timeb, timee. Параметр time может быть как одним моментом времени, так и регулярным выражением. Также time, timeb и timee могут быть одним из слов BEGIN, BEG, FIRST (соответствуют минимальному времени, для которого доступны данные) или END, LAST (соответствуют максимальному времени, для которого доступны данные). Если time меньше, чем BEGIN, будет использоваться минимальное время, если time больше END - максимальное. Если time регулярное выражение, то из набора данных выбираются моменты времени соответствующие этому выражению, и по ним проводится усреднение. Пара timeb и timee работает по аналогичному принципу, только выбираются моменты времени между timeb и timee включительно. time или пара timeb, timee. Параметр time может быть как одним моментом времени, так и регулярным выражением. Также time, timeb и timee могут быть одним из слов BEGIN, BEG, FIRST (соответствуют минимальному времени, для которого доступны данные) или END, LAST (соответствуют максимальному времени, для которого доступны данные). Если time меньше, чем BEGIN, будет использоваться минимальное время, если time больше END - максимальное. Если time регулярное выражение, то из набора данных выбираются моменты времени соответствующие этому выражению, и по ним проводится усреднение. Пара timeb и timee работает по аналогичному принципу, только выбираются моменты времени между timeb и timee включительно.

Loading…
Cancel
Save