CesiumJS строит визуализацию виртуального глобуса на основе
многослойной модели данных, где ключевую роль в формировании визуального
контекста играет система изображений поверхности (imagery).
Поверхностные данные не являются частью геометрии сцены — они
накладываются как текстурные слои на эллипсоид Земли или другие
3D-объекты через механизм ImageryLayer.
Архитектура изображений разделяет:
Такое разделение позволяет независимо управлять визуальной составляющей и источниками картографических тайлов.
ImageryLayer представляет собой единицу визуального
покрытия поверхности, связанную с конкретным источником тайлов. Каждый
слой отвечает за:
Слой не хранит геометрию — он оперирует растровыми данными, накладываемыми на поверхность глобуса.
В CesiumJS используется стековая модель, где порядок слоёв определяет итоговую визуализацию.
Основные принципы:
alpha) смешивает изображенияПример логики композиции:
Каждый слой является экземпляром ImageryLayer, а
управление ими осуществляется через
ImageryLayerCollection.
Коллекция слоёв — центральный контейнер:
Типичная операция добавления:
viewer.imageryLayers.add(layer);
Удаление:
viewer.imageryLayers.remove(layer);
Перемещение слоя:
viewer.imageryLayers.raise(layer);
viewer.imageryLayers.lower(layer);
ImageryLayer всегда связан с источником данных
ImageryProvider. Провайдер определяет:
Основные типы:
BingMapsImageryProviderOpenStreetMapImageryProviderArcGisMapServerImageryProviderWebMapServiceImageryProvider (WMS)WebMapTileServiceImageryProvider (WMTS)TileMapServiceImageryProviderКаждый провайдер инкапсулирует специфику внешнего картографического сервиса.
Создание слоя всегда включает привязку к провайдеру:
import { OpenStreetMapImageryProvider, ImageryLayer } from "cesium";
const provider = new OpenStreetMapImageryProvider({
url: "https://a.tile.openstreetmap.org/"
});
const layer = new ImageryLayer(provider);
viewer.imageryLayers.add(layer);
Слой становится частью глобальной сцены и начинает участвовать в отрисовке.
ImageryLayer поддерживает набор свойств, влияющих на финальный рендеринг.
Определяет степень видимости слоя:
layer.alpha = 0.5;
Используется для:
Регулирует интенсивность цвета:
layer.brightness = 1.2;
Изменяет разницу между светлыми и тёмными областями:
layer.contrast = 1.1;
layer.gamma = 0.8;
Применяется для корректировки визуального восприятия при разных источниках данных.
layer.hue = 0.2;
layer.saturation = 1.5;
Позволяют стилизовать карту под тематические задачи.
Порядок слоёв определяет итоговую композицию.
Основные операции:
raise() — поднять слой вышеlower() — опустить нижеraiseToTop() — переместить в верхlowerToBottom() — переместить в низПример:
viewer.imageryLayers.raiseToTop(layer);
Слой может динамически менять позицию в зависимости от пользовательского взаимодействия или логики приложения.
Слои могут взаимодействовать через альфа-композицию:
Также применяется механизм show:
layer.show = false;
Он полностью исключает слой из рендеринга без удаления из коллекции.
ImageryLayer работает с тайловой сеткой:
Каждый тайл:
Оптимизация достигается через:
ImageryLayer накладывается поверх terrain-системы:
При использовании CesiumTerrainProvider изображение
деформируется под рельеф.
CesiumJS поддерживает более глубокую модификацию визуализации через:
ImageryLayer становится источником входных текстур для GPU-пайплайна.
Некоторые провайдеры поддерживают временные слои:
ImageryLayer может обновляться без пересоздания:
layer.imageryProvider = newProvider;
Каждый слой определяет:
Это позволяет ограничивать загрузку данных:
Система кэширования включает:
Оптимизация достигается через:
ImageryLayer участвует в GPU-пайплайне:
Критически важные факторы производительности: