⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m_proj.m

📁 M_MAP教你如何用MATLAB绘制海洋、大气类的图。可以使用各种投影
💻 M
字号:
function m_proj(proj,varargin)% M_PROJ  Initializes map projections info, putting the result into a structure%%         M_PROJ('set') tells you the current state%         M_PROJ('get') gives you a list of all possibilities%         M_PROJ('get','proj name') gives info about a projection in the %                                   'get' list.%         M_PROJ('proj name','property',value,...) initializes a projection.%%%         see also M_GRID, M_LL2XY, M_XY2LL.% Rich Pawlowicz (rich@ocgy.ubc.ca) 2/Apr/1997%% This software is provided "as is" without warranty of any kind. But% it's mine, so you can't sell it.%% 20/Sep/01 - Added support for other coordinate systems.% 25/Feb/07 - Swapped "get" and "set" at lines 34 and 47 %		to make it consistent with the help %		(and common Matlab style)%	    - Added lines 62-70 & 74 %		to harden against error when no proj is set%             (fixes thanks to Lars Barring)global MAP_PROJECTION MAP_VAR_LIST MAP_COORDS% Get all the projectionsprojections=m_getproj;if nargin==0, proj='usage'; end;proj=lower(proj);switch proj,  case 'set',              % Print out their names    if nargin==1,      disp(' ');      disp('Available projections are:');       for k=1:length(projections),        disp(['     ' projections(k).name]);      end;    else      k=m_match(varargin{1},projections(:).name);      eval(['X=' projections(k).routine '(''set'',projections(k).name);']);      disp(X);    end;  case 'get',              % Get the values of all set parameters    if nargin==1,      if isempty(MAP_PROJECTION),         disp('No map projection initialized');         m_proj('usage');      else         k=m_match(MAP_PROJECTION.name,projections(:).name);         eval(['X=' projections(k).routine '(''get'');']);         disp('Current mapping parameters -');         disp(X);      end;    else      if isempty(MAP_PROJECTION),                  k=m_match(varargin{1},projections(:).name);        eval(['X=' projections(k).routine '(''set'',projections(k).name);']);        X=strvcat(X, ...                  ' ', ...                  '**** No projection is currently defined      ****', ...                  ['**** USE "m_proj(''' varargin{1} ''',<see options above>)" ****']);        disp(X);      else	k=m_match(varargin{1},projections(:).name);	eval(['X=' projections(k).routine '(''get'');']);	disp(X);      end;	    end;  case 'usage',    disp(' ');    disp('Possible calling options are:');    disp('  ''usage''                    - this list');    disp('  ''set''                      - list of projections');    disp('  ''set'',''projection''         - list of properties for projection');    disp('  ''get''                      - get current mapping parameters (if defined)');    disp('  ''projection'' <,properties> - initialize projection\n'); otherwise                % If a valid name, give the usage.    k=m_match(proj,projections(:).name);    MAP_PROJECTION=projections(k);            eval([ projections(k).routine '(''initialize'',projections(k).name,varargin{:});']);    % With the projection store what coordinate system we are using to define it.    if isempty(MAP_COORDS),      m_coord('geographic');    end;      MAP_PROJECTION.coordsystem=MAP_COORDS;    end;%---------------------------------------------------------function projections=m_getproj;% M_GETPROJ Gets a list of the different projection routines%           and returns a structure containing both their%           names and the formal name of the projection.%           (used by M_PROJ).% Rich Pawlowicz (rich@ocgy.ubc.ca) 9/May/1997%% 9/May/97 - fixed paths for Macs (thanks to Dave Enfield)%% 7/05/98 - VMS pathnames (thanks to Helmut Eggers)% Get all the projectionslpath=which('m_proj');fslashes=findstr(lpath,'/');bslashes=findstr(lpath,'\');colons=findstr(lpath,':');closparantheses=findstr(lpath,']');if ~isempty(fslashes),  lpath=[ lpath(1:max(fslashes)) 'private/'];elseif ~isempty(bslashes),  lpath=[ lpath(1:max(bslashes)) 'private\'];elseif ~isempty(closparantheses),       % for VMS computers only, others don't use ']' in filenames  lpath=[ lpath(1:max(closparantheses)-1) '.private]'];else,  lpath=[ lpath(1:max(colons)) 'private:'];end;w=dir([lpath 'mp_*.m']);if isempty(w), % Not installed correctly  disp('**********************************************************');  disp('* ERROR - Can''t find anything in a /private subdirectory *');  disp('*         m_map probably unzipped incorrectly - please   *');  disp('*         unpack again, preserving directory structure   *');  disp('*                                                        *');  disp('*         ...Abandoning m_proj now.                      *');  error('**********************************************************');end;  	l=1;projections=[];for k=1:length(w), funname=w(k).name(1:(findstr(w(k).name,'.'))-1); projections(l).routine=funname; eval(['names= ' projections(l).routine '(''name'');']); for m=1:length(names);   projections(l).routine=funname;   projections(l).name=names{m};   l=l+1; end;end;%----------------------------------------------------------function match=m_match(arg,varargin);% M_MATCH Tries to match input string with possible options% Rich Pawlowicz (rich@ocgy.ubc.ca) 2/Apr/1997match=strmatch(lower(arg),cellstr(lower(char(varargin))));if length(match)>1,  error(['Projection ''' arg ''' not a unique specification']);elseif isempty(match),  error(['Projection ''' arg ''' not recognized']);end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -