Utilisateur:Ikonact/Cartographie/wmt init

function wmt_init(varargin)
%#WMT_INIT sets the parameters of the map to be plotted.
%#
%# WMT_INIT('limits', [lat1 lat2 lon1 lon2], 'datalimits', [dlat1 dlat2 dlon1 dlon2], 'filename', filename, 'size', [width height], 'type', type, 'projection', projection);
%# [dlat1 dlat2 dlon1 dlon2] - the geographical limits of the data used
%# [lat1 lat2 lon1 lon2] - the geographcal limits of the map to be plot
%# filename - the map filename
%# [width height] - the size of the map,
%# type - the type of the file: svg or jpeg. If empty - jpeg
%# projection - map projection. Uses m_map projections (http://www.eos.ubc.ca/~rich/map.html)

%# The WMT tool is a collection of Octave/Matlab scripts able to generate geographic maps images.
%#
%# Copyright 2012 ikonact
%# http://commons.wikimedia.org/wiki/User:Ikonact
%# 
%# This file is part of the WMT tool.
%# 
%# WMT is free software: you can redistribute it and/or modify
%# it under the terms of the GNU General Public License as published by
%# the Free Software Foundation, either version 3 of the License, or
%# (at your option) any later version.
%# 
%# WMT 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 General Public License for more details.
%# 
%# You should have received a copy of the GNU General Public License
%# along with WMT.  If not, see <http://www.gnu.org/licenses/>.

global wmt_param;

%# get variables
for i = 1:2:nargin
	switch(varargin{i})
		case 'limits'
			wmt_param.limits = varargin{i+1};
		case 'filename'
			wmt_param.filename = varargin{i+1};
		case 'size'
			wmt_param.pictsize = varargin{i+1};
        case 'projection'
			wmt_param.projection = varargin{i+1};
        case 'type'
			wmt_param.type = varargin{i+1};
        case 'datalimits'
			wmt_param.datalimits = varargin{i+1};
		otherwise
			disp(varargin{i});
	end
end

if isfield(wmt_param, 'projection') && ~strcmp(wmt_param.projection,'')
    m_proj(wmt_param.projection,'long',[wmt_param.datalimits(3) wmt_param.datalimits(4)],'lat',[wmt_param.datalimits(1) wmt_param.datalimits(2)]);
    % set relative xlim and ylim... this is necessary in order to have a squared picture
    [xa, ya] = m_ll2xy([wmt_param.limits(3) wmt_param.limits(3) wmt_param.limits(4) wmt_param.limits(4)], [wmt_param.limits(1) wmt_param.limits(2) wmt_param.limits(1) wmt_param.limits(2)]);
    wmt_param.relxlim = [min(xa(1), xa(2)) max(xa(3), xa(4))];
    wmt_param.relylim = [min(ya(1), ya(3)) max(ya(2), ya(4))];

    % init the picture size
    m_plot([wmt_param.limits(3) wmt_param.limits(3) wmt_param.limits(4) wmt_param.limits(4)], [wmt_param.limits(1) wmt_param.limits(2) wmt_param.limits(1) wmt_param.limits(2)]);
    xlim(wmt_param.relxlim);
    ylim(wmt_param.relylim);
    
    %get scale factors for the size
    sc=get(gca, 'dataaspectratio');
    wmt_param.pictsize(2) = round(sc(2)*wmt_param.pictsize(1));
    wmt_param.pictsize(1) = round(sc(1)*wmt_param.pictsize(1));    
end



%# open svg file
wmt_param.fid = fopen(wmt_param.filename, 'wt');
fprintf(wmt_param.fid, '<?xml version="1.0" standalone="no"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n<svg\n\txmlns="http://www.w3.org/2000/svg"\n\t');
fprintf(wmt_param.fid, 'xmlns:xlink="http://www.w3.org/1999/xlink"\n\t');
fprintf(wmt_param.fid, 'xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\n\t');
fprintf(wmt_param.fid, 'xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\n\t');
fprintf(wmt_param.fid, 'width="%d" height="%d" version="1.0">\n', wmt_param.pictsize(1), wmt_param.pictsize(2));

