Code covered by the BSD License  

Highlights from
Google Earth Toolbox

image thumbnail
from Google Earth Toolbox by scott lee davis
Various plotting/drawing functions that can be saved as KML output, and loaded in Google Earth

ge_contour(x,y,data,varargin )
function [output] = ge_contour(x,y,data,varargin )
% Reference page in help browser: 
% 
% <a href="matlab:web(fullfile(ge_root,'html','ge_contour.html'),'-helpbrowser')">link</a> to html documentation
% <a href="matlab:web(fullfile(ge_root,'html','license.html'),'-helpbrowser')">show license statement</a> 
%


AuthorizedOptions = authoptions(mfilename);

           id = 'contour';
        idTag = 'id';
         name = 'ge_contour';
    timeStamp = ' ';
timeSpanStart = ' ';
 timeSpanStop = ' ';
  description = '';
   visibility = 1;
    %lineColor = 'FFFFFFFF';
    lineWidth = 0.0;
      snippet = ' ';
     altitude = 1.0;
      extrude = 0;
   tessellate = 1;
 altitudeMode = 'relativeToGround';
  msgToScreen = false; 
  forceAsLine = true;
     numLevels = 15;
   lineValues = [];
    lineAlpha = 'FF';
       cMap   = 'jet';
       region = ' ';
    
parsepairs %script that parses Parameter/value pairs.

if msgToScreen
   disp(['Running ' mfilename '...']) 
end


if( isempty( x ) || isempty( y ) || isempty(data) )
    error('empty coordinates passed to ge_contour(...).');
end


if ~(isequal(altitudeMode,'clampToGround')||...
   isequal(altitudeMode,'relativeToGround')||...
   isequal(altitudeMode,'absolute'))

    error(['Variable ',39,'altitudeMode',39, ' should be one of ' ,39,'clampToGround',39,', ',10,39,'relativeToGround',39,', or ',39,'absolute',39,'.' ])
    
end

x1 = x(1,:);
if length(x1) == 1
    x1 = x(:,1);
end
y1 = y(:,1);
if length(y1) == 1
    y1 = y(1,:);
end

if isempty(lineValues)

    if numLevels <= 1
        C = contourc(x1,y1,data);
    else
        C = contourc(x1,y1,data,numLevels);
    end
else
    
    numLevels = length(lineValues);
    C = contourc(x1,y1,data,lineValues);
    
end



if altitude <= 0
    altitude = 1.0;
    disp('Resetting altitude to 1.0.')
end


i = 1;

X = C(1,:);
Y = C(2,:);

C1=[];

if ischar(cMap)

    RIx = round(rand*10000);
    figure(RIx)    
    eval(['C1 = colormap(' cMap '(256));']);
    close(RIx)
    clear RIx

else
    C1 = cMap;
end

X1 = linspace(0,1,size(C1,1))';
YRed = C1(:,1);
YGreen = C1(:,2);
YBlue = C1(:,3);


if ~exist('cLimHigh','var')
    cLimHigh = max(data(:));
end
if ~exist('cLimLow','var')
    cLimLow = min(data(:));
end

idxs = [];
idxCtr = 1;

while( i < length(C) )
   X(i)=NaN;
   Y(i)=NaN;
   idxs(idxCtr) = i;
   idxCtr = idxCtr + 1;
   count =  floor(C(2,i));
   i = i+count+1; 
end

output = '';
for i = 1:length(C)
    if isnan(X(i))

        idxp = find(idxs == i);
        idxp = idxp + 1;
        try
            idxp = idxs(idxp);
        catch
            idxp = length(C);
        end
        
        if exist('lineColor','var')
            hexColorStr = lineColor;
        else

            f = (C(1,i)-cLimLow)/(cLimHigh-cLimLow);

            if f<0
                f=0;
            end
            if f>1
                f=1;
            end

            YIRed = interp1(X1,YRed,f);
            YIGreen = interp1(X1,YGreen,f);
            YIBlue = interp1(X1,YBlue,f);

            hexColorStr = [lineAlpha,conv2colorstr(YIRed,YIGreen,YIBlue)];
        end

        output = [output ge_plot(X(i:idxp),Y(i:idxp),...
                'name',name, ...
                'snippet', snippet,...
                'description',description, ...
                'region', region, ...
                'timeStamp',timeStamp, ...
                'timeSpanStart',timeSpanStart, ...
                'timeSpanStop',timeSpanStop, ...
                'visibility',visibility, ...
                'lineColor',hexColorStr,...
                'lineWidth',lineWidth,...
                'altitude',altitude,...
                'altitudeMode',altitudeMode,...
                'extrude',extrude,...
                'tessellate',tessellate) ];

        count = floor(C(2,i));
        i = i+count+1;




    end
end


if msgToScreen
   disp(['Running ' mfilename '...Done']) 
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% local function
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function S = conv2colorstr(B,G,R)
% Please note that this conv2colorstr is different from that in
% ge_colorbar. This one writes KML formatted hexadecimal 
% colorstrings, ge_colorbar() writes HTML formatted colorstr.


S='000000';

hexB = dec2hex(round(B*255));
hexG = dec2hex(round(G*255));
hexR = dec2hex(round(R*255));

LB = length(hexB);
LG = length(hexG);
LR = length(hexR);

S(3-LB:2)=hexB;
S(5-LG:4)=hexG;
S(7-LR:6)=hexR;

Contact us at files@mathworks.com