我可以通过matlab以kml文件格式绘制不同颜色的线条

时间:2014-12-08 09:20:16

标签: matlab matlab-figure

我需要用malab写入kml文件格式的行,根据信号电平或多行不连续,这条线是多种颜色? 通过使用'kmlwriteline'可以用一种颜色写一条线,但我需要根据信号电平或不同颜色之间绘制不同颜色的线,红色,绿色,黄色 谢谢 。

1 个答案:

答案 0 :(得分:0)

有两种方法可以做到这一点。首先,您可以获得函数herekmlwrite()函数,并可以使用其颜色规范。

第二个是您可以生成一个颜色线并可以使用Google地球应用程序打开kml文件,然后您可以通过右键单击线来更改线条的颜色。第二个是手动方式。

编辑:我明白了你的意思。您必须创建geoshape个对象才能短暂执行任务。 如果您想要细分当前行,则必须使用NaN值。

现在尝试编写以下代码:

% % // import your excel file
lat      = xlsread('hossain1.xlsx','data','A2:A445');
lon      = xlsread('hossain1.xlsx','data','B2:B445');
Rx_Level = xlsread('hossain1.xlsx','data','C2:C445');

% Initializing some stuff
Rx    = [-60 -70 -80 -90 -100];
color = ['g', 'y', 'r', 'k']; % // I adjusted the colour wrt your uploaded pic.
width = 12 : -3 : 3;          % // In the pic, Rx levels have a different witdh lines.

% // Existing Geographic shape object
lines = geoshape();

len = length(lat);

for u = 2 : length(Rx)
    indexWrtRxLevel                      = ( Rx_Level >= Rx(u) ) & ( Rx_Level < Rx(u-1) );
    lines(u-1).Latitude                  = zeros(1, len);
    lines(u-1).Longitude                 = zeros(1, len);
    indexOfZeros                         = find(indexWrtRxLevel == 0);
    indexOfOnes                          = find(indexWrtRxLevel == 1);
    lines(u-1).Latitude( indexOfZeros )  = NaN;
    lines(u-1).Longitude( indexOfZeros ) = NaN;
    lines(u-1).Latitude( indexOfOnes )   = lat( indexOfOnes );
    lines(u-1).Longitude( indexOfOnes )  = lon( indexOfOnes );
    lines(u-1).Name                      = ['>= ', num2str(Rx(u)), ' dBm'];
    lines(u-1).Color                     = color(u-1);
    lines(u-1).Width                     = width(u-1);   
end

filename = 'Rx Levels';
kmlwrite(filename, lines, ...
    'Name', lines.Name, ...
    'Color', lines.Color, ...
    'Width', lines.Width);

我得到的是: enter image description here

我希望这会有用。