ПОТОКОВАЯ ЗАГРУЗКА

Потоковая загрузка рельефа для DEM, ортофотопланов и облаков точек на гигабайты

Потоковая загрузка рельефа — это то, как STREAM открывает съёмку, которая намного больше памяти вашей видеокарты, и держит её отзывчивой: рельеф нарезан на фиксированные тайлы нескольких уровней детализации, и в каждом кадре камера запрашивает только те тайлы, которые действительно видит. Остальное остаётся на диске. Поэтому DEM на гигабайты двигается без полосы загрузки, облако точек становится поверхностью, по которой можно мерить, а несколько DEM одного объекта ведут себя как одна — всё на вашей машине.

Что такое потоковая загрузка рельефа?

Большая DEM не помещается в GPU, и не должна. Потоковая загрузка держит весь набор данных на диске в тайловой многоуровневой форме и переносит в видеопамять только видимую часть: сначала грубые тайлы на весь вид, затем тонкие там, куда направлена камера.

STREAM делает это через двухуровневый растровый путь. Исходный GeoTIFF или BigTIFF один раз читается через GDAL и преобразуется в родную оптимизированную копию: детерминированная раскладка тайлов 512 × 512 с уровнями обзора, Float32 для высот и RGBA8 для ортофотопланов. Когда копия готова, рендерер читает тайлы прямо из неё, не возвращаясь к исходному файлу.

В итоге размер файла перестаёт быть пределом. Важно, на сколько вы смотрите, а это ограничено экраном.

Потоковая загрузка рельефа в STREAM

Грузит только то, на что вы смотрите

У каждого тайла рельефа есть идентификатор: уровень, x и y. В каждом кадре состояние камеры формирует набор запросов: закреплённый грубый набор на весь вид и набор детализации там, где фокус. Тайлы вне этого набора не декодируются, не загружаются и не удерживаются.

Преобразует один раз, дальше открывает за секунды

При первом открытии STREAM строит родную оптимизированную копию — тайлы 512 × 512, уровни обзора, тайловый BigTIFF со сжатием ZSTD. Таблица тайлов фиксирует, что построено; кэш считается полным, только когда построен каждый тайл. С этого момента рендерер читает тайлы напрямую, и повторное открытие быстрое.

Декодирование вне потока рендера

Декодирование тайлов идёт в рабочих потоках задачами с пятью уровнями приоритета — от фонового предсказания до критического — под лимитом задач в полёте. Устаревшие задачи отменяются по поколению, так что быстрый поворот камеры не оставляет очередь никому не нужных тайлов.

Грубая подмена — но никогда дыра

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

Вытеснение, сохраняющее подмену

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

Несколько DEM — одна поверхность

Когда видимо больше одной DEM, STREAM связывает стек в единую виртуальную мозаику: побеждает верхний валидный пиксель, NoData проваливается на слой ниже. Анализ, горизонтали, разрезы и гидрология читают ту же мозаику, что рисует рендерер, — а не только первый файл.

Облака точек становятся поверхностями при импорте

Файл LAS/LAZ сначала зондируется — число точек, классификация, RGB, границы — затем асинхронно растеризуется в тот же родной тайловый формат. Вы выбираете, какой будет поверхность: только точки земли, все точки или ортофотоплан из цветов точек.

Высота и изображение идут раздельно

Высоты и ортофотоплан отслеживаются как отдельные наборы разреженных страниц, у каждого своя резидентность, так что тяжёлый ортофотоплан никогда не лишает рельеф тайлов высот. Рендер — Vulkan на GPU, а на ноутбуке STREAM сам выбирает дискретную карту.

Как потоковая загрузка рельефа работает на практике

  1. 1

    Откройте съёмку

    Добавьте DEM (GeoTIFF или BigTIFF). При самом первом открытии STREAM преобразует её в родной тайловый формат; карточка прогресса справа внизу показывает сборку, её можно отменить.

  2. 2

    Двигайтесь свободно

    Панорамируйте и масштабируйте. Грубые тайлы сразу закрывают вид; тонкие подгружаются туда, куда направлена камера. Ждать загрузки всего файла не нужно.

  3. 3

    Натяните ортофотоплан

    Добавьте GeoTIFF ортофотоплана. Он идёт своим набором страниц в родном разрешении, независимо от тайлов высот.

  4. 4

    Подключите облако точек

    Добавьте файл LAS/LAZ и выберите нужную поверхность: DEM по земле, DEM по всем точкам или ортофотоплан из цветов точек. Результат — потоковая поверхность, как и любая другая.

  5. 5

    Сложите несколько DEM

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

  6. 6

    Откройте снова

    Родная копия остаётся с проектом. В следующий раз та же съёмка откроется за секунды, потому что преобразование уже сделано.

