【发布时间】:2019-01-01 08:41:04
【问题描述】:
在 MATLAB 中,我有由 x,y,z 坐标值和颜色定义的数据。现在我想使用 KLM 工具箱为 Google 地球创建一个 kmz 文件。为了定义一个颜色数组,我使用'iconColor' 属性,其输入“必须是有效的十六进制颜色字符串输入,样式为AABBGGRR”。
将我的 RGB 颜色数组转换为十六进制颜色字符串的好方法是什么?如果我想使用不同的颜色图(喷气式或冬季)怎么办?
【问题讨论】:
在 MATLAB 中,我有由 x,y,z 坐标值和颜色定义的数据。现在我想使用 KLM 工具箱为 Google 地球创建一个 kmz 文件。为了定义一个颜色数组,我使用'iconColor' 属性,其输入“必须是有效的十六进制颜色字符串输入,样式为AABBGGRR”。
将我的 RGB 颜色数组转换为十六进制颜色字符串的好方法是什么?如果我想使用不同的颜色图(喷气式或冬季)怎么办?
【问题讨论】:
MATLAB 中的built-in colormaps 将为您提供从 0(最低强度)到 1(最高强度)缩放的 RGB 颜色三元组矩阵。要将单个 RGB 三元组转换为其 KML color style equivalent(使用 AABBGGRR 格式),步骤如下:
uint8 类型以确保您的整数范围在0 到255 之间。dec2hex 转换为十六进制字符串。这是一个例子:
>> color = [1 1 0]; % The RGB triple for yellow
>> hexColor = reshape(dec2hex(uint8([255 255.*flip(color, 2)])).', 1, 8)
hexColor =
FF00FFFF
如果您想转换整个颜色图(即N-by-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
【讨论】:
N 颜色创建您的颜色图。然后缩放您的双精度值,使最小值和最大值转换为 1 到 N 的范围,然后将它们四舍五入为整数值,以便为每个双精度值获取行索引到您的颜色图中。