假设还有 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],
],
非常感谢任何指点,
我也为此苦苦挣扎了一段时间。这是我的解决方案(最小示例):
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 处理每个数据点,就不会使用它。但请记住,“之间”运算符具有包容性,因此在某些罕见情况下可能会导致意外结果。我还多次遇到错误......有关“颜色对象中参数的奇数个”的错误。我的网站上始终存在逗号或括号问题(因此,如果您遇到此问题,请先检查您的代码,但请随意深入研究文档)。