Данная публикация это начало цикла статей. Если вам интересно, скажите об этом, а если не интересно, цикл на этом и закончится, тогда просто смотрите ниже список необходимого программного обеспечения и примеры.
Также смотрите другие статьи цикла:
- Вводная статья со списком используемого программного обеспечения
- Показываем исходные данные
- 3D анимация и визуализация 4D данных
- Информативность визуализации
- Воксельные модели и сетчатые поверхности
Это не пошаговое руководство по визуализации трех- и четырехмерных данных, а подход к тому, как и чем это можно сделать и, притом, сделать качественно. Вероятно, многие из нас бывали в ситуациях, когда уже есть подготовленные с большим трудом данные, которые необходимо визуализировать, но неизвестно, как же это сделать так, чтобы не испортить все впечатление от выполненной работы. Существует много коммерческого программного обеспечения для этих целей, но мы будем рассматривать исключительно Open Source программы.
Немного предыстории
Еще в мою бытность студентом-радиофизиком довелось столкнуться с проблемами визуализации физических моделей — для курсовых и дипломных работ (бакалавриат и магистратура). Задача была решена с помощью псевдотрехмерного представления, но оставила некоторое чувство неудовлетворенности. Аналогично, работая в студенческие времена в командах по некоторым исследовательским грантам и на кафедре, заметил, что именно задачи визуализации все стараются "спихнуть" на кого-нибудь еще. С тех пор прошло почти два десятилетия, в течении которых во множестве проектов пришлось придумывать различные способы отображения трехмерных и четырехмерных (изменяющихся во времени) данных и все эти варианты оставляли легкое сожаление о том, что полученные результаты несколько обесцениваются формой их визуализации.
И вот пришло время, когда накопившиеся недовольство заставило заняться темой визуализации всерьез… к счастью, я не догадывался, что это займет годы до получения такого результата, который бы оправдывал затраченные усилия. В прошлом году мы с коллегой занялись публикацией имеющихся у нас геофизических и геологических результатов на LinkedIn и на английском языке, и оказалось, что очень многим читателям очень интересна в том числе и тема визуализации, потому что они так же давно сталкиваются со сходными проблемами представления данных. Хабр я читаю очень давно и, само собой, возникло желание поделиться информацией и с аудиторией хабра.
Используемое программное обеспечение
Далее речь идет об Open Source библиотеке визуализации VTK и основанном на ней Open Source проекте ParaView. Также для загрузки в ParaView геоданных мне потребовалось создать свое Open Source расширение к нему N-Cube ParaView plugin for 3D/4D GIS Data Visualization с поддержкой GeoTIFF растров (рельеф, космоснимки, ортофотоснимки) и шейпфайлов (векторные данные такие, как границы стран, моря, реки) и табличных данных (скважины, данные о землетрясениях, извержениях вулканов).
Open Source проект PyVista предоставляет VTK для визуализации в среде Jupyter Notebook. То есть все то, что сделано в ParaView становится доступным и в Jupyter Notebook — и наоборот — с помощью PyVista. Также В PyVista есть дополнительные возможности работы с поверхностями, рекомендую смотреть интерактивные ноутбуки Jupyter Notebook в документации.
Фреймворк симуляции mantaflow позволяет моделировать движение жидкости, газа и твердых тел (к примеру, огонь или дым, или наводнение).
В конце статьи приведены ссылки на все перечисленные проекты.
Примеры визуализации
Структурная модель вулкана скомбинирована с симуляцией дыма от извержения:
Модель внутренних камер и жерл вулкана:
Визуализация трехмерной модели на глобусе с наложенной на рельеф полупрозрачной картой:
Ссылки
Jupyter Notebook — Project Jupyter exists to develop open-source software, open-standards, and services for interactive computing across dozens of programming languages.
mantaflow — open-source framework targeted at fluid simulation research in Computer Graphics and Machine Learning.
N-Cube ParaView plugin for 3D/4D GIS Data Visualization
ParaView — ParaView is an open-source, multi-platform data analysis and visualization application.
PyVista — 3D plotting and mesh analysis through a streamlined interface for the Visualization Toolkit (VTK)
VTK — The Visualization Toolkit (VTK) is open source software for manipulating and displaying scientific data. It comes with state-of-the-art tools for 3D rendering, a suite of widgets for 3D interaction, and extensive 2D plotting capability.
happy-cat
Мне довольно часто приходится визуализировать ландшафт на участках заказчика (но к сожалению в своей голове), вот пригодился бы небольшой и узко заточенный софт который работал бы на планшете под IOS или Android.
Иными словами на карту наносится данные с нивелира (в условных высотах), чем чаще тем лучше а потом софт покажет все выпуклости, ямы, направление (перепад) высоты и уклона и тп, и желательно все в 3D только в масштабе 6-50 соток
N-Cube Автор
Можно так: загружаем в ParaView точки высот из CSV файла, делаем триангуляцию для получения поверхности, строим изолинии, конвертируем все для веб blog.kitware.com/paraview-glance-mobile-support и смотрим на планшете.
happy-cat
Да, как на приведенной вами ссылке (как чел вертит зуб) и хотелось бы вертеть или крутить на 360 градусов кусок участка с ландшафтом
Кстати — я обыскал весь Гугл стор и Апп стор — ничего подобного нет, вот вам и ниша для разработки программы и ее продажи. Имхо, это нужно геодезистам, ландшафтникам, строителям — одним словом — платежеспособная публика (особенно за бугром)
N-Cube Автор
Так сохраните в яваскрипт из ParaView (смотрите ссылку с описанием в предыдущем посте) и загрузите на статический хостинг — будете вертеть сколько душе угодно, хоть на планшете, хоть на смартфоне!
Коммерческих продуктов есть немало, навскидку — www.esri.com/~/media/Files/Pdfs/library/brochures/pdfs/arcgis-for-mobile.pdf
Shiny2
Думаю основная проблема в том что нельзя просто так ткнуть высоты и получить правильную треугольную сетку по рандомному количеству флажков
Shiny2
Готов взяться для iOS. Можно в принципе объединить усилия с ОПом, я отвечаю только за вывод на экран, с вас ветрексы.
osmanpasha
Точно не уверен, но по-моему Python, numpy и scipy умеют интерполировать точки на поверхность, а plotly — экспортировать интерактивную визуализацию поверхности в html