OpenLayers 中 GeoTIFF 的离散色带

问题描述 投票:0回答:1

假设还有 5 个具有随机颜色的级别,如何将以下连续颜色渐变转换为离散颜色渐变?

color: [
    'case',
    ['>', ['band', 2], 0],
    [
      'interpolate',
      ['linear'],
      ['band', 1],
      0,
      [255, 255, 255],
      76,
      [0, 0, 0],
    ],
    [0, 0, 0, 0],
  ],

根据网上的一些文档,我尝试了以下方法但没有成功:

color: [
  'case',
  ['>', ['band', 2], 0],
  [
    'case',
    ['<=', ['band', 1], -6400], [11, 4, 5],
    ['between', ['band', 1], -6400, -4800], [62, 53, 107],
    ['between', ['band', 1], -4800, -3200], [53, 123, 163],
    ['between', ['band', 1], -3200, -1600], [75, 194, 173],
    ['>=', ['band', 1], -1600], [222, 245, 229],
  ],
  [0, 0, 0, 0],
],

非常感谢任何指点,

colors openlayers geotiff
1个回答
0
投票

我也为此苦苦挣扎了一段时间。这是我的解决方案(最小示例):

color:
[
    "case",
    ['==', Array(2), 0],
    [0, 0, 0, 0],
    ['between', Array(2), -600, -516],
    [84, 48, 5],
    ['between', Array(2), -516, -430],
    [121, 76, 19],
    ['between', Array(2), -430, -344],
    [161, 106, 34],
    [0, 0, 0, 0] // Fallback value
]

解释(持保留态度):

这里的停止/颜色值只是一个示例,可以随意更改。正如评论中已经提到的,案例需要一个后备值。我们遇到的问题是我们有数据,需要离散地着色,而不是使用 openlayers 插值(所以如果我没有记错的话,与帖子的目标相同)。

在 ol-style-expressions 的文档(不太容易找到)中,有两个段落“转换运算符”和“逻辑运算符”,其中包含我们需要的大部分信息。 (例如,“案例”、“插值”、“之间”在那里进行了解释)。

[0,0,0,0] 是后备值。但只要 case 处理每个数据点,就不会使用它。但请记住,“之间”运算符具有包容性,因此在某些罕见情况下可能会导致意外结果。

我还多次遇到错误......有关“颜色对象中参数的奇数个”的错误。我的网站上始终存在逗号或括号问题(因此,如果您遇到此问题,请先检查您的代码,但请随意深入研究文档)。

© www.soinside.com 2019 - 2024. All rights reserved.