


Sample user-defined projection and inverse projection of (lon,lat) to (x,y)
Copy to my_project (not a member of the toolbox) and modify to suite you
function [out_east,out_north] = my_project(in_east,in_north,direction)
DESCRIPTION:
Define projections between geographical and Euclidean coordinates
INPUT:
in_east = 1D vector containing longitude (forward) x (reverse)
in_north = 1D vector containing latitude (forward) y (reverse)
direction = ['forward' ; 'inverse']
OUTPUT:
(lon,lat) or (x,y) depending on choice of forward or reverse projection
EXAMPLE USAGE
[lon,lat] = my_project(x,y,'reverse')
Author(s):
Geoff Cowles (University of Massachusetts Dartmouth)
Revision history
==============================================================================

0001 function [out_east,out_north] = my_project(in_east,in_north,direction) 0002 0003 % Sample user-defined projection and inverse projection of (lon,lat) to (x,y) 0004 % Copy to my_project (not a member of the toolbox) and modify to suite you 0005 % 0006 % function [out_east,out_north] = my_project(in_east,in_north,direction) 0007 % 0008 % DESCRIPTION: 0009 % Define projections between geographical and Euclidean coordinates 0010 % 0011 % INPUT: 0012 % in_east = 1D vector containing longitude (forward) x (reverse) 0013 % in_north = 1D vector containing latitude (forward) y (reverse) 0014 % direction = ['forward' ; 'inverse'] 0015 % 0016 % OUTPUT: 0017 % (lon,lat) or (x,y) depending on choice of forward or reverse projection 0018 % 0019 % EXAMPLE USAGE 0020 % [lon,lat] = my_project(x,y,'reverse') 0021 % 0022 % Author(s): 0023 % Geoff Cowles (University of Massachusetts Dartmouth) 0024 % 0025 % Revision history 0026 % 0027 %============================================================================== 0028 0029 %subname = 'my_project'; 0030 %fprintf('\n') 0031 %fprintf(['begin : ' subname '\n']) 0032 0033 %------------------------------------------------------------------------------ 0034 % Parse input arguments 0035 %------------------------------------------------------------------------------ 0036 0037 ProjectDirection = 'forward'; 0038 0039 if(direction == 'forward') 0040 ProjectDirection = 'forward'; 0041 lon = in_east; 0042 lat = in_north; 0043 else 0044 ProjectDirection = 'inverse'; 0045 x = in_east; 0046 y = in_north; 0047 end; 0048 0049 0050 0051 %------------------------------------------------------------------------------ 0052 % Perform the projection: USER DEFINED 0053 % Example: project/inverse project to state plane 1802 0054 %------------------------------------------------------------------------------ 0055 0056 %if(ProjectDirection == 'forward') 0057 % fprintf('Projecting from (lon,lat) to (x,y)\n'); 0058 % [x,y] = sp_proj('1802','forward',lon,lat,'m'); 0059 % 0060 %else 0061 % fprintf('Inverse Projecting from (x,y) to (lon,lat)\n') 0062 % [lon,lat] = sp_proj('1802','inverse',x,y,'m'); 0063 %end; 0064 0065 %------------------------------------------------------------------------------ 0066 % Skagit, UTM, Zone 10 (see http://www.dmap.co.uk/utmworld.htm) 0067 %------------------------------------------------------------------------------ 0068 m_proj('UTM','longitude',[-124,-122],'latitude',[47,49],'zone',10,'hemisphere','north','ellipsoid','wgs84') 0069 %m_proj get 0070 %[x,y] = m_ll2xy(-122.530820 , 48.363114); 0071 %fprintf('x %f y %f\n',x,y-1e7); 0072 %fprintf('should be 534752, 5356766.\n') 0073 deltay = 1e7; 0074 0075 if(ProjectDirection == 'forward') 0076 % fprintf('Projecting from (lon,lat) to (x,y)\n'); 0077 [x,y]=m_ll2xy(lon,lat); 0078 y = y - deltay; %why? 0079 else 0080 % fprintf('Inverse Projecting from (x,y) to (lon,lat)\n') 0081 [lon,lat]=m_xy2ll(x,y+deltay); 0082 end; 0083 0084 0085 % set the output 0086 if(ProjectDirection == 'forward') 0087 out_east = x; 0088 out_north = y; 0089 else 0090 out_east = lon; 0091 out_north = lat; 0092 end; 0093