A Mapping package for Matlab (2024)

A Mapping package for Matlab (1)

You have collected your data, loaded it into Matlab , analyzed everything to death, and now you want to make a simple map showing how it relates to the world.

But you can't.

Instead you have to figure out how to save all your data, and then read it intoanother program (like, for example GMT ),and then spend all that extra timefiguring out why it doesn't give you whatyou expected it would...

No more!

Announcing M_Map v1.3e!

M_Map is a set of mapping tools written for Matlab v5.These include:
  1. Routines to project data in 18 different spherical projections (and determineinverse mappings)
  2. A grid generation routine to make nice axes with limits either in lat/long termsor in planar X/Y terms.
  3. A coastline database (with 1/4 degree resolution)
  4. A global elevation database (1 degree resolution)
  5. Hooks into freely available high-resolution coastline and bathymetry databases

M_Map is now use at almost 1800 locations around the world!

A Mapping package for Matlab (2)

New in release 1.2 are

  1. Built-in functions for drawing lines, text, and quiver plots in long/lat coords
  2. Built-in functions for contouring data (filled and line contours) in long/lat coords
  3. Hooks into a 5-minute global bathymetry ( TerrainBase ) available from the net.
  4. Fancy quiver plots, thanks to E. Firing (see example 8)
  5. Gall-Peters projection (handy for large tropical areas)
  6. Fancy outline boxes! (see example 2 and example 6)
