如何将RGB颜色转换为KML十六进制颜色字符串?

时间:2018-07-24 16:24:57

标签: matlab colors kml kmz

在MATLAB中,我有x,y,z坐标值和颜色定义的数据。现在,我想使用KLM工具箱为Google Earth创建一个kmz文件。为了定义一个Color数组,我使用'iconColor'属性,其输入“必须是有效的十六进制颜色字符串输入,其样式为AABBGGRR”。

将RGB颜色数组转换为十六进制颜色字符串的好方法是什么?如果我想使用其他颜色图(喷射色或冬天色)怎么办?

1 个答案:

答案 0 :(得分:4)

MATLAB中的built-in colormaps将为您提供RGB颜色三元组的矩阵,它们的范围从0(最低强度)到1(最高强度)。要将单个RGB三元组转换为其KML color style equivalent(具有 AABBGGRR 格式),步骤如下:

  • 将其从0缩放到255。
  • Flip订单要BGR。
  • 在开头添加透明度值(0表示完全透明,255表示完全不透明)。
  • 转换为uint8类型,以确保您拥有0到255之间的整数。
  • 使用dec2hex转换为十六进制字符串。
  • Reshape将结果分成1×8的字符数组。

这是一个示例:

>> color = [1 1 0];  % The RGB triple for yellow
>> hexColor = reshape(dec2hex(uint8([255 255.*flip(color, 2)])).', 1, 8)

hexColor =

FF00FFFF

如果您要转换整个色彩图(即N×3矩阵,每行一个RGB三倍),则可以按以下方式修改上面的代码:

>> N = 10;        % Number of colors
>> map = jet(N);  % 10-by-3 jet colormap
>> hexMap = reshape(dec2hex(uint8([255.*ones(N, 1) 255.*flip(map, 2)]).').', 8, []).'

hexMap =

FFAA0000
FFFF0000
FFFF5500
FFFFAA00
FFFFFF00
FFAAFF55
FF55FFAA
FF00FFFF
FF00AAFF
FF0055FF