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

📄 m_plotbndry.m

📁 A mapping package for Matlab:这是一款功能十分强大的地理绘图工具包
💻 M
字号:
function [bndry_lon,bndry_lat] = m_plotbndry(name,varargin)% M_PLOTBNDRY plots text files of Lat,Lon for political boundaries.% Text files (derived from the DCW) are obtained from %   http://www.maproom.psu.edu/cgi-bin/ian/points/index.cgi%%     M_PLOTBNDRY(NAME) plots the state or country specified in the%     string NAME, which may include a path name. The routine will%     then a) search the specified path for a mat-file of that name%          b) search the specified path for an ascii *2pts.txt file%             of that name, and, if found convert it to a mat-file.%          c) failing that, it will open a file dialog box.%%     M_PLOTBNDRY(NAME, ...line properties) will use the specified %     line properties in drawing the boundary.%%     [LON,LAT]=M_PLOTBNDRY(...) returns vectors of the boundary%     points.%% Note: If errors occur when a file is first plotted, check that % the entire file was downloaded.  It should end with two consecutive% END lines.% Original Author: Michael W. Mann%% Changes: R. Pawlowicz 21/12/98 - changed interface to read from%          given directory, allow output, allow various line %          properties to be specified.% 6/Nov/00 - eliminate returned stuff if ';' neglected (thx to D Byrne)% 19/Mar/04 - .mat files not being created because of a bug found by James Connor.% Set current projection to geographicCurrentmap=m_coord('set');m_coord('geographic');targetfile = [name,'2pts.mat']; %try to find binary filetargetpath = dir(targetfile);if ( length(targetpath)~=0 ) %then load file.   load(targetfile);   m_line(bndry_lon,bndry_lat,'tag','m_plotbndry',varargin{:});   else %Can't find binary file, load and process text file.   %  Create .mat file from data read.      targetfile = [name,'2pts.txt'];   targetpath = dir(targetfile);   if ( length(targetpath)==0 ) %then      [filename,pathname]=uigetfile('*2pts.txt',['Select ',targetfile,' file']);      if ( filename == 0 ), error(['Could not find ',targetfile]), end      targetpath = [pathname,filename];   end %if   [fid,message] = fopen(targetfile,'r');   if ( fid < 0 ) %then      fclose(fid);      error(message);   end %if      namein = fgetl(fid);   if ( ~findstr(lower(name),lower(namein)) ) %then      fclose(fid);      error(['File contains wrong state! ','Desired: ',name,' Found: ',namein]);   end %if      done = 0;   polynum = 0;   numpts = [];   while ( ~done )      %read in polygon index      line = fgetl(fid);      field = sscanf(line,'%3c');      if ( strcmp(upper(field),'END') ) %then found EOF         done = 1;      else %start reading in polygon         polynum = polynum + 1;         polynumin = sscanf(line,'%u');         if ( polynum ~= polynumin ) %then            fclose(fid);            error(['Didn''t find polynum ',num2str(polynum),...                  ', found ',num2str(polynumin),' .']);         end %if         line = fgetl(fid); %skip polygon centroid         line = fgetl(fid); %first point         ptcount = 0;         while ( ~strcmp(upper(line(1:3)),'END') )            ptcount = ptcount + 1;            line = fgetl(fid);         end %while         numpts = [numpts,ptcount];      end %if   end %while      Npolygon = length(numpts);   fclose(fid); %Close file.      % Vectors for composite outline   bndry_lat = zeros(1,sum(numpts)+Npolygon);   bndry_lon = zeros(1,sum(numpts)+Npolygon);   i1 = 0; %index to last filled entry in vectors   fid = fopen(targetfile,'r'); %reopen file   line = fgetl(fid); %ignore namefield      for i = 1:Npolygon      line = fgetl(fid); %ignore polygon index      line = fgetl(fid); %ignore centroid lat,lon      [poly,count] = fscanf(fid,'%g',[2,inf]); %read data      line = fgetl(fid); %ignore END           % Save data for reuse as .mat file      i0 = i1 + 1;  i1 = i0 + numpts(i);      bndry_lon(i0:i1) = [poly(1,:),NaN]; %add NaN to lift pen      bndry_lat(i0:i1) = [poly(2,:),NaN]; %add NaN to lift pen         end %for      fclose(fid);      m_line(bndry_lon,bndry_lat,'tag','m_plotbndry',varargin{:});   nchar = length(targetfile);   % Bug fix thanks to James Connor   matfile = [targetfile(1:(nchar-4)),'.mat'];   save(matfile,'bndry_lat','bndry_lon');   end %ifm_coord(Currentmap.name);if nargout==0, clear bndry_lon bndry_latend;

⌨️ 快捷键说明

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