Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы визуализировать геопространственные данные с помощью обозревателя данных Microsoft Planetary Computer Pro или API Tiler, необходимо определить одну или несколько конфигураций отрисовки для каждой из коллекций SpatioTemporal Asset Catalog (STAC). Конфигурация отрисовки указывает, как ресурсы данных в элементах STAC объединяются, обрабатываются и стилизуются для создания тайлов карт.
В этом руководстве описывается процесс создания конфигураций отрисовки, от понимания предварительных требований к настройке дополнительных параметров. Возможности визуализации Planetary Computer Pro основаны на проекте TiTiler с открытым исходным кодом.
Prerequisites
Прежде чем настроить отрисовку, убедитесь, что выполнены следующие необходимые действия.
- Коллекция STAC существует: Вы создали коллекцию STAC в Planetary Computer Pro.
- Прием данных: Вы добавили элементы STAC , содержащие геопространственные ресурсы данных, которые необходимо визуализировать в коллекции.
- Среда Python 3.10 (или более поздней версии)
Процесс создания конфигурации рендеринга
| Step | Title | Description |
|---|---|---|
| 1 |
Определение item_assets в JSON коллекции |
Во-первых, необходимо убедиться, что JSON коллекции STAC содержит четко определенный item_assets раздел, описывающий общие ресурсы в элементах. |
| 2 | Поймите вашу цель в работе с данными и их визуализацией | Затем определите тип данных, с которыми вы работаете, и решите, как она будет отображаться визуально (цветовая карта с одним диапазоном, многополосная RGB). |
| 3 | Создание объекта конфигурации отрисовки | Теперь создайте базовую структуру JSON, содержащую одну или несколько конфигураций отрисовки для пользовательского интерфейса обозревателя. |
| 4 |
options Определение строки — основные параметры |
Настройте основные параметры TiTiler в строке options , чтобы выбрать правильные ресурсы или полосы и применить базовые стили, такие как цветные карты или изменение размера. |
| 5 |
Добавление дополнительных options параметров (по мере необходимости) |
При необходимости расширьте визуализацию, добавив расширенные функции TiTiler, такие как выражения, алгоритмы, цветовая коррекция или пользовательские карты цветов с помощью options строки. |
| 6 | Добавьте конфигурацию отрисовки в вашу коллекцию | Наконец, примените созданный вами список конфигурации визуализации к вашей коллекции STAC с помощью веб-интерфейса или API. |
Шаг 1. Определение item_assets в JSON коллекции
Поле item_assets в JSON-коллекции является необходимым для рендеринга, так как оно предоставляет консолидированное описание ресурсов, содержащихся в элементах коллекции. Подсистема отрисовки и веб-приложение Explorer используют поле item_assets для понимания доступных данных для визуализации без проверки отдельных элементов. Он объявляет ключи (имена) ресурсов, таких как image, red, NIR или elevation, которые затем ссылаются на конфигурации отрисовки. Кроме того, item_assets могут включать метаданные расширения STAC, такие как eo:bands, для многополосных активов, что способствует выбору определенных полос для отрисовки. Обозреватель использует эти сведения для заполнения меню и понимания общей структуры данных.
Пример item_assets для 4-полосного ресурса NAIP:
{
"item_assets": {
"image": {
"type": "image/tiff; application=geotiff; profile=cloud-optimized",
"roles": [
"data"
],
"title": "RGBIR COG tile",
"eo:bands": [
{
"name": "Red",
"common_name": "red",
"description": "Red band, 610-680 nm"
},
{
"name": "Green",
"common_name": "green",
"description": "Green band, 510-600 nm"
},
{
"name": "Blue",
"common_name": "blue",
"description": "Blue band, 420-530 nm"
},
{
"name": "NIR",
"common_name": "nir",
"description": "Near-infrared band, 830-920 nm"
}
]
}
},
// ... other collection properties ...
}
Дополнительные сведения см. в item_assets. Также обратитесь к официальной спецификации расширения элементов STAC.
Прежде чем продолжить, убедитесь, что JSON вашей коллекции STAC содержит этот раздел. Определение коллекции можно обновить с помощью API или веб-интерфейса.
Шаг 2. Понимание цели данных и визуализации
Перед созданием конфигурации определите, как визуализировать данные:
| Тип данных | Description | Example | Цель визуализации |
|---|---|---|---|
| Данные Single-Band | Каждый пиксель имеет одно значение. | повышение, температура, классификация земли, вычисляемый индекс | Сопоставляйте эти отдельные значения с диапазоном цветов или дискретными цветами с помощью цветовой карты. |
| Данные многополосного диапазона | Данные имеют несколько полос на пиксель. | Спутниковые изображения RGB, многоспектральные данные | Объедините три конкретные полосы для того, чтобы представлять каналы красного, зеленого и синего цветов в выходном изображении. |
| Производные данные (выражения) | Вычислите новое значение из одного или нескольких диапазонов или ресурсов. | Нормализованный разностный индекс растительности (NDVI) из красного и ближнего инфракрасного диапазонов | Определите математическое выражение и визуализируйте результат (одноканальный с цветовой схемой или многоканальный напрямую). |
| Производные данные (алгоритмы) | Вычислите новое значение в пикселях. | Теневая карта показывает контуры данных о высотах | Используйте математический алгоритм для преобразования данных в визуализацию. |
| Кубы данных (GRIB/NetCDF) | Данные, хранящиеся в форматах GRIB или NetCDF с несколькими переменными и измерениями. | время, уровни давления | Выберите конкретную переменную и, возможно, сделайте срез по другим измерениям (например, времени) для 2D визуализации. |
Шаг 3. Создание объекта конфигурации отрисовки
Конфигурации отрисовки определяются как список объектов JSON (или словарей Python при использовании API). Каждый объект в списке представляет один параметр визуализации, который будет отображаться в раскрывающемся списке Обозревателя.
Базовая структура:
[
{
"id": "unique-render-id",
"name": "Human-Readable Name for UI",
"description": "Optional: More details about this render.",
"type": "raster-tile", // Usually "raster-tile"
"options": "key1=value1&key2=value2...", // The core TiTiler parameters
"minZoom": 8, // Optional: Minimum map zoom level to display this layer
"info_options": "assets=<asset_key>&subdataset_name=<var>" // Optional URL query-string for Explorer time slider discovery
},
{
// ... another render configuration object ...
}
]
-
id: уникальный удобочитаемый компьютером идентификатор для этого параметра отрисовки в коллекции. -
name: имя, отображаемое в пользовательском интерфейсе обозревателя. -
description: необязательный текст, предоставляющий дополнительный контекст. -
type: обычно"raster-tile". -
options: строка, содержащая параметры запроса URL-адресов (key=valueпары, разделенные&), которые управляют движком отрисовки TiTiler. Это место, где выполняется большая часть настройки. -
minZoom: необязательное целое число, указывающее минимальный уровень масштабирования карты, на котором этот слой становится видимым. Полезно для управления производительностью с данными высокого разрешения. -
info_options: Опциональная строка запроса URL, которая активирует временной слайдер Explorer для коллекций кубов данных (NetCDF, HDF5, GRIB2). Подробнее см. Настройка ползунка времени в Explorer.
Используя одну и ту же структуру, можно иметь несколько конфигураций отрисовки для одних и того же данных, чтобы данные могли визуализироваться несколькими способами.
Шаг 4. Определение options строки — основные параметры
Строка options является сердцем конфигурации отрисовки. В нем используется key=value&key=value формат. Ниже приведены наиболее распространенные параметры:
1. Определение активов/диапазонов
| Parameter | Description | Вариант использования | Example |
|---|---|---|---|
assets={asset_key} |
Указывает используемые ресурсы, где {asset_key} соответствует ключу, определенному в коллекции item_assets. |
Отрисовка одного диапазона с помощью одного ресурса | assets=elevation |
| Трехполосный рендеринг с использованием трех отдельных однополосных ресурсов (порядок определяет R, G, B) | assets=B04&assets=B03&assets=B02 |
||
| Визуализация с помощью одного многополосного объекта |
assets=image (часто используется с asset_bidx) |
||
asset_bidx={asset_key}\|{band_index1},{band_index2},... |
Выбирает конкретные индексы каналов изнутри одного многополосного ресурса, указанного assets. Индексы групп обычно основаны на 1. |
Три полосы RGB из полос 1, 2, 3 актива image |
assets=image&asset_bidx=image\|1,2,3 |
Трёхканальная «False Color Infrared» (NIR, Red, Green) с диапазонами 4, 1, 2 ресурса image |
assets=image&asset_bidx=image\|4,1,2 |
||
| Рендеринг одночастотный с использованием только диапазона 4 ассета | assets=image&asset_bidx=image\|4 |
2. Стилизация Single-Band данных
| Parameter | Description | Example |
|---|---|---|
colormap_name={name} |
Применяет предопределенную именованную цветовую карту. Распространенные примеры: viridis, plasma, grayrdylgn. См. поддерживаемые цветовые карты. |
assets=elevation&colormap_name=viridis |
rescale={min_val},{max_val} |
Растягивает или сжимает значения данных, чтобы соответствовать полному диапазону цветовой карты. Значения за пределами этого диапазона ограничиваются минимальными и максимальными цветами. | Значения высот от 100 до 1500 м на полной цветовой карте: assets=elevation&colormap_name=viridis&rescale=100,1500 |
Стилизование многополосных (RGB) данных
| Parameter | Description | Example |
|---|---|---|
| Порядок полос RGB | Полосы RGB неявно определяются порядком assets (для отдельных активов) или asset_bidx (для полос в ресурсе). |
См. примеры в таблице "Идентификация активов/групп" |
rescale={min_val},{max_val} |
(Необязательно) Можно использовать для масштабирования входных значений диапазонов R, G, B перед сопоставлением их с диапазоном отображения от 0 до 255. Полезно, если исходные данные еще не 8-разрядные. | assets=B04&assets=B03&assets=B02&rescale=0,3000 |
color_formula={formula_string} |
(Необязательно) Применяет формулы коррекции цвета. | Дополнительные параметры см. в следующем разделе. |
Шаг 5. Добавление дополнительных options параметров (по мере необходимости)
Помимо основных принципов, TiTiler предлагает множество расширенных параметров через options строку:
1. Выражения
| Parameter | Description | Format/Values | Example |
|---|---|---|---|
expression={formula} |
Определение математической формулы с помощью ключей активов в качестве переменных | Стандартные операторы (+, -, *) /и круглые скобки |
expression=(B08-B04)/(B08+B04) |
asset_as_band=true |
Обязательный, если выражение использует несколько ресурсов с одним диапазоном |
true или false |
expression=(B08-B04)/(B08+B04)&asset_as_band=true |
Examples
- Пример результата с одним диапазоном:
expression=(B08-B04)/(B08+B04)&asset_as_band=true&colormap_name=rdylgn&rescale=-1,1 - Многополосные выражения используют точки с запятой:
expression=B04*1.5;B03*1.1;B02*1.3&asset_as_band=true - При использовании
expressionобычно не требуетсяassetsилиasset_bidx
2. Алгоритмы
| Parameter | Description | Format/Values | Example |
|---|---|---|---|
algorithm={name} |
Применение предопределенного алгоритма обработки пикселей |
hillshade, , contoursterrarium, terrainrgbnormalizedIndex |
algorithm=hillshade |
algorithm_params={json_string} |
Параметры для алгоритма (URL-кодированный JSON) | Зависит от алгоритма | algorithm_params=%7B%22azimuth%22%3A%20315%2C%20%22angle_altitude%22%3A%2045%7D |
buffer={integer} |
Добавление буфера пикселей вокруг плиток (часто требуется для алгоритмов) | Целочисленное значение | buffer=3 |
Пример assets=elevation&algorithm=hillshade&colormap_name=gray&buffer=3&algorithm_params=%7B%22azimuth%22%3A%20315%2C%20%22angle_altitude%22%3A%2045%7D
Дополнительные сведения о конкретных алгоритмах см. в документации по алгоритму TiTiler и Mapbox Hillshade
3. Цветовая коррекция (для выходных данных RGB или трех полос)
| Parameter | Description | Format | Example |
|---|---|---|---|
color_formula={formula_string} |
Примените корректировки цвета | Разделенная пробелами строка с Гамма, насыщенностью и /или Сигмоидальной корректировкой | color_formula=Gamma RGB 2.5 Saturation 1.4 Sigmoidal RGB 15 0.35 |
Сведения о формате:
-
Gamma {BANDS} {VALUE}— настройка яркости -
Saturation {PROPORTION}- Настройка интенсивности цвета -
Sigmoidal {BANDS} {CONTRAST} {BIAS}- Настройка контрастности
Дополнительные сведения о цветовой коррекции см. в документации по TiTiler.
4. Пользовательские цветовые схемы (для выходных данных с одним каналом)
| Parameter | Description | Format | Example |
|---|---|---|---|
colormap={json_string} |
Определение пользовательской цветовой карты | Значения данных в кодировке URL-адреса JSON сопоставляются со списками RGBA [R,G,B,Alpha] |
colormap={\"1\":[54,124,20,255],\"2\":[28,67,0,255],\"3\":[94, 91, 32, 255],\"4\":[234, 99, 32, 255],\"5\":[237, 232, 60, 255],\"6\":[236, 31, 175, 255],\"7\":[19, 0,239, 255], \"8\":[209, 3, 0, 255]} |
Пример декодирует: Сопоставляет значение 1 с темно-зеленым, от 2 до очень темно-зеленого, от 3 до оливкового зеленого, от 4 до оранжевого красного, от 5 до желтого, от 6 до розового/magenta, 7 до сине-фиолета и 8 до красного.
5. Обработка данных
| Parameter | Description | Example |
|---|---|---|
nodata={value} |
Укажите значение пикселя, чтобы сделать прозрачным |
nodata=0 или nodata=-9999 или nodata=nan |
unscale={true\|false} |
Примените масштаб/смещение из метаданных GeoTIFF | unscale=true |
6. Производительность / Поведение мозаичного отображения
| Parameter | Description | Format | Example |
|---|---|---|---|
maxItemsPerTile={integer} |
Ограничение количества элементов STAC на плитку | Integer | maxItemsPerTile=20 |
skipcovered={true\|false} |
Пропускать элементы, охватываемые другими пользователями |
true или false |
skipcovered=true |
exitwhenfull={true\|false} |
Остановите обработку, когда плитка полностью покрыта |
true или false |
exitwhenfull=true |
time_limit={seconds} |
Максимальное время отрисовки плитки | Целое число (секунды) | time_limit=10 |
7. Параметры куба данных (GRIB/NetCDF)
| Parameter | Тип данных | Description | Example |
|---|---|---|---|
subdataset_bands={band_index} |
GRIB | Выбор определенного сообщения или полосы | assets=grib_data&subdataset_bands=1&colormap_name=jet&rescale=273,300 |
subdataset_name={variable_name} |
NetCDF | Выбор переменной для визуализации | assets=netcdf_data&subdataset_name=temperature |
datetime={timestamp} |
NetCDF | Выбор среза времени (ISO 8601) | datetime=2023-10-26T12:00:00Z |
sel={dimension}={value} |
Зарр | Индексатор в стиле Xarray, повторяемый для каждого измерения. | sel=time=2024-01-01 |
sel_method={method} |
Зарр | Метод индексирования в Xarray для неточных совпадений. | sel_method=nearest |
Полный пример NetCDF:assets=netcdf_data&subdataset_name=temperature&datetime=2023-10-26T12:00:00Z&colormap_name=viridis&rescale=0,30
8. Настройка слайдера времени Explorer (Data Cubes)
Чтобы включить слайдер времени в Explorer для опции рендеринга куба данных, добавьте info_options поле в объект настройки рендера.
info_options — это строка запроса URL в том же формате, что и options, которую Explorer передаёт конечной точке /info компонента Tiler для каждого видимого элемента STAC. Explorer использует возвращённые описания диапазонов для построения положений отметок на ползунке, поэтому ползунок соответствует тому, что может предоставить Tiler. Это поле действимо только для raster-tile опций рендера.
Определите info_options как релевантное для обнаружения подмножество options: как правило, параметр assets, а для NetCDF, HDF5 и Zarr — subdataset_name. Опустите параметры стилизации и срезки, такие как rescale, colormap_name, datetime, selи sel_method потому что они не влияют на обнаружение группы. Когда вы включаете ползунок, также удалите все datetime= из options, иначе зафиксированное значение будет иметь приоритет над ползунком.
{
"id": "my-netcdf-render",
"name": "Temperature over time",
"type": "raster-tile",
"options": "assets=t2m-kerchunk&subdataset_name=t2m&colormap_name=viridis&rescale=250,310",
"minZoom": 1,
"info_options": "assets=t2m-kerchunk&subdataset_name=t2m"
}
Для коллекций GRIB2 info_options обычно содержит только выборку ресурсов, используемую для обнаружения:
{
"info_options": "assets=data"
}
Note
Когда info_options отсутствует, Explorer возвращается к устаревшему поведению — чтению cube:dimensions и start_datetime/end_datetime из метаданных элемента STAC. Оба подхода поддерживаются одновременно, поэтому существующие коллекции продолжают работать без изменений.
Шаг 6. Добавление конфигурации отрисовки в коллекцию
После создания списка конфигурации отрисовки (одного или нескольких объектов JSON) добавьте его в коллекцию STAC:
Использование веб-интерфейса:
- Перейдите к коллекции на портале Planetary Computer Pro.
- Нажмите кнопку "Конфигурация".
- Перейдите на вкладку Отрисовка.
- Вставьте список JSON в редактор.
- Сохраните изменения, нажав кнопку "Обновить".
Дополнительные сведения о настройке коллекций см. в разделе "Настройка коллекции с помощью веб-интерфейса".
Использование API:
С помощью конечной точки создания параметров рендеринга коллекции stac определите конфигурацию рендеринга коллекции.
import requests
import json
import azure.identity
geocatalog_url = <your geocatalog url>
collection_id = <your collection id>
credential = azure.identity.AzureCliCredential()
token = credential.get_token("https://geocatalog.spatio.azure.com")
headers = {
"Authorization": f"Bearer {token.token}"
}
response = requests.post(
f"{geocatalog_url}/stac/collections/{collection_id}/configurations/render-options",
json=render_config, # Your list of render config dicts
headers=headers,
params={"api-version": "2026-04-15"} # Use the appropriate API version
)
if response.status_code == 200:
print("Render configuration updated successfully.")
print(response.json())
else:
print(f"Error updating render configuration: {response.status_code}")
print(response.text)
Дополнительные сведения об использовании API коллекции STAC см. в разделе "Создание коллекции STAC" (примеры API).
Examples
Ниже приведены различные примеры строки options и объекта полной конфигурации отрисовки:
1. Изменение биомассы Single-Band с помощью цветовой карты и повторного масштабирования:
{
"id": "biomass-change",
"name": "Biomass Change from prior year (tonnes)",
"description": "Annual estimates of changes (gains and losses) in aboveground woody biomass.",
"type": "raster-tile",
"options": "assets=biomass_change_wm&colormap_name=spectral&rescale=-5000,5000",
"minZoom": 2
}
2. Three-Band естественный цвет (RGB) из отдельных элементов:
{
"id": "natural-color",
"name": "Natural color",
"description": "True color composite of visible bands (B04, B03, B02)",
"type": "raster-tile",
"options": "assets=B04&assets=B03&assets=B02&nodata=0&color_formula=Gamma RGB 3.2 Saturation 0.8 Sigmoidal RGB 25 0.35",
"minZoom": 9
}
3. Three-Band False Color (NIR, R, G) из полос в одном ресурсе:
{
"id": "color-infrared",
"name": "Color infrared",
"description": "Highlights healthy (red) and unhealthy (blue/gray) vegetation.",
"type": "raster-tile",
"options": "assets=image&asset_bidx=image|4,1,2&color_formula=Sigmoidal RGB 15 0.35",
"minZoom": 12
}
4. Вычисление NDVI с помощью выражения:
{
"id": "normalized-difference-veg-inde",
"name": "Normalized Difference Veg. Index (NDVI)",
"description": "Normalized Difference Vegetation Index (B08-B04)/(B08+B04), darker green indicates healthier vegetation.",
"type": "raster-tile",
"options": "nodata=0&expression=(B08-B04)/(B08+B04)&rescale=-1,1&colormap_name=rdylgn&asset_as_band=true",
"minZoom": 9
}
5. Алгоритм Hillshade:
{
"id": "hillshade",
"name": "Hillshade",
"description": "Terrain visualization based on elevation.",
"type": "raster-tile",
"options": "assets=data&colormap_name=gray&algorithm=hillshade&buffer=3&algorithm_params=%7B%22azimuth%22%3A%20315%2C%20%22angle_altitude%22%3A%2045%7D",
"minZoom": 7
}
6. Визуализация температуры NetCDF:
{
"id": "pr-1950-07-07",
"name": "Precipitation (1950-07-07)",
"description": "Precipitation from NetCDF data.",
"type": "raster-tile",
"options": "assets=cmip&rescale=0,0.01&colormap_name=viridis&subdataset_name=pr",
"minZoom": 4,
"info_options": "assets=cmip&subdataset_name=pr"
}
Справочник. Все options параметры
Строка options принимает следующие пары «ключ-значение» (актуальную информацию см. в документации TiTiler):
| Parameter | Type | Description | Пример использования |
|---|---|---|---|
assets |
str | Ключи актива из item_assets. Повторите ключ для нескольких ресурсов. |
assets=B04&assets=B03&assets=B02 |
expression |
str | Математическое выражение с использованием ключей активов. | expression=(B08-B04)/(B08+B04) |
asset_bidx |
str | Индексы диапазонов для многополосного ресурса. Формат: {asset_key}|{idx1},{idx2},... |
asset_bidx=image|4,1,2 |
asset_as_band |
bool | Рассматривать активы в expression как отдельные полосы. Требуется, если выражение использует несколько ресурсов. |
asset_as_band=true |
colormap_name |
str | Предопределенное имя цветовой карты TiTiler. | colormap_name=viridis |
colormap |
str | URL-кодированный JSON, определяющий настраиваемую цветовую карту. | colormap=%7B%221%22%3A%5B...%5D%7D |
rescale |
str | Значения min и max, разделенные запятыми, для масштабирования данных. | rescale=0,3000 |
color_formula |
str | Формула коррекции цвета, разделенные пробелом (Гамма, насыщенность, Сигмоид). | color_formula=Gamma RGB 2.2 Saturation 1.1 |
nodata |
str/float/int | Значение пикселя, которое следует трактовать как отсутствие данных (прозрачный). |
nodata=0 или nodata=-9999.0 или nodata=nan |
unscale |
bool | Применить масштаб/смещение из метаданных GeoTIFF. | unscale=true |
algorithm |
str | Имя алгоритма обработки TiTiler. | algorithm=hillshade |
algorithm_params |
str | Строка JSON, закодированная по URL-адресу, с параметрами для алгоритма. | algorithm_params=%7B%22azimuth%22%3A315%7D |
buffer |
float | Буфер пикселей вокруг плиток (часто требуется для алгоритмов). | buffer=3 |
maxItemsPerTile |
int | Максимальное количество элементов STAC для обработки на одну плитку. | maxItemsPerTile=20 |
skipcovered |
bool | Пропустить элементы, полностью скрытые другими. | skipcovered=true |
exitwhenfull |
bool | Остановите обработку плитки после полного покрытия. | exitwhenfull=true |
time_limit |
int | Максимальное время обработки (в секундах) на плитку. | time_limit=10 |
subdataset_bands |
int | Индекс полосы или сообщения для данных GRIB. | subdataset_bands=1 |
subdataset_name |
str | Имя переменной для данных NetCDF. | subdataset_name=temperature |
datetime |
str | Метка времени ISO 8601 для выбора среза времени в NetCDF. | datetime=2023-10-26T12:00:00Z |
resampling |
str | Метод повторной выборки (nearest, bilinear). |
resampling=nearest |