Many Mapping Toolbox™ cartographic functions project features on a map axes based on their designated latitude-longitude positions. The latitudes and longitudes are mathematically transformed to x and y positions using the formulas for the current map projection. If the map projection or its parameters change, objects on a map axes can be automatically reprojected to update the map display accordingly.
The table summarizes the four common use cases for changing a map projection in a map
axes with setm
or for reprojecting map data plotted on a regular
MATLAB® axes.
Mapping Use Case | Type of Axes | Reprojection Behavior |
---|---|---|
Plot geographic (latitude-longitude) vector
coordinate data or data grid using a Mapping
Toolbox function from releases prior to Version 2 (e.g.,
plotm ) | Map axes | Automatic reprojection |
Plot geographic vector data with
geoshow | Map axes | No automatic reprojection; delete graphics objects prior to changing the projection and redraw them afterwards. |
Plot data grids, images, and contours with geographic coordinates
with geoshow | Map axes | Automatic reprojection; this behavior could change in a future release |
Plot projected (x-y) vector or raster map
data with mapshow or with a MATLAB graphics function (e.g., line ,
contour , or
surf ) | Regular axes | Manual reprojection (reproject coordinates with
minvtran /mfwdtran or
projinv /projfwd );
delete graphics objects prior to changing the projection and redraw
them afterwards. |
You can use handlem
to help identify which objects to
delete when manual deletion is necessary. See Work with Objects by Name for an example of its use.
Using the setm
function, you can change the
current map projection on the fly if the map display was created in a way that
permits reprojection. Note that map displays can contain objects that cannot be
reprojected, and may need to be explicitly deleted and redrawn. Automatic
reprojection will take place when you use setm
to modify the
MapProjection
property, or any other map axes property from
the following list:
AngleUnits
Aspect
FalseEasting
FalseNorthing
FLatLimit
FLonLimit
Geoid
MapLatLimit
MapLonLimit
MapParallels
Origin
ScaleFactor
TrimLat
TrimLon
Zone
Auto-reprojection takes place for objects created with any of the following Mapping Toolbox functions:
The above Mapping
Toolbox functions are analogous to standard MATLAB graphics functions having the same name, less the trailing
m
. You can use both types of functions to plot data on a map
axes, as long as you are aware that the standard MATLAB graphics functions do not apply map projection transformations, and
therefore require you to specify positions in map x-y
space.
In general, objects created with geoshow
or with a combination of calls to mfwdtran
followed by ordinary MATLAB graphics functions, such as line
,
patch
, or surface
, are
not automatically reprojected. You should delete such
objects whenever you change one or more of the map axes properties listed above, and
then redisplay them.
If you have preprojected vector or raster map data or read such data from files,
you can display it with mapshow
, mapview
, or standard MATLAB graphics functions, such as plot
or mesh
. If its projection is known
and is included in the Mapping
Toolbox projection libraries, you can use its parameters to project geodata in
geographic coordinates to display it in the same axes.
If you want to be able to change the projection of a map on the fly, you should
not use geoshow
. Some display functions, such as
patchm
, fillm
,
displaym
, and linem
, enable you to
reproject vector map data, but geoshow
does not. That is, when
you change a map axes projection, with setm
for example, vector
map symbology that was created with geoshow
will not be
transformed. Gridded data rendered with geoshow
(when
DisplayType
is surface
,
texturemap
, or contour
), however, can be
reprojected.
For examples of reprojection behavior with vector data and raster data, see Change Map Projections Using geoshow.