function ldb2kml(varargin) %LDB2KML Converts ldb to kml-file % % Reads a landboundary file and save it to a kml-file which can be opened % in Google Earth. % % Syntax: % ldb2kml(varargin) % % INPUT: % varargin = the names of the ldb and kml files. They are given as % key/value pairs % ldb: the file descriptor of the landboundary file. When not given % the name is asked via a UI (uigetfile) % kml: the file descriptor of the kml file. When not given % the name is set to the name of the ldb, unless the % value is set to 'get' % color: get the color to be used for the presentation. It % is given. It is a cell with numbers for RGB: {R,G,B}. % When the value is 255 the full coloring part is used, % with 0 nothing of the color is used. % The default: {255,0,0}. % It is also possible to use 'get', you will asked % for the color parts via a UI. % opacity: the percentage of non-transparency: % 100 = no transparency (default) % 0 = fully transparent % % See also: KML2LDB, LDBTOOL, LDB2SHAPE %% Copyright notice % -------------------------------------------------------------------- % Copyright (C) 2010 Deltares % Arjan Mol % % arjan.mol@deltares.nl % % Deltares % P.O. Box 177 % 2600 MH Delft % The Netherlands % % Revision 21-12-2010: % L. Verhage % changed to key/value input % % This library is free software: you can redistribute it and/or % modify it under the terms of the GNU Lesser General Public % License as published by the Free Software Foundation, either % version 2.1 of the License, or (at your option) any later version. % % This library is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU % Lesser General Public License for more details. % % You should have received a copy of the GNU Lesser General Public % License along with this library. If not, see . % -------------------------------------------------------------------- % This tool is part of OpenEarthTools. % OpenEarthTools is an online collaboration to share and manage data and % programming tools in an open source, version controlled environment. % Sign up to recieve regular updates of this function, and to contribute % your own tools. %% INITIALIZE OPT.ldb = ''; OPT.kml = ''; OPT.color = {255,0,0}; OPT.opacity = 100; OPT = setproperty(OPT,varargin{:}); if isempty(OPT.ldb) [nam pat]=uigetfile('*.ldb','Select landboundary file'); if nam==0 return end ldbName = [pat nam]; else ldbName = OPT.ldb; end if ~exist(ldbName) disp ['File ' ldbName 'not found.']; if isempty(OPT.kml) [PATHSTR,fName,EXT] = fileparts(ldbName); kmlName = [PATHSTR filesep fName '.kml']; else if strcmpi(OPT.kml,'get'); [fName fPat]=uiputfile('*.kml','Save kml-file to...'); kmlName = [fPat fName]; else kmlName = OPT.kml; end end [PATHSTR,fName,EXT] = fileparts(kmlName); if isempty(OPT.color) clr(1) = 255; clr(2) = 0; clr(3) = 0; elseif strcmpi(OPT.color,'get') clr=str2num(char(inputdlg({'Red','Green','Blue'},'Specify RGB color',1,{'255','0','0'}))); if isempty(clr) % clrString='ffff0000'; clr(1) = 255; clr(2) = 0; clr(3) = 0; end else clr(1) = OPT.color{1}; clr(2) = OPT.color{2}; clr(3) = OPT.color{3}; end clr=[min(255,clr(1)); min(255,clr(2)); min(255,clr(3))]; clr=[max(0,clr(1)); max(0,clr(2)); max(0,clr(3))]; opacity = floor((OPT.opacity * 255) / 100); %% Code ldb=landboundary('read',ldbName); ldb=ldb(:,1:2); fid=fopen(kmlName,'w'); fprintf(fid,'%s \n',''); fprintf(fid,'%s \n',''); fprintf(fid,'%s \n',''); fprintf(fid,'%s \n',''); fprintf(fid,'%s \n', ''); fprintf(fid,'%s \n',[' ' fName '']); fprintf(fid,'%s \n', ' '); if ~isnan(ldb(1,1)) ldb=[nan nan;ldb]; end if ~isnan(ldb(end,1)) ldb=[ldb;nan nan]; end did=find(isnan(ldb(:,1))); if ~isempty(did) rid=abs(did(1:end-1)-did(2:end)); remid=find(rid==1); ldb(did(remid),:)=[]; end id=find(isnan(ldb(:,1))); hW=waitbar(0,'Please wait while writing kml-file...'); for ii=1:length(id)-1 data=ldb(id(ii)+1:id(ii+1)-1,:); fprintf(fid,'%s \n', ' '); fprintf(fid,'%s \n',[' ' num2str(ii) '']); fprintf(fid,'%s \n', ' style_1'); fprintf(fid,'%s \n', ' '); fprintf(fid,'%s \n', ' 1'); fprintf(fid,'%s \n', ' '); fprintf(fid,'%s \n', ' '); fprintf(fid,'%s \n', ' '); for ij=1:size(data,1) fprintf(fid,'%s \n',[' ' num2str(data(ij,1),'%15.6f') ',' num2str(data(ij,2),'%15.6f') ', 0']); end fprintf(fid,'%s \n', ' '); fprintf(fid,'%s \n', ' '); fprintf(fid,'%s \n',' '); fprintf(fid,'%s \n',' '); fprintf(fid,'%s \n',' '); waitbar(ii/(length(id)-1),hW); end close(hW); fprintf(fid,'%s \n',''); fprintf(fid,'%s \n',''); fclose(fid);