В какую поверхность превращается облако LAS/LAZ при импорте — три варианта растеризации
ВариантКакие точки берутсяЧто вы получаете
DEM по землеТочки класса 2 (земля), минимальная высота в каждой ячейке.Поверхность голой земли для объёмов, уклонов и проектирования.
DEM по всем точкамВсе точки, максимальная высота в каждой ячейке.Поверхность с растительностью и сооружениями — то, что показывает DSM.
ОртофотопланЦвет самой высокой точки в каждой ячейке, если облако несёт RGB.Слой изображения, натянутый на рельеф и идущий своим набором страниц.

Поддерживаемые форматы

GeoTIFF / BigTIFF
Исходные DEM и ортофотоплан, читаются через GDAL
LAS / LAZ
Облако точек, растеризуемое в потоковую поверхность при импорте
.st.tif / .so.tif
Родные оптимизированные копии STREAM — тайлы 512 × 512 с уровнями обзора
Виртуальная мозаика
Несколько видимых DEM, связанных в одну поверхность для рендера и анализа

Частые вопросы

Что такое потоковая загрузка рельефа?

Хранение большого набора данных рельефа на диске в тайловой многоуровневой форме и перенос в видеопамять в каждом кадре только видимых тайлов — грубых на весь вид, тонких там, куда направлена камера. Размер файла перестаёт быть пределом; предел — на сколько вы смотрите, а это ограничено экраном.

Насколько большую DEM может стримить STREAM?

STREAM сделан для DEM гигабайтного масштаба. Поскольку резидентны только видимые тайлы, размер влияет на разовое преобразование при первом открытии, а не на отзывчивость рельефа потом.

Почему первое открытие дольше последующих?

При первом открытии STREAM преобразует источник в родную оптимизированную копию: тайлы 512 × 512, уровни обзора, сжатие. Эта сборка выполняется один раз и показывается отменяемой карточкой прогресса. Дальше рендерер читает тайлы прямо из родной копии, и повторное открытие занимает секунды.

Меняет ли STREAM мой исходный GeoTIFF?

Нет. Источник читается через GDAL; STREAM пишет рядом собственную оптимизированную копию и работает с ней. Ваш исходный файл не перезаписывается.

Можно ли загрузить несколько DEM одного объекта?

Да. Видимые DEM связываются в единую виртуальную мозаику — побеждает верхний валидный пиксель, NoData проваливается на слой ниже — и анализ читает ту же мозаику, что рисует рендерер. Это было реальным исправлением: раньше часть инструментов читала только первую DEM.

Что происходит с облаком точек LAS/LAZ?

Оно зондируется — число точек, классификация, RGB, границы — затем асинхронно растеризуется в тот же родной тайловый формат. Поверхность выбираете вы: только точки земли (класс 2, минимальная высота), все точки (максимальная высота) или ортофотоплан из цветов точек.

Почему детали проступают через мгновение после остановки?

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

Какая видеокарта нужна?

STREAM рендерит через Vulkan на GPU. На ноутбуке с двумя картами он сам выбирает дискретную и записывает для приложения предпочтение высокой производительности; реально используемую карту видно в Справка ▸ Диагностика производительности.

Нужно ли потоковой загрузке подключение к интернету?

Нет. Всё — преобразование, потоковая загрузка, рендер — выполняется на вашей машине. Ничего не отправляется, данные не покидают компьютер.

А если у двух растров разные системы координат?

Первая валидная CRS растра становится CRS проекта. Растр с несовпадающей CRS всё равно импортируется, но не рисуется в рельефе, пока расхождение не устранено, — STREAM не угадывает преобразование молча.

Попробуйте STREAM в своём проекте

Бесплатная бета для Windows x64. Работает полностью офлайн с GeoTIFF, LAS/LAZ и DXF.

Скачать STREAM бесплатно