ArcGIS ImageServer

Архитектура интеграции растровых сервисов в CesiumJS

CesiumJS использует абстракцию провайдеров изображений для подключения внешних источников тайлов и растровых данных. Для работы с сервисами типа ArcGIS ImageServer применяется специализированный провайдер, ориентированный на REST API модели динамических изображений.

ArcGIS ImageServer предоставляет доступ к растровым данным через HTTP-интерфейс, поддерживая:

  • динамическое рендеринг изображений на сервере;
  • доступ к многослойным растрам;
  • применение функций обработки (Raster Functions);
  • запросы по пространственным и временным диапазонам;
  • экспорт фрагментов изображения в заданной проекции.

CesiumJS интегрируется с этим типом сервиса через ArcGisImageServerImageryProvider, который интерпретирует ответы REST API и преобразует их в текстуры для глобуса.


Подключение ArcGIS ImageServer в CesiumJS

Основной класс для работы:

const imageryLayer = new Cesium.ImageryLayer(
    new Cesium.ArcGisImageServerImageryProvider({
        url: "https://sampleserver.domain.com/arcgis/rest/services/Landsat/ImageServer"
    })
);

viewer.imageryLayers.add(imageryLayer);

Провайдер автоматически выполняет:

  • определение пространственной системы координат;
  • разбиение изображения на тайлы;
  • запросы к /exportImage;
  • наложение текстур на плиточную структуру Cesium.

Основные параметры ArcGisImageServerImageryProvider

url

Базовый REST endpoint ImageServer:

url: "https://server/arcgis/rest/services/serviceName/ImageServer"

Этот адрес должен указывать именно на ImageServer, а не MapServer.


rectangle

Ограничение области отображения:

rectangle: Cesium.Rectangle.fromDegrees(-180, -90, 180, 90)

Используется для оптимизации загрузки и ограничения покрытия слоя.


token

Для защищённых сервисов ArcGIS используется токен авторизации:

token: "YOUR_ARCGIS_TOKEN"

Токен передаётся в каждый REST-запрос.


tilingScheme

Cesium поддерживает разные схемы тайлинга:

  • WebMercatorTilingScheme (по умолчанию для большинства сервисов)
  • GeographicTilingScheme (EPSG:4326)
tilingScheme: new Cesium.WebMercatorTilingScheme()

Несовпадение схемы приводит к смещению изображений.


maximumLevel

Контроль детализации:

maximumLevel: 18

Ограничивает количество уровней приближения и влияет на нагрузку сети.


credit

Атрибуция данных:

credit: "Esri ImageServer"

Используется для отображения источника данных в интерфейсе Cesium.


REST модель ArcGIS ImageServer

ImageServer основан на REST архитектуре и поддерживает несколько ключевых операций.

/exportImage

Основной запрос для получения растрового фрагмента.

Пример запроса:

.../ImageServer/exportImage?
bbox=...
&size=256,256
&format=png
&f=image

Cesium формирует эти запросы автоматически для каждого тайла.


/info

Возвращает метаданные сервиса:

  • пространственная система координат;
  • диапазоны значений пикселей;
  • количество каналов;
  • поддерживаемые функции обработки.

Cesium использует эти данные для конфигурации слоя.


Raster Functions

Одно из ключевых преимуществ ImageServer — возможность серверной обработки изображений.

Примеры функций:

  • NDVI (нормализованный индекс растительности);
  • цветовые схемы (colormap rendering);
  • фильтрация;
  • растяжение контраста.

Cesium может передавать параметры через renderingRule.


Использование renderingRule

Позволяет изменять визуализацию данных без изменения исходного растра.

const provider = new Cesium.ArcGisImageServerImageryProvider({
    url: "https://server/arcgis/rest/services/Land/ImageServer",
    renderingRule: {
        rasterFunction: "NDVI_Colorized"
    }
});

Рендеринг выполняется на стороне сервера, что снижает нагрузку на клиент.


Работа с многоканальными изображениями

ImageServer часто возвращает многоспектральные данные:

  • RGB;
  • инфракрасный диапазон;
  • тепловые каналы;
  • гиперспектральные наборы.

Cesium отображает такие данные через серверную композицию каналов.

Пример настройки каналов:

renderingRule: {
    rasterFunction: "CompositeBand",
    variableName: "Raster",
    arguments: {
        Raster: {
            rasterFunction: "BandArithmetic",
            arguments: {
                Method: 0
            }
        }
    }
}

Пространственные системы координат

ArcGIS ImageServer может использовать различные CRS:

  • Web Mercator (EPSG:3857);
  • WGS84 (EPSG:4326);
  • локальные проекции.

CesiumJS требует согласования с глобусной моделью, поэтому при несоответствии выполняется reprojection.

Проблемные случаи:

  • ImageServer в локальной проекции без поддержки WGS84;
  • отсутствие трансформации на сервере;
  • некорректные extent метаданные.

Производительность и тайлинг

