Спутниковое радиотепловидение: динамика геофизических полей

   

ИКАР

Проект «ИКАР» - Интерактивный Калькулятор для Атмосферных Расчетов
При поддержке РФФИ – грант № 15-07-04422
 

Проект ИКАР реализует возможность распределенных вычислений с использованием продуктов обработки данных спутникового мониторинга, хранящихся на сервере геопортала спутникового радиотепловидения, а также в других открытых архивах спутниковой информации. Проект ориентирован на создание максимально простых в освоении и использовании, но при этом гибких и универсальных средств организации расчетов, не требующих от пользователя специальных знаний в области программирования.

Интерфейсно ИКАР реализован по принципу калькулятора: пользователь вводит формулу для расчета в виде текста и получает результат. Однако имеется два важных отличия. Помимо скалярных величин в формуле могут быть использованы геофизические параметры и другие переменные, определенные как матрицы значений в узлах фиксированной расчетной сетки и, вообще говоря, зависящие от времени. Результат расчета также формируется в виде матрицы значений на той же сетке и представляется в виде калиброванного растрового изображения.

Таким образом, стандартные действия пользователя при работе с ИКАР состоят в следующем:

  1.  Ввести расчетную формулу (синтаксис записи максимально приближен как к естественным реализациям в языках программирования, так и к оформлению в публикациях, с учетом ограничений текстового представления);
  2. Задать момент расчетного времени (дату и время суток);
  3. Запустить расчет, в процессе которого формула будет последовательно применена для вычислений в каждом узле расчетной сетки; при необходимости, соответствующие значения параметров будут извлечены из базы данных геопортала или загружены из сторонних источников, декодированы, прокалиброваны, приведены к узлам расчетной сетки и заданному моменту времени;
  4.  Получить результат расчета, визуализированный в виде калиброванного растрового изображения, и при необходимости сохранить файл изображения на свой компьютер.

Расчетная формула

Расчетная формула имеет вид:

R[x, y, t] = ВЫРАЖЕНИЕ

где R – имя результата вычислений; x – переменная, содержащая номер столбца расчетной сетки (пробегает значения 0..1439); y – переменная, содержащая номер строки расчетной сетки (пробегает значения 0..719); t – переменная, содержащая значение расчетного момента времени; ВЫРАЖЕНИЕ – корректное математическое выражение. Например:

a[x, y, t] = x
b[x, y, t] = x * (y + 1)

ВЫРАЖЕНИЕ в ИКАР может содержать следующие операции (в порядке убывания приоритета):

  • «*», «/» – умножение, деление
  • «+», «-» – сложение, вычитание
  • «<», «>», «==», «<=», «>=», «!=» – сравнение (например, значение выражения «x != y» равно 1, если значения «x» и «y» различны, и 0 в противном случае).
  • «!» – логическое НЕ
  • «&&» – логическое И
  • «||» – логическое ИЛИ
  • «? :» – выбор из альтернатив (например, значение выражения «(x < y) ? x : y» равно «x», если соблюдается условие «x < y», и «y» в противном случае)

Порядок выполнения действий в выражении – от наиболее приоритетных к наименее приоритетным и слева направо для действий с одинаковым приоритетом. Например,

5 + 2 * 3 = 11; 7 – 5 + 2 = 4

Для изменения порядка действий используются круглые скобки:

(5 + 2) * 3 = 21; 7 – (5 + 2) = 0

Допускается использование в ВЫРАЖЕНИИ функций – библиотечных или определяемых пользователем. Функция в ВЫРАЖЕНИИ представляется своим именем и перечисленными за ней в круглых скобках параметров, например:

C[x, y, t] = sin(x)
D[x, y, t] = max(x, y)

В настоящее время определены следующие библиотечные функции (список расширяется):
тригонометрические:

  • sin(a) – синус аргумента «a» (значение «a» - в радианах)
  • cos(a) – косинус аргумента
  • tan(a) – тангенс аргумента
  • asin(a) – арксинус аргумента «a» (результат - в радианах)
  • acos(a) – арккосинус аргумента «a» (результат - в радианах)
  • atan2(y, x) – арктангенс аргументов «y» (противолежащий катет) и «x» (прилежащий катет) (результат - в радианах)

показательные:

  • exp(a) – экспонента аргумента «a»
  • log(a) – натуральный логарифм аргумента «a»
  • log10(a) – десятичный логарифм аргумента «a»

pow(a,b) – «a» в степени «b»

  • метрические:
  • lat(y) – широта узлов строки с номером «y», в градусах
  • lon(x) – долгота узлов столбца с номером «x», в градусах
  • time(Y,M,D,h,m,s) - промежуток времени в сутках и долях суток от начальной даты 1.1.1990 00:00:00 до заданной даты D(день).M(месяц).Y(год) h(час):m(минута):s(секунда)
  • rad(a) – перевод значения «a» из градусов в радианы

