www.gusucode.com > GPS仿真Matlab编程源码程序 > GPS仿真Matlab编程源码程序/geoFunctions/findUtmZone.m
function utmZone = findUtmZone(latitude, longitude) %Function finds the UTM zone number for given longitude and latitude. %The longitude value must be between -180 (180 degree West) and 180 (180 %degree East) degree. The latitude must be within -80 (80 degree South) and %84 (84 degree North). % %utmZone = findUtmZone(latitude, longitude); % %Latitude and longitude must be in decimal degrees (e.g. 15.5 degrees not %15 deg 30 min). %-------------------------------------------------------------------------- % SoftGNSS v3.0 % % Copyright (C) Darius Plausinaitis % Written by Darius Plausinaitis %-------------------------------------------------------------------------- %This program 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 2 %of the License, or (at your option) any later version. % %This program 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 this program; if not, write to the Free Software %Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, %USA. %========================================================================== %CVS record: %$Id: findUtmZone.m,v 1.1.2.2 2006/08/22 13:45:59 dpl Exp $ %% Check value bounds ===================================================== if ((longitude > 180) || (longitude < -180)) error('Longitude value exceeds limits (-180:180).'); end if ((latitude > 84) || (latitude < -80)) error('Latitude value exceeds limits (-80:84).'); end %% Find zone ============================================================== % Start at 180 deg west = -180 deg utmZone = fix((180 + longitude)/ 6) + 1; %% Correct zone numbers for particular areas ============================== if (latitude > 72) % Corrections for zones 31 33 35 37 if ((longitude >= 0) && (longitude < 9)) utmZone = 31; elseif ((longitude >= 9) && (longitude < 21)) utmZone = 33; elseif ((longitude >= 21) && (longitude < 33)) utmZone = 35; elseif ((longitude >= 33) && (longitude < 42)) utmZone = 37; end elseif ((latitude >= 56) && (latitude < 64)) % Correction for zone 32 if ((longitude >= 3) && (longitude < 12)) utmZone = 32; end end