fprintf(wmt_param.fid, '<style type="text/css" >\n<![CDATA[\n');
fprintf(wmt_param.fid, '.coast, .river, .rivers {fill:none;stroke:#0978AB; stroke-width:1;}\n');
fprintf(wmt_param.fid, '.grid {fill:none;stroke:#000000;stroke-width:0.3;}\n');
fprintf(wmt_param.fid, '.border0 {fill:none; stroke:#646464; stroke-width:1;stroke-dasharray:10, 5, 2.5, 5;}\n');
fprintf(wmt_param.fid, '.border {fill:none; stroke:#646464; stroke-width:1;}\n');
fprintf(wmt_param.fid, '.urban {fill:#f1c872;stroke:#000; stroke-width:0.5;}\n');
fprintf(wmt_param.fid, '.lake, .lakes {fill:#d8f2fe;stroke:#0978ab; stroke-width:1;}\n');
fprintf(wmt_param.fid, '.primary, .trunk {fill:none; stroke:#ff4800;stroke-width:1;}\n');
fprintf(wmt_param.fid, '.highway, .highways {fill:none; stroke:#ff4800;stroke-width:2;}\n');
fprintf(wmt_param.fid, '.railway, .railways {fill:none; stroke:#000000;stroke-width:1;}\n');
fprintf(wmt_param.fid, '.city, .cities {fill:#ffffff;stroke:#000000;stroke-width:2;}\n');
fprintf(wmt_param.fid, '.town, .towns {fill:#ffffff;stroke:#000000;stroke-width:1;}\n');
fprintf(wmt_param.fid, '#topo {fill:none;stroke:none; stroke-width:0.5;}\n');
fprintf(wmt_param.fid, '.bathymetry9 {fill:#71ABD8;}\n');
fprintf(wmt_param.fid, '.bathymetry8 {fill:#79B2DE;}\n');
fprintf(wmt_param.fid, '.bathymetry7 {fill:#84B9E3;}\n');
fprintf(wmt_param.fid, '.bathymetry6 {fill:#8DC1EA;}\n');
fprintf(wmt_param.fid, '.bathymetry5 {fill:#96C9F0;}\n');
fprintf(wmt_param.fid, '.bathymetry4 {fill:#A1D2F7;}\n');
fprintf(wmt_param.fid, '.bathymetry3 {fill:#ACDBFB;}\n');
fprintf(wmt_param.fid, '.bathymetry2 {fill:#B9E3FF;}\n');
fprintf(wmt_param.fid, '.bathymetry1 {fill:#C6ECFF;}\n');
fprintf(wmt_param.fid, '.bathymetry0 {fill:#D8F2FE;}\n');
fprintf(wmt_param.fid, '.topo0 {fill:#D8F2FE;}\n');
fprintf(wmt_param.fid, '.topo1 {fill:#acd0a5;}\n');
fprintf(wmt_param.fid, '.topo2 {fill:#94BF8B;}\n');
fprintf(wmt_param.fid, '.topo3 {fill:#A8C68F;}\n');
fprintf(wmt_param.fid, '.topo4 {fill:#BDCC96;}\n');
fprintf(wmt_param.fid, '.topo5 {fill:#D1D7AB;}\n');
fprintf(wmt_param.fid, '.topo6 {fill:#E1E4B5;}\n');
fprintf(wmt_param.fid, '.topo7 {fill:#EFEBC0;}\n');
fprintf(wmt_param.fid, '.topo8 {fill:#E8E1B6;}\n');
fprintf(wmt_param.fid, '.topo9 {fill:#DED6A3;}\n');
fprintf(wmt_param.fid, '.topo10 {fill:#D3CA9D;}\n');
fprintf(wmt_param.fid, '.topo11 {fill:#CAB982;}\n');
fprintf(wmt_param.fid, '.topo12 {fill:#C3A76B;}\n');
fprintf(wmt_param.fid, '.topo13 {fill:#B9985A;}\n');
fprintf(wmt_param.fid, '.topo14 {fill:#AA8753;}\n');
fprintf(wmt_param.fid, '.topo15 {fill:#AC9A7C;}\n');
fprintf(wmt_param.fid, '.topo16 {fill:#BAAE9A;}\n');
fprintf(wmt_param.fid, '.topo17 {fill:#CAC3B8;}\n');
fprintf(wmt_param.fid, '.topo16 {fill:#e0ded8;}\n');
fprintf(wmt_param.fid, '.topo17 {fill:#f5f4f2;}\n');
fprintf(wmt_param.fid, '.shadow1 {fill:#777777;stroke:none; opacity:0.2;}\n');
fprintf(wmt_param.fid, '.shadow2 {fill:#555555;stroke:none; opacity:0.2;}\n');
fprintf(wmt_param.fid, ']]>\n</style>\n');

fprintf(wmt_param.fid, '<clipPath id="IDmain">\n\t');
fprintf(wmt_param.fid, '<rect x="0" y="0" width="%d" height="%d"/>\n',wmt_param.pictsize(1), wmt_param.pictsize(2));
fprintf(wmt_param.fid, '</clipPath>\n');