You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenLayers中为多幅不同极值的COG GeoTIFF自动适配颜色样式

自动适配不同极值COG影像的颜色样式实现

要让单个颜色样式自动适配每幅COG影像的自身极值,核心是用动态获取影像波段极值的表达式替换原代码中固定的0和90范围值。以下是具体实现方案:

修改后的样式代码

const autoAdaptStyle = {
  color: [
    'case',
    ['>', ['band', 2], 0],
    [
      'interpolate',
      ['linear'],
      ['band', 1],
      // 动态获取当前影像波段1的最小值
      ['image-min', ['band', 1]], [0, 89, 179, 0.01],
      // 动态获取当前影像波段1的最大值
      ['image-max', ['band', 1]], [255, 234, 0, 5.0],
    ],
    [0, 0, 0, 0],
  ],
};

关键逻辑说明

  • ['image-min', ['band', 1]]:自动计算当前渲染的COG影像中第1波段的最小值,每幅影像会独立计算自身的极值。
  • ['image-max', ['band', 1]]:自动计算当前渲染的COG影像中第1波段的最大值,同样针对单幅影像生效。
  • 插值逻辑保持不变:依然使用线性插值将波段值映射到原有的蓝黄渐变颜色区间,只是映射的范围从固定的0-90变成了每幅影像的实际极值范围。

可选优化(针对异常值场景)

如果部分影像存在极端异常值(如超出正常范围的噪声点),可以用clamp函数结合分位数限制插值的输入值范围,避免颜色映射被异常值拉偏:

const autoAdaptStyleWithClamp = {
  color: [
    'case',
    ['>', ['band', 2], 0],
    [
      'interpolate',
      ['linear'],
      // 将波段1的值限制在影像95%分位数范围内,过滤极端值
      ['clamp',
        ['band', 1],
        ['quantile', ['band', 1], 0.05],
        ['quantile', ['band', 1], 0.95]
      ],
      ['quantile', ['band', 1], 0.05], [0, 89, 179, 0.01],
      ['quantile', ['band', 1], 0.95], [255, 234, 0, 5.0],
    ],
    [0, 0, 0, 0],
  ],
};

内容的提问来源于stack exchange,提问作者Gery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:15:02