интервальные:

  • min(a, b) – наименьшее из «a» и «b»
  • max(a, b) – наибольшее из «a» и «b»
  • abs(a) – модуль «a»

Например:

S[x, y, t] = abs(sin(y))

Если в ВЫРАЖЕНИИ используется функция, определяемая пользователем, ее описание необходимо поместить после ВЫРАЖЕНИЯ через точку с запятой, например:

e(x, y, t) = x * f(x, y); f(a, b) = max(a, b) – min(a, b)

Описание функции имеет вид:

f(a, b, …) = ВЫРАЖЕНИЕ

где f – произвольное имя функции; (a, b, …) – список ее аргументов; ВЫРАЖЕНИЕ – корректное выражение.
В любом ВЫРАЖЕНИИ, в том числе, определяющем функцию, можно использовать любое число новых функций. Все новые функции должны быть описаны далее через точку с запятой.

В ВЫРАЖЕНИИ также допускается использовать матричные величины, интерпретируемые как значения на расчетной сетке – например, поля геофизических параметров:

g[x, y, t] = tpw_ltw[x, y, t] – tpw_ltw[x, y, t – 1]

Здесь g[x, y, t] принимает (во всех узлах расчетной сетки) значение разности величины tpw_ltw в момент времени t и в момент времени t – 1, т.е. за сутки до расчетного времени t.

Имя матричной величины однозначно определяет тип продукта, источник данных и способ координатно-временной привязки. В настоящий момент определены следующие матричные величины (список расширяется):

  • tpw_ltw – поле интегрального влагосодержания атмосферы; значения интерполированы к заданному местному моменту времени, см. Раздел «Поля» и «Методика»; источник – геопортал спутникового радиотепловидения;
  • tpw_utc – поле интегрального влагосодержания атмосферы; значения интерполированы к заданному всемирному моменту времени, см. Раздел «Поля» и «Методика»; источник – геопортал спутникового радиотепловидения;
  • clw_ltw – поле полного водозапаса облаков; значения интерполированы к заданному местному моменту времени, см. Раздел «Поля» и «Методика»; источник – геопортал спутникового радиотепловидения;
  • clw_utc – поле полного водозапаса облаков; значения интерполированы к заданному всемирному моменту времени, см. Раздел «Поля» и «Методика»; источник – геопортал спутникового радиотепловидения;
  • wnd_ltw – поле скорости приводного ветра; значения интерполированы к заданному местному моменту времени, см. Раздел «Поля» и «Методика»; источник – геопортал спутникового радиотепловидения;
  • wnd_utc – поле скорости приводного ветра; значения интерполированы к заданному всемирному моменту времени, см. Раздел «Поля» и «Методика»; источник – геопортал спутникового радиотепловидения;
  • rss_sst – поле температуры поверхности океана; значения приведены к местному полудню, см. http://www.remss.com/measurements/sea-surface-temperature/oisst-description; источник – Remote Sensing Systems (http://www.remss.com).
  • l2_tpw – поле интегрального влагосодержания атмосферы над сушей по данным AMSR-E, AMSR-2, см. https://scholarworks.umt.edu/cgi/viewcontent.cgi?article=1386&context=ntsg_pubs; источник – проект LPDR Университета Монтаны (http://www.umt.edu/).

Например:

R[x, y, t] = max(0, 100 * del(tpw_ltw[x, y, t] / 10, rss_sst[x, y, t]) * abs(sin(rad(lat(y)))));
del(A, B) = (A - 5.07) / 0.38 - (B - 27) / 4

Момент расчетного времени

Используемые в расчетах ВЫРАЖЕНИЯ как правило содержат величины, переменные во времени. При вычислении конечного результата на расчетной сетке, значения всех величин приводятся к указанному пользователем моменту времени с учетом определения этих величин. Например, значения геофизического параметра tpw_ltw приводятся к указанному пользователем моменту местного времени. Для параметра rss_sst выбираются полуденные значения за ближайшие к указанному пользователем моменту времени сутки.
Момент времени выбирается с помощью интерфейсных элементов ИКАР, как показано на следующем рисунке.

В ВЫРАЖЕНИИ значение переменной t равно числу суток, вообще говоря, дробному, между полуночью 1 января 1990 г. и указанным пользователем моментом времени.

Запуск вычислений

Запуск вычислений осуществляется нажатием кнопки «Execute». При этом весь текст введенного пользователем ВЫРАЖЕНИЯ и, при необходимости, описаний функций, передается на сервер и анализируется на корректность. В случае обнаружения ошибки или невозможности вычислений, сервер возвращает пользователю текстовое сообщение. В случае удачного исполнения, сервер визуализирует результат в виде растрового изображения.

