Параметр «интенсивность» в MapLibre GL JS относится к группе стилевых свойств, которые управляют визуальной выразительностью слоёв: насыщенностью эффекта, силой визуального воздействия и степенью «агрессивности» отображения данных. В отличие от геометрических параметров, интенсивность влияет исключительно на рендеринг и восприятие слоя, не изменяя исходные данные.
В рамках спецификации стилей MapLibre GL JS интенсивность встречается в нескольких ключевых контекстах: тепловые карты, затенение рельефа, трёхмерные выдавленные объекты и некоторые растровые эффекты. Каждая из этих систем использует собственный механизм масштабирования визуального эффекта.
Тепловые карты являются одним из наиболее характерных примеров
применения параметра интенсивности. Свойство
heatmap-intensity управляет тем, насколько резко и
контрастно отображаются скопления точек.
map.addLayer({
id: 'heatmap-layer',
type: 'heatmap',
source: 'points',
paint: {
'heatmap-intensity': 1.0
}
});
Значение интенсивности влияет на алгоритм интерполяции плотности:
Интенсивность часто используется совместно с масштабными выражениями:
'heatmap-intensity': [
'interpolate',
['linear'],
['zoom'],
0, 0.5,
10, 1,
15, 2
]
Такой подход позволяет изменять визуальную плотность тепловой карты в зависимости от масштаба, компенсируя изменение плотности пикселей на экране.
В слое hillshade интенсивность выражается через параметр
hillshade-exaggeration, который усиливает или ослабляет
эффект рельефного освещения.
map.addLayer({
id: 'terrain-shading',
type: 'hillshade',
source: 'terrain-source',
paint: {
'hillshade-exaggeration': 0.5
}
});
Физически этот параметр масштабирует перепады высот, влияя на расчёт нормалей поверхности. Чем выше значение, тем более выраженными становятся тени и световые переходы.
Характерные диапазоны:
При использовании выражений возможно динамическое управление в зависимости от масштаба:
'hillshade-exaggeration': [
'interpolate',
['linear'],
['zoom'],
5, 0.3,
10, 1,
14, 2
]
В слоях типа fill-extrusion прямого параметра
«intensity» нет, однако аналогичная роль распределяется между высотой,
цветом и непрозрачностью, формируя эффект визуальной интенсивности.
map.addLayer({
id: 'buildings-3d',
type: 'fill-extrusion',
source: 'buildings',
paint: {
'fill-extrusion-height': ['get', 'height'],
'fill-extrusion-opacity': 0.8
}
});
Визуальная «интенсивность» 3D-слоя фактически складывается из нескольких факторов:
fill-extrusion-height) — базовый вклад в
выраженность формыlight) — глубина тенейКомбинация этих параметров позволяет эмулировать эффект «усиления» или «ослабления» городской застройки.
Одним из ключевых механизмов управления интенсивностью является использование expression API. Оно позволяет формировать непрерывные функции зависимости визуальных параметров от масштаба, данных или условий.
Пример управления интенсивностью тепловой карты через плотность данных:
'heatmap-intensity': [
'case',
['>', ['get', 'density'], 10],
2,
0.5
]
Здесь интенсивность становится дискретной функцией от атрибута источника данных.
Другой вариант — нормализация по масштабу:
'heatmap-intensity': [
'*',
1,
['/', ['zoom'], 10]
]
Такие конструкции используются для компенсации визуальных искажений при увеличении или уменьшении карты.
Интенсивность часто взаимодействует с цветовыми свойствами, особенно в heatmap и raster слоях. Хотя цвет задаётся отдельно, визуально он воспринимается как функция от интенсивности.
'heatmap-color': [
'interpolate',
['linear'],
['heatmap-density'],
0, 'rgba(0,0,255,0)',
0.5, 'rgba(0,255,0,0.5)',
1, 'rgba(255,0,0,1)'
]
Увеличение интенсивности приводит к более быстрому достижению верхних порогов цветовой шкалы, что усиливает контраст и ускоряет переходы между цветами.
В растровых слоях MapLibre GL JS интенсивность может быть интерпретирована через свойства яркости и контраста, хотя формально они не называются intensity.
map.addLayer({
id: 'raster-layer',
type: 'raster',
source: 'satellite',
paint: {
'raster-brightness-min': 0.2,
'raster-brightness-max': 1.2
}
});
Разница между минимальной и максимальной яркостью формирует эффект усиления или ослабления изображения, аналогичный управлению интенсивностью визуального сигнала.
Интенсивность может изменяться в зависимости от внешних факторов: времени суток, масштаба, пользовательских данных или состояния источника.
Пример зависимости от времени суток:
'heatmap-intensity': [
'interpolate',
['linear'],
['get', 'hour'],
0, 0.3,
12, 1.5,
24, 0.5
]
Такое управление используется для моделирования естественных изменений активности данных.
Увеличение интенсивности не всегда линейно связано с качеством визуализации. В тепловых картах высокие значения приводят к более сложным вычислениям плотности, особенно при большом количестве точек.
При этом следует учитывать:
Оптимизация достигается через баланс между интенсивностью и разрешением данных источника.
Интенсивность используется не только как технический параметр, но и как средство визуальной композиции. В картографических стилях она управляет восприятием глубины, плотности и значимости объектов.
В одном и том же наборе данных изменение интенсивности способно:
Такой подход позволяет формировать разные смысловые интерпретации одной и той же географической информации без изменения источника данных.