Также смотрите другие статьи серии "Как визуализировать и анимировать (геофизические) модели":



В зависимости от проекта и масштаба данных мы можем выбрать различные варианты визуализации — и все же, для любого масштаба данных важным является именно позволить наглядно оценить этот масштаб. К примеру, на региональном уровне отображение на глобусе Земли позволит легко понять как масштаб, так и расположение изучаемой территории. Вот мы и займемся отображением данных на глобусе.


Earth Observation Data on the Globe


Слева направо: EMAG2 Earth Magnetic Anomaly, Sandwell and Smith Free Air Gravity Grid, GEBCO Gridded Bathymetry Data.


Постановка задачи


Прежде чем мы перейдем к моделированию и получению каких-либо результатов, остановимся на отображении непосредственно исходных данных. Это позволит оценить их полноту и качество, а также поможет в дальнейшей работе и подготовит основу для презентации результатов. Не раз мне доводилось совершать одну и ту же ошибку — показывать только результаты, упуская из виду исходные данные, что приводило к непониманию как постановки задачи (каковы качество и полнота исходных данных? что вообще можно сделать с этими данными? почему сделано именно так?), так и полученных результатов (это выдающийся или посредственный результат для имеющихся данных? есть ли очевидные подтверждения правильности или неправильности результатов? что бы мы могли сделать еще?). Итак, наглядное представление данных поможет нам на всех этапах проекта от постановки задачи и до презентации результатов, так что стоит уделить достаточно времени на эту работу.


Подготовка исходных данных


Ссылки на все используемые датасеты приведены в конце статьи.


Для целей визуализации будем использовать сферу, на которую накладывается рельеф и другие данные и раскрашиваются по значениям (например, высоты над уровнем моря). Рельеф можно дополнить графическим изображением (текстурой) для получения реального вида планеты из космоса. Эффекты освещения оставим "за кадром" — хоть ParaView и позволяет управлять источниками света, но это выходит за рамки статьи.


Для отображения на сфере нам потребуются исходные данные с географическими координатами (заданными в десятичных градусах) и в формате NetCDF. Воспользуемся консольной утилитой GDAL для конвертации форматов и уменьшения разрешения данных (выбранное разрешение вполне достаточно для просмотра целого глобуса):


gdal_translate -of NetCDF -r average -tr .25 0.25 EMAG2_V2.tif EMAG2_V2.15min.nc
gdal_translate -of NetCDF -r average -tr .25 0.25 grav_28.1.nc grav_28.1.15min.nc
gdal_translate -of NetCDF -r average -tr .25 0.25 GEBCO_2019.nc GEBCO_2019.15min.nc 

Изображения планеты можно скачать с Planet texture maps web site, далее будет использовано изображение 8081_earthmap4k.jpg:


8081_earthmap4k.jpg


Для использования изображения в качестве текстуры в ParaView преобразуем его средствами ImageMagick:


convert -flip -crop 50%x100% 8081_earthmap4k.jpg _converted.png
convert _converted-1.png _converted-0.png +append 8081_earthmap4k.fixed.jpg

Теперь у нас есть готовые для отображения данные, которые мы можем показать на глобусе средствами ParaView.


Визуализация в ParaView


Загрузим NetCDF файлы в ParaView, сняв галочку "Spherical Coordinates" (хотя в сферических координатах тоже можно загрузить и отобразить, но это работает только для файлов NetCDF и, притом, добавляет излишнее сглаживание данных) и добавим фильтр "Calculator" с формулой


( 1 + (elevation/6370000)*40)*(cos(coordsY/180*3.141592) * cos(coordsX/180*3.141592) * iHat + cos(coordsY/180*3.141592) * sin(coordsX/180*3.141592) * jHat + sin(coordsY/180*3.141592) * kHat)

Здесь значение "6370000" это радиус Земли в метрах (можно указать и точнее, но визуально разница будет не различима), а "40" это коэффициент растяжения по высоте для более наглядной визуализации. Чтобы заменить исходные координаты посчитанными по указанной формуле, в фильтре следует выбрать галочку "Coordinate Results" и указать цветовую раскраску по высоте (elevation). Для набора данных GEBCO 2019 Gridded Bathymetry Data получаем следующую визуализацию:


Map GEBCO 2019 Bathymetry on the Globe


Дополнительно можно для глобуса с рельефом выбрать текстуру, добавив фильтр "TextureMaptoSphere" и указав в его параметре "Texture" ранее подготовленную картинку 8081_earthmap4k.fixed.jpg:


Map Texture on The Globe


Аналогично добавляются и другие данные с географическими координатами (заданными в десятичных градусах), например, эпицентры землетрясений:


Map Earthquakes on The Globe


Здесь прекрасно видны границы континентальных плит, оконтуренные эпицентрами землетрясений. И не оконтуренные видны тоже — значит, визуализация удалась!


Теперь мы знаем, как сделать визуализацию из вводной статьи:


Gravity Inversion Model on The Globe for Indonesia Region


Если нет необходимости совмещать модель с полным глобусом, то в формуле для перехода к сферическим координатам мы можем уменьшить радиус сферы для большей наглядности.


Ссылки


Download the global GEBCO_2019 Grid in netCDF format (11 Gbytes, 12 Gbytes uncompressed) — The GEBCO_2019 Grid is the latest global bathymetric product released by the General Bathymetric Chart of the Oceans (GEBCO) and has been developed through the Nippon Foundation-GEBCO Seabed 2030 Project.


WGM2012 Earth's Gravity Anomalies (2-arc-minute resolution) — WGM2012 is the first release of a high resolution grids and maps of the Earth's gravity anomalies (Bouguer, isostatic and surface free-air), computed at global scale in spherical geometry.


EMAG2: Earth Magnetic Anomaly Grid (2-arc-minute resolution) — Magnetic anomaly maps provide insight into the subsurface structure and composition of the Earth's crust. Anomalies trending parallel to the isochrons (lines of equal age) in the oceans reveal the temporal evolution of oceanic crust.


Planet texture maps web site


GDAL — GDAL is a translator library for raster and vector geospatial data formats that is released under an X/MIT style Open Source License by the Open Source Geospatial Foundation.


ImageMagick — ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you may use, copy, modify, and distribute in both open and proprietary applications.


HOWTO: Visualization on The Globe — более техническая статья на английском языке на LinkedIn.