Для детального анализа
общей картины циркуляции вод различных районов Мирового океана необходима
визуализация вектора скорости течений. Эта процедура необходима как при
интерпретации поля скоростей геострофических течений, рассчитанных по данным
альтиметрических измерений с космических аппаратов [4], так и при интерпретации
результатов расчетов, проведенных в рамках гидродинамических моделей [5, 6].
Визуализация также полезна при анализе атмосферных процессов. И при подобных интерпретациях
было бы значительно проще и быстрее использовать вместо мощных, к тому же
зарубежных, пакетов отечественную разработку, какой и должна стать, в конечном счете,
разрабатываемая нами универсальная система.
Ранее в работе [2], ставшей своего рода
первой частью рассматриваемой здесь темы, была разработана программа на языке
программирования
PHP
[7]
для визуализации геопривязанных параметров на спутниковой карте Яндекс [8].
В
качестве входных данных в программе был использован текстовый файл с
расширением
CSV,
состоящий из трех
столбцов:
-
широта/долгота в первых двух столбцах;
-
собственно значение параметра (в том примере это была усеченная геострофика, то
есть только одна из двух составляющих скоростей).
В данном случае, пока не реализована
универсальность входных текстовых данных, расширение в названии текстового
файла имеет значение только лишь для того, чтобы для открытия данного файла в
программе
PHP
была использована
функция, предназначенная именно для этого расширения.
Следует отметить, что скорость течения
отличается от других геофизических характеристик, таких как температура,
соленость и др., поскольку является вектором. Поэтому с целью унификации процесса
визуализации необходимо было разработать модификацию сделанной ранее программы,
о которой и будет рассказано в данной работе.
В отличие от способа представления
геофизических параметров в текстовом файле как трех столбцов (значения долготы,
широты и собственно параметра), в случае наличия параметра скорости входной
текстовый файл содержит четыре столбца – значения долготы, широты, а также два
столбца с широтной и меридиональной компонентами вектора скорости. Наличие
четырех столбцов послужит в будущем при развитии универсальности системы
признаком того, что во входном файле именно векторный параметр, а не любой
другой геофизический параметр.
Задача построения изображения векторного
параметра существенно упростилась в связи с тем, что ранее была реализована
программа построения изображений скалярных геофизических параметров [3]. На
основе уже сделанной программы будем строить изображение вектора скорости.
Не будем здесь повторять причины
использования именно языка
PHP,
они подробно изложены в нашей предыдущей статье [2]. Лишь добавим, что ранее
уже реализованная программа на языке программирования
PHP
работает как в составе
Web-страницы
[3] со спутниковой картой Яндекс [8], так и совершенно независимо можно увидеть
результат ее работы на экране монитора, но без привязки к спутниковой карте по
причине отсутствия этой карты.
Итак, поскольку основная часть программы
уже была сделана ранее, то нам остается вычислить собственно параметр скорости
на основе ее зональной и меридиональной составляющих из данных входного файла,
а также нанести на полученное изображение параметра скорости стрелки,
указывающие на направление вектора скорости. Этим задачам и посвящена
модификация данной программы на языке программирования
PHP.
Задачу визуализации вектора скорости будем
решать в несколько этапов. На первом этапе определим модуль вектора скорости, и
поскольку две его компоненты известны, то он может быть рассчитан как:
,
|
(1)
|
где
– зональная
(проекция на горизонтальную ось
x)
компонента вектора скорости,
– меридиональная (проекция на
вертикальную ось
y)
компонента вектора скорости.
Программа на основе исходного массива данных в текстовом виде,
содержащего четыре столбца, формирует дополнительный массив, содержащий три
столбца. Первые два столбца (широта и долгота) остаются без изменения, третий
столбец содержит модуль вектора скорости.
В результате работы скрипта
PHP
получаем изображение модуля скорости
, как и любого другого геопривязанного
(имеющего долготу и широту) скалярного параметра [2]. Изображение модуля
скорости показано на рис.1 с помощью палитры, приведенной в правой части
рисунка.
Рис.1
Изображение параметра скоростей без указания направлений
Для
иллюстрации взяты данные 29.02.2012 поля течений на Черном море [9]. Разрешение
по пространству составляет 0.125⁰ по широте и долготе.
Вектор скорости течения будем представлять
в виде стрелки, длина которой пропорциональна модулю вектора, а азимутальный
угол
соответствует направлению.
Угол
определяется
известным соотношением
.
|
(2)
|
Заметим,
что в языке программирования
PHP
существует множество математических функций, в том числе и две функции
atan
()
и
atan
2(), для расчета арктангенсов. Но
функция
atan
2() хороша еще и тем, что
дает результат с учетом той четверти тригонометрического круга, к которой
принадлежит вектор скорости (знаки +/- для составляющих). Поэтому в дальнейших
расчетах при упоминании арктангенса будем подразумевать, что используется
функция
atan
2().
Отрезки прямых, указывающие на направление
и силу течения, накладываются сверху на уже построенное ранее (см. рис.1)
изображение параметра (в данном случае модуля скорости). В зависимости от
пространственного разрешения, с которым получены данные о векторе скорости,
чтобы не перегружать изображение будем выводить только каждую
n-ю
стрелку. В программе предусмотрено, что число
n
можно менять.
В данном случае будем выводить
только каждую четвертую стрелку, иначе при выведении каждой стрелки изображение
будет слишком перегружено и потеряет наглядность. Вначале посмотрим в качестве
промежуточного результат наложения только самого вектора скорости (без стрелок)
на рис. 2.
Рис.2. Изображение параметра
скорости с нанесенным сверху вектором скорости без указания направления
Из
рис.2 очевидно, что полученное изображение недостаточно информативно –
требуется указать само направление вектора скорости, а это будет возможно
только при добавлении к вектору скорости «крыльев» стрелок, построением которых
и займемся на следующем этапе.
Следует отметить, что язык программирования
PHP,
даже с учетом встроенной библиотеки
GD
со всем многообразием функций для
построения изображений, не имеет в своем арсенале функции для отображения
стрелок. Максимально близкая функция – это функция для построения линий
imageline(),
которая позволяет представить вектор в виде отрезка прямой, длина которой
пропорциональна модулю вектора. Так что стрелки придется строить «вручную»,
исходя из того, что любая стрелка представляет собой набор трех линий,
сходящихся в одной точке.
При построении стрелок будем полагать, что
- «крылья» стрелки ориентированы
относительно вектора скорости под углом
радиан (9◦);
- расстояние от начала координат до концов
наконечников стрелок равно 3/4 длины стрелки;
- вектор скорости в качестве начальных
значений координат имеет
,
;
- координаты окончания вектора скорости
и
соответствуют
и
.
Координаты окончания вектора скорости
и
должны
совпадать с окончанием "крыльев" наконечника стрелки, в противном
случае будущее отображение направления просто «разъедется». Наша задача состоит
в нахождении координат начальных точек "крыльев" наконечника
и
с
одной и другой сторон от вектора скорости (рис. 3).
Рис.3 Графическое представление стрелки
На
рис. 3 показаны углы
и
, которые,
согласно сделанным выше допущениям, можно определить, как
с одной стороны от
вектора скорости, и
с другой стороны
соответственно. Тогда две пары
искомых параметров (
и
)
можно
определить как
где
и
– вектора,
связывающие начало координат с концами крыла стрелки.
Согласно
принятым ранее условиям
.
После
окончания процедуры построения стрелки ее начальным координатам присваиваются
географические координаты, взятые из исходного текстового файла. Таким образом,
теперь у нас в наличии есть все необходимые данные для рисования стрелок, которые
мы и используем в строящемся изображении. Результат такого построения
изображения с нанесенными стрелками приведен на рис. 4.
Рис.4. Изображение параметра скорости с
нанесенными стрелками
В
заключение остается выложить готовое изображение на спутниковую карту Яндекс [10].
Для этого передадим построенное с помощью скрипта
PHP
изображение с необходимыми параметрами (координаты точек с параметром, центр будущей
карты и т.д.) в скрипт
JS
[11], поскольку именно этот скрипт отвечает за построение спутниковой карты
Яндекс АПИ [12]. В результате получим изображение, представленное на рис. 5.
Рис.5. Изображение параметра скорости со
стрелками на спутниковой карте Яндекс
Добавим,
что решение о нанесении стрелок поверх уже построенного изображения модуля
скорости позволит в будущем отдельно проработать качество изображения перед его
выкладкой на спутниковую карту.
Теперь, когда все готово, в качестве
эксперимента попробуем заменить файл с палитрой, используя для этого палитру с
небольшим количеством цветов. Тогда то же
изображение будет выглядеть, как показано на рис.6.
Рис.6.
Изображение
на спутниковой карте Яндекс с другой палитрой
В дальнейшем пользователь сам будет решать и
соответственно выбирать, какую палитру ему удобнее использовать, но это станет будущим
предметом исследований.
Отметим, что данный работающий скрипт будет
служить основой при наших дальнейших разработках в направлении универсальности.
И эти дальнейшие работы уже ведутся [13]. Универсальность заключается в том,
что
скрипт предоставляет возможность
выбора пользователем любого текстового файла с геофизическими параметрами,
файла с палитрой, заданием некоторых констант, используемых в программе, а
также изменением значений принятых в данной работе допущений (количество
выводимых стрелок, размеры стрелок и т.д.), что немаловажно в любых и
сследовательских работах.
Эта универсальность
будет разработана на сайте [13] со спутниковой картой Яндекс, что ляжет в
основу темы для другой статьи.
Помимо указанной выше универсальности уже
сейчас появляются вопросы об использовании различных сочетаний, то есть
исследователям интересно пронаблюдать поведение какого-либо параметра
(температуры, например) под воздействием скорости течения, что, конечно же, реализуемо
при подобном подходе, но об этом – в другой статье.
При обращении к примерам общемирового
уровня, например, к сайту
COPERNICUS
[14], где представлено огромное количество изображений геофизических
параметров, можно сделать вывод, что законченный программный продукт
PHP
может найти применение и в системах-аналогах
Copernicus.
Также данный программный продукт
PHP
в силу своей автономности может послужить основой для работ в любом регионе карты
на картографической поверхности.
Работа
выполнена в рамках государственного задания по теме
FNNN-2021-0004 «Фундаментальные исследования
океанологических процессов, определяющих состояние и эволюцию морской среды под
влиянием естественных и антропогенных факторов, на основе методов наблюдения и
моделирования»
(шифр
«Океанологические процессы»)
1. Voronina N. N., Inyushina N. V., Mamchur N. L., Kryl' M. V.
Analiz i sopostavlenie programmnyh sredstv vizualizacii morskih prognozov na
osnove raschetnyh dannyh operativnoj okeanografii po chernomorskomu bassejnu
na primerah sevastopol'skogo i krymskogo regionov.// Nauchnaya
vizualizaciya. Elektronnyj zhurnal, ISSN 2079-3537, № 1, T. 8, 2016. – s.
146 - 155. [Electronic resource]. URL:
http://sv-journal.org/2016-1/09.php?lang=ru
2. Воронина Н. Н. Универсальная система визуализации
геопривязанных данных из текстового файла на карте Яндекс // Nauchnaya vizualizaciya.
Elektronnyj zhurnal, ISSN 2079-3537, № 1, T. 15, 2023. – s.83 - 89. [Electronic
resource]. URL:
http://sv-journal.org/2023-1/07/
3. [Electronic resource]. URL:
http://ckp.mhi-ras.ru/generate_image_do-sh.php
4. Пустовойтенко В.В., Запевалов А.С. Оперативная
океанография: Спутниковая альтиметрия – Современное состояние, перспективы
и проблемы // Серия. Современные проблемы океанологии, Севастополь: НПЦ
“ЭКОСИ-Гидрофизика”. 2012. Вып. № 11. 218 с.
5.
Bogdanov, A. I. Mizyuk, A. A.
Kubryakov Evolution of Submesoscale Cyclones on the Batumi Anticyclone
Periphery Based on the Numerical Simulation Data //
Physical Oceanography vol. 29, No. 6 pp. 550-566
6. Демышев С.Г., Запевалов А.С., Кубряков А.И., Чудиновских
Т.В. Эволюции поля концентрации 137CS в Черном море после прохождения
чернобыльского облака // Метеорология и гидрология, 2001, №10, С.49-61.
7. Зандстра М. PHP 8. Объекты, шаблоны и методики
программирования //
Диалектика,
2021. [Electronic resource].
URL:
https://php.ru/manual/
8. Коптенок Е. В., Савенко А. В., Фомин И. И., Трунников М.
В., Сухарев Е. А. ZZ
Анализ возможностей сервисов для реализации виртуальных туров на примере
использования API Яндекс.Карт. // Молодой ученый. № 19 (309), 2020. - С.
130-133. URL:
https://moluch.ru/archive/309/69891/
9. [Electronic resource]. URL:
http://dvs.net.ru/mp/data/201202vw_ru.shtml
10. Мохов В.А., Кубил В.Н., Кузнецова А.В., Георгица И.В. Рекурсивный
алгоритм синхронизации Api-запросов к гис-сервису Яндекс.Карты //
Фундаментальные исследования. № 9-1, 2015. – С. 33-38. URL:
https://fundamental-research.ru/ru/article/view?id=38961
11. Марийн Хавербеке Красноречивый JavaScript // Декабрь 2018,
472 с. ISBN-13: 9781593279509. URL:
Красноречивый JavaScript, 3-е издание | Без
крахмального пресса (nostarch.com)
12. Foerderer J., Bender M., Heinzl A.
Regulation
of digital platform ecosystems: evidence from russia's google vs yandex
ruling.
// В сборнике: International Conference on Information
Systems 2018, ICIS 2018. 39. 2018.
13. [Electronic resource]. URL:
http://ckp.mhi-ras.ru
14. Сервис Программы «Коперникус» // [Electronic resource]. URL:
https://data.marine.copernicus.eu
Universal System for Visualizing Geo-Referenced Data - Speed Vector Data
Authors: N.N. Voronina1, A. S. Zapevalov2
FSBSI FRC Marine Hydrophysical Institute RAS, Sevastopol, Russia
1 ORCID: 0000-0001-7301-2609, voronina.nataly@mail.ru
2 ORCID: 0000-0001-9942-2796, sevzepter@mail.ru
Abstract
In 2016, an article [1] was published in the Scientific Visualization No. 1 journal, which marked the beginning of a series of publications, in one way or another related to the visualization of georeferenced data. In 2023, an article [2] was published in the journal Scientific Visualization, which continued this series. This article describes step by step the process of developing and debugging a software product for visualizing geophysical data with their subsequent layout on a Yandex satellite map. The initial information for building maps was a text file containing three columns of data: two columns are geographic coordinates, the third column is a scalar parameter, such as temperature or salinity. The presented work is a direct continuation of this series. It describes the procedure for visualizing vector geophysical parameters on the Yandex satellite map, for example, such as current velocity or wind speed. The visualization procedure for vector parameters is based on a similar procedure previously developed for scalar parameters. The paper describes in detail the process of developing and debugging, modifying a software product, the ultimate goal of which is to visualize only the geophysical velocity parameter with subsequent display on the Yandex satellite map in accordance with the geographic coordinates that are set as input. The software product is a fully debugged complete module that can work both in standalone mode and in a complex aimed at superimposing the result obtained on the Yandex satellite map.
Keywords: georeferenced data, visualization, Yandex satellite map, velocity vector, PHP programming language.
1. Voronina N. N., Inyushina N. V., Mamchur N. L., Kryl' M. V.
Analiz i sopostavlenie programmnyh sredstv vizualizacii morskih prognozov na
osnove raschetnyh dannyh operativnoj okeanografii po chernomorskomu bassejnu
na primerah sevastopol'skogo i krymskogo regionov. // Nauchnaya vizualizaciya.
Elektronnyj zhurnal, ISSN 2079-3537, № 1, T. 8, 2016. – s. 146 - 155.
[Electronic resource]. URL:
http://sv-journal.org/2016-1/09.php?lang=ru
2. Voronina N. N. Universal System for
Visualizing Geo-Referenced Data From a Text File on a Yandex Map// Nauchnaya
vizualizaciya. Elektronnyj zhurnal, ISSN 2079-3537, № 1, V. 15, 2023. – s.83
- 89.
[Electronic resource]. URL:
http://sv-journal.org/2023-1/07/
3. [Electronic resource]. URL:
http://ckp.mhi-ras.ru/generate_image_do-sh.php
4. Pustovojtenko V.V., Zapevalov A.S. Operativnaya
okeanografiya: Sputnikovaya al'timetriya – Sovremennoe sostoyanie,
perspektivy i problemy // Seriya. Sovremennye problemy okeanologii,
Sevastopol': NPC “EKOSI-Gidrofizika”. 2012. Vyp. № 11. 218 s.
5.
A. Bogdanov, A.
I. Mizyuk, A. A. Kubryakov Evolution of Submesoscale Cyclones on the
Batumi Anticyclone Periphery Based on the Numerical Simulation Data //
Physical Oceanography vol. 29, No. 6 pp. 550-566
6. Demyshev S.G., Zapevalov A.S., Kubryakov A.I.,
CHudinovskih T.V. Evolyucii polya koncentracii 137CS v CHernom more posle
prohozhdeniya chernobyl'skogo oblaka // Meteorologiya i gidrologiya, 2001,
№10, S.49-61.
7. Zandstra M. PHP 8. Obekty, shablony i metodiki
programmirovaniya // Dialektika, 2021. [Electronic resource]. URL:
https://php.ru/manual/
8. Koptenok Ye. V., Savenko A. V., Fomin I. I., Trunnikov M.
V., Sukharev Ye. A. Analiz vozmozhnostey servisov dlya realizatsii
virtualnykh turov na primere ispolzovaniya API Yandeks. Kart. // Molodoy
uchenyy. № 19 (309), 2020. - S.130-133. URL:
https://moluch.ru/archive/309/69891/
9. [Electronic resource]. URL:
http://dvs.net.ru/mp/data/201202vw_ru.shtml
10. Mokhov V.A., Kubil V.N., Kuznetsova A.V., Georgitsa I.V. Rekursivnyy
algoritm sinkhronizatsii Api-zaprosov k gis-servisu Yandeks.Karty //Fundamentalnye
issledovaniya. № 9-1, 2015. – S. 33-38. URL:
https://fundamental-research.ru/ru/article/view?id=38961
11.Marijn Haverbeke Vyrazitel'nyj JavaScript // 2020, 480 s.
ISBN 978-5-4461-1226-5.
12. Foerderer J., Bender M., Heinzl A.
Regulation of digital platform ecosystems: evidence
from russia's google vs yandex ruling.
// V sbornike: International
Conference on Information Systems 2018, ICIS 2018. 39. 2018.
13. [Electronic resource]. URL:
http://ckp.mhi-ras.ru
14. Servis Programmy «Kopernikus» // [Electronic
resource]. URL:
https://data.marine.copernicus.eu