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

kmlStr=ge_scatter(X,Y,varargin)
function kmlStr=ge_scatter(X,Y,varargin)

X = X(:);
Y = Y(:);

AuthorizedOptions = authoptions(mfilename);

styleId = 'style';
markerEdgeColor = 'FF00FFFF';
markerFaceColor = 'FF00FFFF';
lineWidth = '3';
styleMapId = ['styleMapId','-',styleId];
tesselate = 1;
marker = 's';
markerScale = 1;
altitudeMode = 'clampToGround'; 

parsepairs
if ~(exist('xUnitShape', 'var') && exist('yUnitShape', 'var'))
    switch marker
        case 'o'
            % circle
            xUnitShape = sin(linspace(0,2*pi,21))';
            yUnitShape = cos(linspace(0,2*pi,21))';
        case 's'
            % square
            xUnitShape = -0.5+[1,1,0,0,1]';
            yUnitShape = -0.5+[1,0,0,1,1]';
        case 'd'
            % diamond
            xUnitShape = [0,0.5,0,-0.5,0]';
            yUnitShape = [1,0,-1,0,1]';
        case '*'
            % star
            rads = linspace(0,2*pi,6);
            xRads = [1*sin(rads);0.4*sin(rads+0.2*pi)];
            yRads = [1*cos(rads);0.4*cos(rads+0.2*pi)];
            xUnitShape = xRads(:);
            yUnitShape = yRads(:);
            
            clear xRads yRads rads
    end
end

if strcmp(markerFaceColor,'none')
    markerFaceColor = '00000000';
end

if strcmp(markerEdgeColor,'none')
    markerEdgeColor = '00000000';
end


xUnitShape = markerScale*xUnitShape(:);
yUnitShape = markerScale*yUnitShape(:);



kmlStr = ...
['	<Style id=',char(39),styleId,char(39),'>',char(10),...
'		<LineStyle>',char(10),...
'			<color>',markerEdgeColor([1,2,7,8,5,6,3,4]),'</color>',char(10),...
'			<width>',lineWidth,'</width>',char(10),...
'		</LineStyle>',char(10),...
'		<PolyStyle>',char(10),...
'			<color>',markerFaceColor([1,2,7,8,5,6,3,4]),'</color>',char(10),...
'		</PolyStyle>',char(10),...
'	</Style>',char(10),...
'	<StyleMap id=',char(39),styleMapId,char(39),'>',char(10),...
'		<Pair>',char(10),...
'			<key>normal</key>',char(10),...
'			<styleUrl>#',styleId,'</styleUrl>',char(10),...
'		</Pair>',char(10),...
'		<Pair>',char(10),...
'			<key>highlight</key>',char(10),...
'			<styleUrl>#',styleId,'</styleUrl>',char(10),...
'		</Pair>',char(10),...
'	</StyleMap>'];

L = numel(kmlStr);
N = numel(X);


for k=1:N

    placemarkName = ['scatter-',num2str(k)];

    xCoordinates = X(k)+xUnitShape;
    yCoordinates = Y(k)+yUnitShape;
    
    coordinates = rot90([xCoordinates,yCoordinates,zeros(size(xCoordinates))],-1);
    coordinatesStr = sprintf('%f,%f,%f \r',coordinates);

    kmlStrPlacemark = ['<Placemark>',char(10),...
    '	<name>',placemarkName,'</name>',char(10),...
    '	<styleUrl>#',styleId,'</styleUrl>',char(10),...
	'	<Polygon>',char(10),...
    '   <altitudeMode>',altitudeMode,'</altitudeMode>',char(10),...
    '		<tessellate>',num2str(tesselate),'</tessellate>',char(10),...
	'		<outerBoundaryIs>',char(10),...
	'			<LinearRing>',char(10),...
    '		<coordinates>',char(10),...
    coordinatesStr,char(10),...    
    '       </coordinates>',char(10),...
	'			</LinearRing>',char(10),...
	'		</outerBoundaryIs>',char(10),...
	'	</Polygon>',char(10),...
    '</Placemark>',char(10)];

    if k==1
        L = numel(kmlStrPlacemark);
        pos = numel(kmlStr);
        kmlStr = [kmlStr,repmat(' ',[1,L*N])];
    end
    
    kmlStr(pos+1:pos+numel(kmlStrPlacemark)) = kmlStrPlacemark;
    pos = pos + numel(kmlStrPlacemark);

end

Contact us at files@mathworks.com