Получение результата

Полученное растровое изображение может быть сохранено в файл на компьютере пользователя с помощью кнопки «Save». Изображение является калиброванным, т.е. сдержит информацию, необходимую для пересчета значений в каждой точке B в абсолютную величину R по линейной формуле

R = k * B + c

Величины «k» и «c» сохраняются в первой строке растрового изображения вместо истинных значений результатов вычислений в соответствующих точках, т.к. эти значения относятся к «южному полюсу» и, как правило, не имеют физического смысла.

Таким образом, по аналогии с представлением геофизических полей (см. раздел «Методика», пункт «Формат файлов»), результат расчетов ИКАР представлен в виде файла, состоящего из заголовка размером 1078 байтов и матрицы данных размером 1036800 байтов, первые восемь байтов которой отведены под запись величины «k», а следующие восемь – под запись величины «c», см. следующий рисунок. Значения k и c записываются в виде чисел двойной точности с плавающей запятой, с порядком байтов от младшего к старшему (little-endian).

Примеры расчетов

  1. B[x,y,t]=x/(y/1000+1)
    Простой арифметический пример. Значение результата в каждом узле сетки (x,y) определяется выражением x/(y/1000+1).

    Результат:



  2.  B[x,y,t]=fn(x,y,t); fn(a,b,c) = rss_sst[a,b,c] - rss_sst[a,b,c-100]
    В этом примере значения результата определены через значения функции трех аргументов fn, которая, в свою очередь, определена далее выражением rss_sst[a,b,c] - rss_sst[a,b,c-1].
    rss_sst - (полуденные) температуры поверхности океана (ТПО) в градусах, загружаемые из архива Remote Sensing Systems. Таким образом, rss_sst[x,y,t] - это матрица значений ТПО в узлах сетки (x,y), наиболее близких по времени к заданному t.
    t измеряется в сутках, поэтому fn(x,y,t) определяет разность между полуденными ТПО за даты, разделенные 100-суточным интервалом.

    Рисунок иллюстрирует результат вычислений для t = 28.06.2013:



  3.  R[x, y, t] = max(0, 100 * del(tpw_ltw[x, y, t] / 10, rss_sst[x, y, t]) * abs(sin(rad(lat(y)))));del(A, B) = (A - 5.07) / 0.38 - (B - 27) / 4
    Более сложный пример расчета ТВ-критерия (Ростовцева, Гончаренко, 2014) за 28.06.2013, 12:00.
    tpw_ltw - значения интегрального влагосодержания атмосферы в мм из архива геопортала, интерполированые к моменту местного времени t (в примере - полудню 28.06.2013).
    rss_sst - ТПО, приведенные к местному полудню, см. пример 2.
    d(A,B) - вспомогательная функция, введенная для упрощения выражений и перевода tpw_ltw из мм в г/см2.
    lat(y) - библиотечная (встроенная) функция перевода номера строки (y) в географическую широту в градусах.
    rad(a) - библиотечная функция перевода градусов в радианы.
    sin(a) - библиотечная функция синуса аргумента.
    abs(a) - библиотечная функция модуля аргумента.

    Результат:



Автоматизация расчетов через веб-сервис

Для выполнения потоковых расчетов в автоматическом режиме реализована функция:

byte[] Execute(string formula, int year,
               int mon,
               int day,
               int hour,
               int min,
               int sec,
               ref string errmes)

Параметры:

string formula – calculation formula, e.g., "r[x, y, t] = x"
int year – year (acceptable range see in Section "Fields")
int mon – month (acceptable range 1 – 12)
int day – day (acceptable range 1 – 28/29/30/31)
int hour – hour (acceptable range 0 – 23)
int min – minute (acceptable range 0 – 59)
int sec – second (acceptable range 0 – 59)
ref string errmes – placeholder string for possible error message.

Возвращаемое значение:

byte[] – массив байтов, соответствующий содержанию файла расчетного поля. Значение NULL соответствует ошибке исполнения, описание ошибки помещается в параметр errmes.

Для доступа к интерфейсу веб-сервиса используется прокси-класс, который может быть создан в ОС Windows с помощью консольной утилиты wsdl.exe. Вариант реализации описан в разделе "Программы" на аналогичном примере получения доступа к функции BuildFrame.

Исходный код демонстрационной программы для VS2010, использующий функцию Execute, можно скачать здесь, демонстрационную программу можно скачать здесь.

Литература

Ростовцева В.В., Гончаренко И.В., 2014. Оценка влияния тепловой стратификации тропосферы на активность тропического циклогенеза по данным спутниковой микроволновой радиометрии. Исследование Земли из космоса. 2014. №2. С. 3-17.

Рейтинг@Mail.ru