2011-01-09 52 views
0

我想呈现地图如: alt text渲染温度图,而无需使用数值范围

用不同的颜色,而不是仅仅梯度,与地图,其具有0 ...温度的1个值,而不使用范围值,这是,如果t = 0 ... 0.2使用红色* t,如果t> 0.2并且t使用橙色* t等于012 *

任何提示?

编辑:“范围”的示例代码:

else if (layerType == "temperature") { 

    if (value <= 0.2) { 
     r = Math.round(value * 200)+100; 
     g = Math.round(value * 200)+100; 
     b = Math.round(value * 250)+150; 
     a = 1; 
    } else if (value > 0.2 && value <= 1) { 
     r = Math.round(value * 250); 
     g = Math.round(value * 250); 
     b = Math.round(value * 200); 
     a = 1; 
    } 
+0

你是什么意思,由`橙* *'? – 2011-01-09 20:01:51

回答

4

可以映射到的温度用平滑连续函数与HSB颜色空间(色调,饱和度和亮度)的颜色。

色调的可见颜色类似这样的频谱图: hue scale

http://en.wikipedia.org/wiki/File:HueScale.svg

在你的榜样形象,它看起来像饱和度和亮度可以是恒定的,所以你的函数可以简单的温度转换成色调:

hue = f(t) 

根据您的需要,f可能是线性函数,对数,指数或任何看起来最好的。

有关如何HSB转换为RGB色彩空间,在接受这个StackOverflow的话题,答案看起来例如讨论:Algorithm For Generating Unique Colors

有关色调的一般讨论,例如见这个维基百科文章:http://en.wikipedia.org/wiki/Hue