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

Nik*_*eyD 1 matlab colors kml kmz

在 MATLAB 中,我有由x,y,z坐标值和颜色定义的数据。现在我想使用 KLM 工具箱为 Google 地球创建一个 kmz 文件。为了定义一个 Color 数组,我使用了'iconColor'输入"Must be a valid hex color string input, in the style AABBGGRR" 的属性

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

gno*_*ice 5

MATLAB 中的内置颜色图将为您提供从 0(最低强度)到 1(最高强度)缩放的 RGB 颜色三元组矩阵。要将单个 RGB 三元组转换为其等效的 KML 颜色样式(使用AABBGGRR格式),步骤如下:

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

这是一个例子:

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

hexColor =

FF00FFFF
Run Code Online (Sandbox Code Playgroud)

如果您想转换整个颜色图(即一个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
Run Code Online (Sandbox Code Playgroud)