=Paper= {{Paper |id=Vol-1787/218-223-paper-36 |storemode=property |title=Эффективные алгоритмы построения и визуализации рельефа Земли и батиметрии Мирового океана (Efficient algorithms for construction and visualization of the Earth and the bathymetry of the oceans relief) |pdfUrl=https://ceur-ws.org/Vol-1787/218-223-paper-36.pdf |volume=Vol-1787 |authors=Anna Fatkina,Vasily Khramushin }} ==Эффективные алгоритмы построения и визуализации рельефа Земли и батиметрии Мирового океана (Efficient algorithms for construction and visualization of the Earth and the bathymetry of the oceans relief)== https://ceur-ws.org/Vol-1787/218-223-paper-36.pdf
    Эффективные алгоритмы построения и визуализации
      рельефа Земли и батиметрии Мирового океана
                             А. И. Фатькина1, В. Н. Храмушин2,a
    1
        Санкт-Петербургский государственный университет, факультет прикладной математики – процессов
                                        управления, Санкт-Петербург
2
    Сахалинское отделение Российского Научно-технического общества судостроителей им. А.Н. Крылова,
                                          Южно-Сахалинск
                                          E-mail: a Khram@mail.ru

     В настоящей работе рассматриваются варианты построения эффективных алгоритмов для обработ-
ки, интерполяции и визуализации рельефа Земли и батиметрии Мирового океана, предназначенные для
реализации гидрометеорологических информационных систем и прямых вычислительных эксперимен-
тов по моделированию гидродинамики океана, шельфовых акваторий и прибрежных мелководий. Пред-
ставлены варианты предварительной подготовки цифровых массивов в форматах архитектуры компью-
теров типа IBM-PC, а также гигантских объемов данных (порядка 15 Гб) в исходных форматах NetCDF с
аппаратной кодировкой VAX(PDP-11). В преобразованиях координат задействуются тензорные операции
для быстрых переходов между меркаторской и географической (сферической) проекциями. Прямое по-
строение графических изображений выполняется в оперативной памяти в стандартной растровой RGBi-
кодировке, что требуется для задействования алгоритмов параллельных вычислений.

     Ключевые слова: алгоритм, числовые объекты, батиметрические массивы, тензорная математика,
параллельное программирование

     Работа выполнена при поддержке Сахалинского отделения Российского научно-технического общества судо-
строителей имени А. Н. Крылова.



                                                                              © 2016 Анна Игоревна Фатькина,
                                                                               Василий Николаевич Храмушин




                                                                                                      218
Введение
     Прямые вычислительные эксперименты в прогнозах потенциально опасных морских явле-
ний, так же как в оценках состояния атмосферы, прибрежных и океанских акваторий и их взаи-
модействия, оперируют обширной информационной базой разномасштабных батиметрических
карт, многолетними массивами наблюдений за параметрами состояния Мирового океана, с
возможностью вовлечения оперативных потоков данных о зондировании океана из космоса и
других телеметрических измерений в реальном времени.
     Практическое использование массивов и потоков информации из разнородных источников
требует разработки эффективных, а значит специализированных процедур для быстрой конвер-
тации материалов, архивированных в различных форматах аппаратной кодировки данных, с
возможностью интерактивной графической визуализации аналитических выборок на географи-
ческих картах, и с возможностью быстрого синтеза различных вариантов представления ре-
зультатов моделирования совместно с текущими данными наблюдений о состоянии моря.


Батиметрические архивы в вычислительных экспериментах
     Систематизация и графическая визуализация разнородных батиметрических массивов
обусловлена необходимостью проведения регулярных вычислительных экспериментов по мо-
делированию длинноволновых гидродинамических процессов в открытом океане, в шельфовой
зоне и на прибрежных мелководьях, таких как цунами, штормовые нагоны, приливные колеба-
ния уровня моря и другие морские наводнения и экстремальные течения. При ограниченных
вычислительных ресурсах постановка эксперимента востребует оптимизацию величин карто-
графического покрытия с шагом сеточных аппроксимаций, разворачиваемых по направлениям
преобладающих изобат или контуров побережья для уменьшения площади береговых фрагмен-
тов, и с применением меркаторских (конформных по площади) картографических преобразова-
ний для ускорения вычислений [0,0] на сферической поверхности Земного шара.




 Рис. 1. Сборный лист разномасштабных батиметрических массивов по дальневосточным акваториям,
                       оцифрованных вручную с навигационных карт России.

    1. Отработанные на практике методы представления цифровой батиметрии (рис. 1) осно-
ваны на использовании дополнительных текстовых описаний с расширением *.inf; содержа-
щих ссылку на исходные данные; указание на тип чисел (текст, байты, целые или плавающие
числа); общий размер и считываемый сектор данных; шаг сетки и тип картографической про-
екции; координаты опорной точки и наклон левой грани относительно географического мери-
диана. Описание дополняется списком географических координат мореографов для регистра-
ции колебаний уровня моря и скоростей течений в ходе вычислительного эксперимента.




                                                                                          219
     2. Батиметрические массивы в форматах типа *.grd содержат конфигурацию в заголовке
файла данных, и опознаются по символам: 'DS'. Затем, по отметке 'AA' – включается текстовый
режим считывания, по отметке 'BB' – двоичный. Далее выбирается размерность массива и его
граничные координаты по осям X и Y, с ожидаемыми экстремумами по аппликате Z.
     3. С таким же расширением встречаются океанографические данные в формате NetCDF,
оригинальный тип: *.nc, которые опознаются по начальным символам: 'CDF', и последую-
щим ключам с избыточным набором параметров, не всегда согласующихся по местоположе-
нию и подбору имен в однотипных файлах данных от различных авторов.
     Искомые данные во всех трех вариантах батиметрии располагаются единым массивом, до-
пускающим использование универсальных алгоритмов для быстрой выборки глубин и высот на
поверхности Земли. Оригинальные материалы из мировых центров данных представляются во
внутренних форматах компьютеров типа VAX, что отличается от IBM-PC порядком следования
байт. Ускорение выборки достигается предвычислением местоположения строк для фрагментов
матрицы данных, для чего текстовые файлы изначально считываются в режиме поиска.


Алгоритмы интерполяции и быстрых географических преобразований
     В географической проекции шаг сетки по долготе зависит от широты: S = S·cos(),
что нарушает пропорции сеточных ячеек. В меркаторской равноугольной проекции, при не-
большой разности широт на границах, шаг сетки может быть постоянным:
SM = ·kм = /cos(–0)·kм, где: kм – коэффициент пересчета угловой меры в линейную;  –
долгота,  – широта, S – шаг сетки. В меркаторской проекции отсчет широты – меридиональ-
ная часть, ведется от экватора: m = ln( tan( (g+/2)/2 ) ), с возвратом к угловой мере в гео-
графических координатах, как: g = 2·arctan( exp( m ) ) – /2 [рад].
     Двумерные преобразования координат, в том числе с учетом изменчивости линейных
масштабов географических координат, ведется в технологии тензорной математики (рис. 1).

                                       r2                                                            
                  Y                                     A  R + a · ^r        a   A - R ·r
                                        j        A                                                  
                              w                                    r x            r xx r xy     
                                                        
                                                        r  r   y  r   yx yy
                                                a             i
                                                                             i,j
                                                                                                     
                                            i
                                                                                                  
                          R
                      j           ^r                                r               r      r
                                            r1                                         rxx ryx
                                                                                                    
                                                                                                    
                                                        
            ^
                                                        r  r i   rx ry   ri,j   r
                          i
                                                                                                    
            
                                                                                                   
                                                    X                                         r
                                                                                        xy yy
                                                                  
  Рис. 2. Сеточное пространство  со множеством локальных базисов: r              ; i, j – единичные орты.

struct Point{ Real x,y; }    // Представление точки на плоскости Real=double
struct Base                  // Линейные преобразования в единичном базисе
{ Point y,x, Y,X;            // Локальный базис, отображение глобальных осей
   Real Axis( Point y, Point x ); // Установка координатный осей
   Point Goint( Point A ){ return (Point){A.x*X.x+A.y*Y.x,A.y*Y.y+A.x*X.y};}
   Point Goext( Point a ){ return (Point){a.x*x.x+a.y*y.x,a.y*y.y+a.x*x.y};}
};
struct Basis:Base          // Линейные преобразования с глобальным отсчетом
{ Point R;                 // Опорная точка начала отсчета локального базиса
   Real Axis ( Point R, Point y, Point x ); // Точка отсчета и базисные оси
   Real Euler( Point R, Real Angle, Point size );   // Эйлерово пространство
   Point Goint( Point A ){ return Base::Goint(A-R); } // к локальному базису




                                                                                                         220
     Point Goext( Point a ){ return Base::Goext(a)+R; } // в глобальный отсчет
};
    Локальный базис собирается из разностей координат на границах, как свободных векторов
левой и нижней граней сеточной области, нормированных по искомой интерполяционной раз-
мерности в индексах узловых точек, которые устанавливаются в качестве столбцов матрицы
локального тензора: r   δ ry / n y   δ rx / nx  . Инициализация тензорного оператора как число-
                                        

                                                  
вого объекта выполняется в процедуре Axis( y,x ), где предвычисляются векторы { Y,X }
для обратных тензорных преобразований. Произведение вектора с такой матрицей означает пе-
реход от индексов сеточных узлов к координатным смещениям и разностям меридиональных
частей, и обратная операция переводит от смещений географических координат к индексам се-
точной области. При визуализации батиметрических карт, соответственно, в качестве индексов
локального базиса устанавливаются растровые отсчеты для фрагмента графического экрана.




        Рис. 3. Пример интерполяции батиметрии с преобразованием картографических проекций.

     Процедуры интерполяции и визуализации больших батиметрических массивов нуждаются
в задействовании многоядерных вычислительных ресурсов, допускающих возможность кэши-
рования локальных выборок, что весьма актуально в случае применения сглаживающих функ-
ций Эрмита второго порядка с осреднением узловых производных при аппроксимации со сгла-
живанием, так же как и в случае быстрой билинейной интерполяции при необходимости за-
грубления исходных батиметрических материалов.
     Требование реентерабельности процедур параллельного программирования исключает
возможность кэширования временных параметров в статической памяти вложенных процедур,
то есть, для четверок чисел полиномов Эрмита требуется, как минимум, предварительное вы-
деление локальной памяти внутри распараллеливаемых циклов. Формально это становится не-
ким признаком ограниченности привычного структурного или процедурного программирова-
ния, с пожеланием необходимости возврата к контекстно-зависимым вычислениям, управляе-
мым виртуальными функциями над текущим состоянием локальных числовых объектов.
     Параллельное программирование в среде OpenMP характеризуется непредсказуемостью в
последовательности исполнения конкретных вычислительных операций. Это является услови-
ем задействования интерполяционных процедур на основе явных численных схем с разделени-
ем модифицируемых и разделяемых числовых полей. Графическая визуализация, в таком слу-




                                                                                               221
чае, требует предварительной прорисовки в оперативной памяти прямого доступа, что фор-
мально допускается архитектурой графических систем современных компьютеров.


Особенности построения алгоритмов визуализации
     Для визуализации батиметрических массивов задействуется палитра 224 предопределен-
ных цвета (наследие 256-цветной графики) в RGBi-формате. Это позволяет использовать рас-
ширенный диапазон 32-разрядных слов – пикселей для варьирования яркостью при построении
затененных изображений рельефа под освещенностью с заданной высоты и направления.
static void Topography_Paint(){// Прорисовка батиметрии в поле высот с теневыми оттенками
#pragma omp parallel for
  for( int y=0; y0.0?71-int(U*0.0072):72-
int(U*0.0256)))];
    U = tanh(((Data[y][min(Mx-1,x+1)]-Data[y][max(0,x-1)])*Az.y
            + (Data[max(0,y-1)][x]-Data[min(My-1,y+1)][x])*Az.x)*Skew/5e4 );
     C.b+=U*(U>0?255-C.b:C.b);            // попиксельный перебор цветов палитры до 10000 м
     C.g+=U*(U>0?255-C.g:C.g);            // с настройкой освещенности и теневых сторон
     C.r+=U*(U>0?255-C.r:C.r); ((unsigned*)Scr)[y*Mx+x+1]=C.i; // (с призраками)
  } Tv_PutImage( Tv_port.left+1,Tv_port.top+1,Scr );                      // Axis();
}
    Здесь вектор Az – направление; Skew – высота источника освещения. Батиметрический