New in release 1.3 are
  1. High-resolution coastlines! (through hooks into the nested set of coastlinesat different resolutions making up the Global Self-consistent HierarchicalHigh-resolution Shoreline Database (GSHHS) used by GMT (see example 9)
  2. Instructions on how to use the new Sandwell and Smith bathymetry
  3. Hammer-Aitoff (example 11) and Mollweide projections (example 4)
New in release 1.3d are
  1. m_patch primitive
  2. m_scale primitive to allow drawing of maps at a required scale
  3. True elliptical UTM projection (thanks to P. Lemmond)
  4. m_track for drawing tracklines with time/date annotation (thanks to P. Lemmond)(example 10)
  5. m_plotbndry - hooks into an online database of political boundaries (Thanks to M. Mann)
New in release 1.3e are
  1. m_range_rings primitive to draw range rings (just great for nuclear weapon destructionradii and seismic travel-time data - see example 11).
  2. Extended usefullness of m_ungrid to allow removal of any specific plot element bya command line option.

How to get M_Map

You can download the M_Map toolbox either as a gzipped tar-file , or as zip archive (Click on these links to download). Both arearound 250k in size. Once you have this archive, read the Getting started section of the User's guide tocorrectly install this toolbox, and sections 9and 10.1 to install TerrainBase and GSHHSrespectively.

A number of examples have been given to highlight thevarious capabilities of M_Map.

User's guide

  1. Getting started
  2. Specifying projections
    1. Azimuthal projections
    2. Cylindrical and Pseudo-cylindrical projections
    3. Conic projections
    4. Miscellaneous global projections
    5. Yeah, but which projection should I use?
    6. Map scales A Mapping package for Matlab (3)
  3. Coastlines and Bathymetry
    1. Coastline options
    2. Topography/Bathymetry options
  4. Customizing the axes
    1. Grid lines and labels
    2. Titles and x/ylabels
  5. Adding your own data
    1. Drawing lines, text, arrows, patches and contours
    2. Drawing tracklines A Mapping package for Matlab (4)
    3. Drawing range rings A Mapping package for Matlab (5)
    4. Converting longitude/latitude to projection coordinates
    5. Converting projection coordinates to longitude/latitude
  6. More complex plots
  7. Removing data from a plotA Mapping package for Matlab (6)
  8. Adding your own coastlines
    1. DCW political boundaries A Mapping package for Matlab (7)
  9. Adding your own topography/bathymetry
    1. Sandwell and Smith Bathymetry
  10. Using TerrainBase 5-minute global bathymetry/topography
  11. Using the GSHHS high-resolution coastline database
    1. Installing GSHHS
    2. Using GSHHS effectively
  12. M_Map toolbox contents and description
  13. Known Problems and Bugs
  14. Changes since last release A Mapping package for Matlab (8)
For information, help, suggestions, or bug reports, contact Rich Pawlowicz , ( rich@ocgy.ubc.ca )

Examples

1. M_Map Logo

m_proj('ortho','lat',48','long',-123');m_coast('patch','r');m_grid('linest','-','xticklabels',[],'yticklabels',[]);patch(.55*[-1 1 1 -1],.25*[-1 -1 1 1]-.55,'w');text(0,-.55,'M\_Map','fontsize',25,'color','b',... 'vertical','middle','horizontal','center');set(gcf,'units','inches','position',[2 2 3 3]);set(gcf,'paperposition',[3 3 3 3]);
A Mapping package for Matlab (9)

2. Lambert Conformal Conic projection of North American Topography

m_proj('lambert','long',[-160 -40],'lat',[30 80]);m_coast('patch',[1 .85 .7]);m_elev('contourf',[500:500:6000]);m_grid('box','fancy','tickdir','in');colormap(flipud(copper));
A Mapping package for Matlab (10)

3. Stereographic projection of North Polar regions

% Note that coastline is drawn OVER the grid because of the order in which% the two routines are calledm_proj('stereographic','lat',90,'long',30,'radius',25);m_elev('contour',[-3500:1000:-500],'edgecolor','b');m_grid('xtick',12,'tickdir','out','ytick',[70 80],'linest','-');m_coast('patch',[.7 .7 .7],'edgecolor','r');
A Mapping package for Matlab (11)

4. Two Interrupted Projections of the World's Oceans

subplot(211);Slongs=[-100 0;-75 25;-5 45; 25 145;45 100;145 295;100 290];Slats= [ 8 80;-80 8; 8 80;-80 8; 8 80;-80 0; 0 80];for l=1:7, m_proj('sinusoidal','long',Slongs(l,:),'lat',Slats(l,:)); m_grid('fontsize',6,'xticklabels',[],'xtick',[-180:30:360],... 'ytick',[-80:20:80],'yticklabels',[],'linest','-','color',[.9 .9 .9]); m_coast('patch','g');end;xlabel('Interrupted Sinusoidal Projection of World Oceans');% In order to see all the maps we must undo the axis limits set by m_grid calls:set(gca,'xlimmode','auto','ylimmode','auto');subplot(212);Slongs=[-100 43;-75 20; 20 145;43 100;145 295;100 295];Slats= [ 0 90;-90 0;-90 0; 0 90;-90 0; 0 90];for l=1:6, m_proj('mollweide','long',Slongs(l,:),'lat',Slats(l,:)); m_grid('fontsize',6,'xticklabels',[],'xtick',[-180:30:360],... 'ytick',[-80:20:80],'yticklabels',[],'linest','-','color','k'); m_coast('patch',[.6 .6 .6]);end;xlabel('Interrupted Mollweide Projection of World Oceans');set(gca,'xlimmode','auto','ylimmode','auto');
A Mapping package for Matlab (12)

5. Oblique Mercator Projection with quiver and contour data

%% Nice looking data[lon,lat]=meshgrid([-136:2:-114],[36:2:54]);u=sin(lat/6);v=sin(lon/6);m_proj('oblique','lat',[56 30],'lon',[-132 -120],'aspect',.8);subplot(121);m_coast('patch',[.9 .9 .9],'edgecolor','none');m_grid('tickdir','out','yaxislocation','right',... 'xaxislocation','top','xlabeldir','end','ticklen',.02);hold on;m_quiver(lon,lat,u,v);xlabel('Simulated surface winds');subplot(122);m_coast('patch',[.9 .9 .9],'edgecolor','none');m_grid('tickdir','out','yticklabels',[],... 'xticklabels',[],'linestyle','none','ticklen',.02);hold on;[cs,h]=m_contour(lon,lat,sqrt(u.*u+v.*v));clabel(cs,h,'fontsize',8);xlabel('Simulated something else');
A Mapping package for Matlab (13)

6. Miller Projection with Great Circle

% Plot a circular orbitlon=[-180:180];lat=atan(tan(60*pi/180)*cos((lon-30)*pi/180))*180/pi;m_proj('miller','lat',82);m_coast('color',[0 .6 0]);m_line(lon,lat,'linewi',3,'color','r');m_grid('linestyle','none','box','fancy','tickdir','out');
A Mapping package for Matlab (14)

7. Lambert Conformal Projection with high-resolution bathymetry of Western Mediterranean

m_proj('lambert','lon',[-10 20],'lat',[33 48]);m_tbase('contourf');m_grid('linestyle','none','tickdir','out','linewidth',3);
A Mapping package for Matlab (15)

8. Demonstration of fancy vectors

m_vec % See code in m_vec.m for details
A Mapping package for Matlab (16)

9. Zoom in on Prince Edward Island to show different coastline resolutions

% Example showing the default coastline and all of the different resolutions % of GSHHS coastlines as we zoom in on a section of Prince Edward Island.clfaxes('position',[.35 .6 .37 .37]);m_proj('albers equal-area','lat',[40 60],'long',[-90 -50],'rect','on');m_coast('patch',[0 1 0]);m_grid('linest','none','linewidth',2,'tickdir','out','xaxisloc','top','yaxisloc','right');m_text(-69,41,'Standard coastline','color','r','fontweight','bold');axes('position',[.09 .5 .37 .37]);m_proj('albers equal-area','lat',[40 54],'long',[-80 -55],'rect','on');m_gshhs_c('patch',[.2 .8 .2]);m_grid('linest','none','linewidth',2,'tickdir','out','xaxisloc','top');m_text(-80,52.5,'GSHHS\_C (crude)','color','m','fontweight','bold','fontsize',14);axes('position',[.13 .2 .37 .37]);m_proj('albers equal-area','lat',[43 48],'long',[-67 -59],'rect','on');m_gshhs_l('patch',[.4 .6 .4]);m_grid('linest','none','linewidth',2,'tickdir','out');m_text(-66.5,43.5,'GSHHS\_L (low)','color','m','fontweight','bold','fontsize',14);axes('position',[.35 .05 .37 .37]);m_proj('albers equal-area','lat',[45.8 47.2],'long',[-64.5 -62],'rect','on');m_gshhs_i('patch',[.5 .6 .5]);m_grid('linest','none','linewidth',2,'tickdir','out','yaxisloc','right');m_text(-64.4,45.9,'GSHHS\_I (intermediate)','color','m','fontweight','bold','fontsize',14);axes('position',[.55 .23 .37 .37]);m_proj('albers equal-area','lat',[46.375 46.6],'long',[-64.2 -63.7],'rect','on');m_gshhs_h('patch',[.6 .6 .6]);m_grid('linest','none','linewidth',2,'tickdir','out','xaxisloc','top','yaxisloc','right');m_text(-64.18,46.58,'GSHHS\_H (high)','color','m','fontweight','bold','fontsize',14);
A Mapping package for Matlab (17)

10. Tracklines and UTM projection

m_proj('UTM','long',[-72 -68],'lat',[40 44]);m_gshhs_i('color','k');m_grid('box','fancy','tickdir','in');% fake up a tracklinelons=[-71:.1:-67];lats=60*cos((lons+115)*pi/180);dates=datenum(1997,10,23,15,1:41,zeros(1,41));m_track(lons,lats,dates,'ticks',0,'times',4,'dates',8,... 'clip','off','color','r','orient','upright'); 
A Mapping package for Matlab (18)

11. Range rings

 m_proj('hammer','clong',170); m_grid('xtick',[],'ytick',[],'linestyle','-'); m_coast('patch','g'); m_line(100.5,13.5,'marker','square','color','r'); m_range_ring(100.5,13.5,[1000:1000:15000],'color','b','linewi',2); xlabel('1000km range rings from Bangkok');
A Mapping package for Matlab (19)

Last changed 18/Dec/1998. Questions and comments to rich@ocgy.ubc.ca
A Mapping package for Matlab (2024)
Top Articles
Latest Posts
Article information

Author: Kelle Weber

Last Updated:

Views: 5331

Rating: 4.2 / 5 (53 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Kelle Weber

Birthday: 2000-08-05

Address: 6796 Juan Square, Markfort, MN 58988

Phone: +8215934114615

Job: Hospitality Director

Hobby: tabletop games, Foreign language learning, Leather crafting, Horseback riding, Swimming, Knapping, Handball

Introduction: My name is Kelle Weber, I am a magnificent, enchanting, fair, joyous, light, determined, joyous person who loves writing and wants to share my knowledge and understanding with you.