Switch Between Projections
Once you create an axesm
-based map, whether map data is displayed
or not, it is possible to change the current projection as well as many of its
parameters. Use setm
to reset the projection. The rest of this
section describes the considerations and parameters involved in switching projections in
an axesm
-based map. Additional details are given for doing this
with the geoshow
function in Change Map Projections When Using geoshow.
When you switch from one projection to another, setm
clears out
settings that were specific to the earlier projection, updates the map frame and
graticule, and generally keeps the map covering the same part of the world—even
when switching between azimuthal and non-azimuthal projections. But in some cases, you
might need to further adjust the axesm
-based map properties to
achieve proper appearance. Settings that are suitable for one projection might not be
appropriate for another. Most often, you'll need to update the positioning of your
meridian and parallel labels.
Change Projection Updating Meridian and Parallel Labels
This example shows how to change the projection of an axesm
-based map and update the meridian and parallel labels.
Create a Mercator projection with meridian and parallel labels.
axesm mercator framem on; gridm on; mlabel on; plabel on setm(gca,'LabelFormat','signed') axis off
Get the default map and frame latitude limits for the Mercator projection. Note that both the frame and map latitude limits are set to 86 degrees north and south for the Mercator projection to maintain a safe distance from the singularity at the poles.
[getm(gca,'MapLatLimit'); getm(gca,'FLatLimit')]
ans = 2×2
-86 86
-86 86
Switch the projection to an orthographic azimuthal.
setm(gca,'MapProjection','ortho')
Specify new locations for the meridian and parallel labels.
setm(gca,'MLabelParallel',0,'PLabelMeridian',-90, ... 'PLabelMeridian',-30)
Change Projection Resetting Frame Limits
This example shows how to switch from one projection to another in an axesm
-based map and reset the origin and frame limits, especially when mapping a small portion of the Earth.
Create an axesm
-based map for a region of the United States in the Lambert Conformal Conic projection (the default projection for the usamap
function).
latlim = [32 42]; lonlim = [-125 -111]; h = usamap(latlim, lonlim);
Read the usastatehi
shapefile and return a subset of the shapefile contents, as defined by the latitude and longitude limits. The shaperead
function returns the data in a structure called states
.
states = shaperead('usastatehi.shp', 'UseGeoCoords', true, ... 'BoundingBox', [lonlim', latlim']);
Save the latitude and longitude data from the structure in the vectors lat
and lon
.
lat = [states.Lat]; lon = [states.Lon];
Project patch objects on the map.
patchm(lat, lon, [0.5 0.5 1])
Change the projection to Lambert Equal Area Azimuthal and reset the origin and frame limits.
setm(gca,'MapProjection','eqaazim','Origin',[37 -118], ... 'FLatLimit',[-Inf 6]) setm(gca,'mlinelocation',2,'plinelocation',2) tightmap