теги:

3D візуалізація затоплення берегів Дністра. Як ми це робили (+ красиві картинки)

Оцінка статті на цей момент: +0/-1
Читати Не читати Коментувати
  • 4150 Перегляди
  • 0 Коментарі
  • 18/12/2017Дата публікації

Як ми робили 3D модель затоплення берегів Дністра

Надя Кельм

---

Десь два місяці тому до нас в редакцію зайшла наша колега Люба Величко. Вона розповіла про своє розслідування щодо плану зведення шести малих ГЕС на Дністрі і запропонувала візуалізувати можливі наслідки цієї авантюри. Щоб зробити це, я звернулася безпосередньо до планової документації, і для кожної ділянки прорахувала прогнозований рівень затоплення.

Спершу ідея була зробити статичну карту і показати на ній площу затоплення. Для цього я завантажила звідси geotiff моделі висот, з якого вийшла топографічна мапа (далі курсивом по тексту показана послідовність дій в програмі QGIS ).

(QGIS: Geotiff, raster> extraction> contour with interval 5m, with pointed “Attribute name”)

Визначила для кожної ділянки, на якій висоті над рівнем моря (R) протікає річка.
(contour layer> edit> with information tool choose contour line on the edge of the river>look at feature table on right> ELEV = R).
Тепер можна було, склавши R та висоту, на яку підніметься вода (H), отримати рівень затоплення (L): L = R+H, і виділити на карті всі висоти від 0 до отриманого результату (L)
( Geotiff> raster> raster calculator>expretion = geotiff (double click on raster bands)

Так я прорахувала кожну ділянку, всі шматки склеїла і перевела у вектор.
(Convert to vector: raster> conversion> raster to vector
New vector layers: edit> remove excessive parts, smooth:
processing> toolbox> smoth geometry> iterations: 10, offset: 20
Merge all smoothed layers: vector> data manegment tools> merge vector layers)

Наступною задачею було визначити загальну площу затоплення. Для цього я склеїла усі частини полігону (окремо для площі затоплення, окремо для площі річки між першою і останньою дамбами) за допомогою merge tool і підрахувала площу кожного:
координати мають відображатися у метрах, а не градусах, виділяємо полігон, Open attribute table, Field Calculator (ctrl I), print $area as operator
Площа полігону затоплення мінус площа полігону річки = загальна площа земель, які буде затоплено.

Залишилося додати населенні пункти, позначити територію Нацпарку

Але кінцевий результат не вражав, оскільки на такому великому масштабі підняття рівня води на 8м не дуже видно, а під воду можуть піти цілі селища. Саме тому виникла ідея зробити 3D візуалізацію.
Для цього в QGIS є чудовий плагін qgis2threejs, який на основі даних висот з DEM (digital elevation model) файлу (наш geotiff) створює 3D модель:

Окрім того, за допомогою панелі справа в такій моделі можна регулювати рівень води, що виявилося дуже доречним для цього проекту. На відміну від нашого проекту про Драгобрат, ми з колегами вирішили не робити інтерактивну візуалізацію, а зробити лише відео з 3D моделі.

Трошки докладніше про плагін. В результаті його застосування ви отримуєте окрему теку з таким набором файлів:

В різні файли я вносила різні зміни:
***.html — сюди додавала код для анімації (про це далі)
Qgis2threejs.css — стиль шрифтів
Qgis2threejs.js — код по зміні вигляду сцени, зокрема додавання туману (app.scene.fog = new THREE.Fog( 0xF1F2FD, 0.1, 750 );)
Залишилося прив’язати супутниковий знімок потрібної місцевості до карти в QGIS для створення текстури моделі і записати відео з екрана, пересуваючись вздовж річки:

Але виявилося, що пересування по моделі “вручну” виходить нерівне, рухи різкі і непередбачувані. Тому й виникла ідея анімувати модель за допомогою JavaScript.

Для цього я використовувала бібліотеку TweenJS, яка забезпечує плавне пересування між двома визначеними точками.
Залишилося знайти позиції камери для кожної ділянки та точки, куди камера “дивиться”.
Отже, кожен tween складався з трьох змінних, наприклад:
позиція камери:
position_tween({x:744, y:-299, z:120}, {x:744, y:-299, z:120}, 5000 )
рівень води:
height_tween(100, 140, 4000, 0)
куди камера направлена:
new THREE.Vector3( 524, -270.13244339628557, 9)

Відео записувала програмою Camtasia, в ній же і монтувала, додавши для кожної ділянки в правому верхньому куті інформаційну плашку.
Фінальна версія виглядає так:
https://www.youtube.com/watch?v=Uz8-zut9svA

Оцінка статті на цей момент: +0/-1
Читати Не читати Коментувати
 
 

Коментарі 0

Для того, щоб писати свої коментарі, залогіньтесь! Якщо ви не маєте логіну, тоді спочатку зареєструйтесь, щоб його отримати!