ImageServer не является классическим тайловым сервисом, но Cesium адаптирует его под тайловую модель.

Особенности:

  • каждый тайл генерируется запросом /exportImage;
  • возможна серверная задержка рендеринга;
  • кэширование зависит от HTTP headers.

Оптимизация:

  • ограничение maximumLevel;
  • использование cacheControl;
  • уменьшение размера tileWidth и tileHeight (если поддерживается сервером).

Динамические растры и временные слои

ImageServer поддерживает временные данные (time-aware imagery).

Cesium может передавать временные параметры:

time: Cesium.JulianDate.now()

Сервер возвращает изображение, соответствующее временной выборке.

Используется для:

  • спутниковых снимков;
  • климатических данных;
  • мониторинга изменений поверхности.

Ошибки интеграции и диагностика

1. Черный экран слоя

Причины:

  • неверный URL (MapServer вместо ImageServer);
  • отсутствие CORS;
  • неподдерживаемая проекция.

2. Смещение изображения

Причины:

  • неправильный tilingScheme;
  • несоответствие bounding box;
  • ошибка reprojection на сервере.

3. Медленная загрузка

Причины:

  • тяжелые raster functions;
  • отсутствие кэширования;
  • слишком высокий maximumLevel.

4. Ошибки авторизации

Причины:

  • истекший token;
  • отсутствие прав доступа к сервису;
  • неправильная передача токена в URL.

Связь CesiumJS и ArcGIS REST модели

Cesium не использует native ArcGIS SDK, а работает через REST слой абстракции.

Это означает:

  • отсутствие зависимости от ArcGIS runtime;
  • полная работа через HTTP;
  • совместимость с любыми ImageServer, соблюдающими спецификацию.

Архитектурно взаимодействие выглядит так:

  1. Cesium запрашивает тайл;
  2. формируется /exportImage запрос;
  3. сервер ArcGIS выполняет рендеринг;
  4. возвращается PNG/JPEG;
  5. Cesium применяет текстуру на плиту глобуса.

Использование нескольких ImageServer слоёв

Cesium поддерживает многослойную композицию:

viewer.imageryLayers.add(new Cesium.ImageryLayer(
    new Cesium.ArcGisImageServerImageryProvider({
        url: "https://server/ImageServer1"
    })
));

viewer.imageryLayers.add(new Cesium.ImageryLayer(
    new Cesium.ArcGisImageServerImageryProvider({
        url: "https://server/ImageServer2"
    })
));

Порядок слоёв влияет на визуальное наложение:

  • нижний слой — базовый растр;
  • верхний слой — аналитические или тематические данные.

Кэширование и повторное использование тайлов

Cesium использует встроенный механизм request scheduler и cache:

  • повторные запросы одного тайла избегаются;
  • текстуры хранятся в GPU памяти;
  • HTTP cache ускоряет повторные загрузки.

При корректной настройке сервера ImageServer может отдавать заголовки:

  • ETag;
  • Cache-Control;
  • Last-Modified.

Поддержка Esri сервисов в экосистеме Cesium

Esri предоставляет экосистему сервисов ArcGIS, включая ImageServer, MapServer и FeatureServer.

CesiumJS интегрируется с ними на уровне REST протокола, что позволяет:

  • использовать готовые геопространственные данные;
  • подключать спутниковые снимки;
  • выполнять серверную обработку растров;
  • комбинировать в 3D сценах глобуса.

Расширенные сценарии применения ImageServer в CesiumJS

Аналитика поверхности Земли

  • индексы растительности;
  • тепловые карты;
  • классификация земель.

Мониторинг инфраструктуры

  • контроль строительства;
  • анализ изменений;
  • спутниковое наблюдение.

Геопространственное моделирование

  • совмещение с 3D terrain;
  • наложение ортофотопланов;
  • анализ рельефа и растровых данных.

Гибридные визуализации

  • ImageServer + 3D Tiles;
  • ImageServer + vector Feature layers;
  • динамическое смешивание слоёв.

Поведение при масштабировании сцены

Cesium динамически адаптирует:

  • уровень детализации ImageServer;
  • количество запросов;
  • размер тайлов.

При сильном zoom-out сервер может возвращать агрегированные изображения, при zoom-in — детализированные растры.


Особенности отладки сетевых запросов

Для анализа взаимодействия Cesium и ImageServer используются:

  • DevTools Network tab;
  • анализ /exportImage запросов;
  • проверка параметров bbox, size, format.

Ключевые параметры запроса:

  • bbox (границы тайла);
  • size (размер пикселей);
  • imageSR (система координат);
  • renderingRule (серверная обработка).

Совместимость версий ArcGIS ImageServer

Разные версии ArcGIS Server могут отличаться:

  • поддержкой raster functions;
  • структурой JSON ответов;
  • требованиями к токенам;
  • поведением экспорта изображений.

CesiumJS адаптируется через универсальный REST парсер, но сложные функции зависят от серверной реализации.