файл Data предварительно преобразуется к размерности фрагмента графического экрана
My·Mx. Палитра собрана в 32-разрядной последовательности RGB_colors sea[256], по
которой настраивается растровая точка C в образе графического экрана Scr[My*Mx].




  Рис. 4. Интерактивная прорисовка берегового рельефа и батиметрии Атлантики и Средиземноморья.


Список литературы
Храмушин В. Н. «Ani» – Прямые вычислительные эксперименты для моделирования цунами,
     штормовых нагонов, экстремальных течений и приливного режима в открытом океане и
     вблизи побережья. СахГУ. Роспатент № 2010615848 (shipdesign.ru/SoftWare/2010615848.html)
     Khramushin V. Pryamye vychislitelnye experimenty dlya modelirovania cunami, stormovykh nagonov, extremalnykh
     techeniy i prilivnogo rezhima v otkrytom okeane i vblizi poberezhia [Direct computational experiments for simulat-
     ing tsunamis, storm surges, extreme currents and tidal mode to open ocean and in near the coast]. SakhSU, Rospatent.
     Invention 2010615848, 2010.




                                                                                                                  222
Минервин И. Г., Храмушин В. Н. «Батиметрия» – Цифровые батиметрические массивы (Охот-
     ское море). СахГУ. Роспатент № 2010620626 (shipdesign.ru/SoftWare/2010620626.html)
         Minervin I., Khramushin V. Cyfrovye batimetricheskie massivy [Digital bathymetric arrays]. SakhSU. Invention
         2010620626, 2010.
Богданов А. В., Дегтярева Я. А., Захарчук Е. А., Тихонова Н. А., Фукс В. Р., Храмушин В. Н. Ин-
     терактивный графический инструментарий глобального вычислительного эксперимента в
     службе морских оперативных прогнозов // Компьютерные исследования и моделирова-
     ние. 2015 Том 7 № 3. М.: МГУ, 2015. С. 641–648.
         Bogdanov A., Degtyareva Ja., Zajharchuk E., Tikhonova N., Fux V., Khramushin V. Interaktivny grafichesky
         instrumentary globalnogo vychislitelnogo experimenta v sluzhbe morskikh operativnykh prognozov [Interactive
         graphical toolkit to computational experiment in maritime forecasts service] // Computer Research and Modeling. –
         2015. –Vol.7, No.3. –P. 641–648 (in Russian)




  Efficient algorithms for construction and visualization of
      the Earth and the bathymetry of the oceans relief
                                  A. I. Fatkina1, V. N. Khramushin2,a
                                           1
                                           Saint-Petersburg State University
   2
       Sakhalin division of Science-technical society of shipbuilders named Alexey Krylov, Yuzhno-Sakhalinsk
                                                E-mail: a Khram@mail.ru


       Abstract. In this paper we consider variants of building efficient algorithms for processing, interpolation
and visualization of the Earth's topography and bathymetry of the oceans, destined for realization of meteorolog-
ical information system and direct computational experiments on modeling of ocean, offshore waters and coastal
shallows hydrodynamics. The variants of advance preparation digital arrays in the representation of architecture
IBM-PC type computers and huge volumes (about 15 GB) in the original NetCDF formats with hardware encod-
ing VAX (PDP-11). In the coordinate transformation tensor operations are utilized for fast transitions between
Mercator and geographical (spherical) projections. Direct encoding graphical fields is performed in a standard
RGBi bitmap representation in main memory, that is required for activating the algorithms of parallel computing.

        Keywords: algorithm, numerical objects bathymetric arrays tensor mathematics, parallel programming

        The work was supported by Alexey Krylov Science-engineering society of shipbuilder from Sakhalin division.



                                                                                                     © 2016 Anna I. Fatkina,
                                                                                                      Vasily N. Khramushin.




                                                                                                                     223