Display map latitude and longitude data


geoshow(lat,lon) projects and displays the latitude and longitude vectors lat and lon using the projection stored in the current axes. If there is no projection, lat and lon are projected using a default Plate Carrée projection.

By default, geoshow displays lat and lon as lines. You can optionally display the vector data as points, multipoints, or polygons by using the DisplayType name-value pair argument.


geoshow(S) displays the vector geographic features stored in S as points, multipoints, lines, or polygons according to the 'Geometry' field of S.

  • If S is a geopoint vector, a geoshape vector, or a geostruct (with 'Lat' and 'Lon' coordinate fields), then geoshow projects vertices to map coordinates.

  • If S is a mappoint vector, a mapshape vector, or a mapstruct (with 'X' and 'Y' fields), then geoshow plots vertices as (pre-projected) map coordinates and issues a warning.

You can optionally specify symbolization rules using the SymbolSpec name-value pair argument.


geoshow(lat,lon,Z) projects and displays the geolocated data grid, Z. In this syntax, lat and lon are M-by-N latitude-longitude arrays. Z is an M-by-N array of class double. You can optionally display the data as a surface, mesh, texture map, or contour by using the DisplayType name-value pair argument.


geoshow(Z,R) projects and displays a regular data grid, Z, with referencing object R. You can optionally display the data as a surface, mesh, texture map, or contour by using the DisplayType name-value pair argument. If DisplayType is 'texturemap', then geoshow constructs a surface with ZData values set to 0.

geoshow(lat,lon,I) and

geoshow(lat,lon,X,cmap) projects and displays a geolocated image as a texture map on a zero-elevation surface. The geolocated image I can be a truecolor, grayscale, or binary image. X is an indexed image with colormap cmap. Examples of geolocated images include a color composite from a satellite swath or an image originally referenced to a different coordinate system.

geoshow(I,R) and

geoshow(X,cmap,R) project and display an image georeferenced to latitude-longitude through the referencing object R. The image is shown as a texture map on a zero-elevation surface.


geoshow(filename) projects and displays data from the file specified according to the type of file format.


geoshow(___,Name,Value) specifies parameters and corresponding values that modify the type of display or set MATLAB® graphics properties. You can use name,value pairs to set:

  • Name,Value arguments

  • Any MATLAB Graphics line, patch, and surface properties

  • Any Mapping Toolbox™ contour properties

Parameter names can be abbreviated, and case does not matter.

geoshow(ax,___) sets the parent axes to ax.

h = geoshow(___) returns a handle to a MATLAB graphics object.


collapse all

Display map of the world using default Plate Carree projection.

geoshow('landareas.shp', 'FaceColor', [0.5 1.0 0.5]);

Set up an empty map axes with projection and limits suitable for displaying all 50 states.


Read USA high resolution data.

states = shaperead('usastatehi', 'UseGeoCoords', true);

Create a symbolspec that sets the color of Alaska and Hawaii polygons red.

symspec = makesymbolspec('Polygon', ...
   {'Name', 'Alaska', 'FaceColor', 'red'}, ...
   {'Name', 'Hawaii', 'FaceColor', 'red'});

Display all the other states, setting the default FaceColor property to blue and the default EdgeColor property to black.

geoshow(states, 'SymbolSpec', symspec, ...
   'DefaultFaceColor', 'blue', ...
   'DefaultEdgeColor', 'black');

Display a map, using the geoshow function with the 'DisplayType' parameter set to 'TextureMap' .

Load MAT file containing map information about Korean peninsula.

load korea

Set up an empty map axes with projection and limits for the Korean peninsula.

worldmap(map, refvec)

Display the Korean data grid as a texture map.


Display the land area boundary as a black line.

S = shaperead('landareas','UseGeoCoords',true);
geoshow([S.Lat], [S.Lon],'Color','black');

Display a map, interpreting NaNs as transparent. This example uses the geoshow function with the 'DisplayType' parameter set to 'surface' .

Load map of Korean peninsula.

korea = load('korea');
Z =;

Insert an band of null values using NaNs.

Z(80:100,:) = NaN;

Create a raster reference object.

R = georasterref('RasterSize',size(Z),...
    'Latlim',[30 45], 'Lonlim', [115 135]);

Display world map with NaN values displayed as transparent. Note that the settings for ZData and CData ensure that the resulting surface falls in the z == 0 plane, instead of being 3-dimensional.


Load geoid and display.

load geoid

Create a figure with an Eckert projection.

axesm eckert4; 
framem; gridm;
axis off

Display the geoid as a texture map.

geoshow(geoid, geoidrefvec, 'DisplayType', 'texturemap');

Create a colorbar and title.

hcb = colorbar('southoutside');
set(get(hcb,'Xlabel'),'String','EGM96 Geoid Heights in Meters.')

Mask out all the land.

geoshow('landareas.shp', 'FaceColor', 'black');

Create the figure with an Eckert projection.

axesm eckert4
axis off

Load the geoid, and display it as a surface.

load geoid
h = geoshow(geoid, geoidrefvec, 'DisplayType','surface');

Add light and material.

material(0.6*[ 1 1 1])

View the map as a 3-D surface.

axis normal

Load the moon albedo image.

load moonalb

Project and display the moon albedo image using a default Plate Carree projection.


Project and display the moon albedo image as a texture map in an orthographic projection.

axesm ortho 
axis off

Unzip a USGS 24K digital elevation model (DEM) file into a temporary file. The toolbox includes a San Francisco South 24K DEM file.

filenames = gunzip('sanfranciscos.dem.gz',tempdir); 
demFilename = filenames{1}; 

Read every other point of the 1:24,000 DEM file.

[lat,lon,Z,header,profile] = usgs24kdem(demFilename,2);

Delete the temporary file.


Because no negative elevations exist, move all points at sea level to -1 to color them blue.

Z(Z==0) = -1;

Compute the latitude and longitude limits for the DEM.

latlim = [min(lat(:)) max(lat(:))] 
latlim = 1×2

   37.6249   37.7504

lonlim = [min(lon(:)) max(lon(:))]
lonlim = 1×2

 -122.5008 -122.3740

Display the DEM values as a texture map.

usamap(latlim, lonlim)
geoshow(lat, lon, Z, 'DisplayType','texturemap')

Overlay black contour lines onto the texture map.

geoshow(lat,lon,Z,'DisplayType','contour', ...

View the DEM values in 3-D.

usamap(latlim, lonlim)

Input Arguments

collapse all

Latitude or longitude data, specified as a numeric vector or an M-by-N numeric matrix.

  • lat and lon are vectors when used with the syntax geoshow(lat,lon).

  • lat and lon are 2-D arrays when used with the geoshow(lat,lon,Z) syntax, the geoshow(lat,lon,I) syntax, or the geoshow(lat,lon,X,cmap) syntax. If lat and lon are matrices, they represent coordinate arrays or a geolocation array in geographic coordinates, and must be the same size as Z, I, or X. If I is an RGB image, lat and lon must be matrices that match the first two dimensions of the image.

lat and lon may contain embedded NaNs to delimit individual lines or polygon parts.

Geographic features, specified as a geographic data structure or dynamic vector.

Data grid, specified as an M-by-N numeric array that may contain NaN values. Z is either a georeferenced data grid, or a regular data grid associated with a geographic reference R.

Geographic reference, specified as one of the following. For more information about referencing vectors and matrices, see Georeferenced Raster Data.

Geographic raster reference object

GeographicCellsReference or GeographicPostingsReference geographic raster reference object that relates the subscripts of Z to geographic coordinates. The RasterSize property must be consistent with the size of the data grid, size(Z).

If R is a GeographicPostingsReference object, then the 'image' and 'texturemap' values of DisplayType are not accepted.


1-by-3 numeric vector with elements:

[cells/degree northern_latitude_limit western_longitude_limit]

3-by-2 numeric matrix that transforms raster row and column indices to or from geographic coordinates according to:

[lon lat] = [row col 1] * R

R defines a (non-rotational, non-skewed) relationship in which each column of the data grid falls along a meridian and each row falls along a parallel. Nearest-neighbor interpolation is used by default. NaN is returned for points outside the grid limits or for which lat or lon contain NaN. All angles are in units of degrees.

Truecolor, grayscale, or binary image, specified as an M-by-N-by-3 array for truecolor images, or an M-by-N array for grayscale or binary images. lat and lon must be M-by-N arrays. If specified, 'DisplayType' must be set to 'image'.

Indexed image with color map defined by cmap, specified as an M-by-N array. lat and lon must be M-by-N arrays. If specified, 'DisplayType' must be set to 'image'.

Color map of indexed image X, specified as an c-by-3 numeric matrix. There are c colors in the color map, each represented by a red, green, and blue pixel value.

File name, specified as a string scalar or character vector. geoshow automatically sets the DisplayType parameter according to the format of the data.

Shape file'point', 'multipoint', 'line', or 'polygon'
TIFF/JPEG/PNG with a world file 'image'
ARC ASCII GRID'surface' (can be overridden)
SDTS raster'surface' (can be overridden)

Data Types: char | string

Parent axes, specified as an axes object.

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: 'DisplayType','point'

Symbolization rules to be used for displaying vector data, specified as the comma-separated pair consisting of 'SymbolSpec' and a structure returned by makesymbolspec. It is used only for vector data stored in geographic data structures. In cases where both SymbolSpec and one or more graphics properties are specified, the graphics properties override any settings in the symbolspec structure.

To change the default symbolization rule for a Name,Value pair in the SymbolSpec structure, prefix the word 'Default' to the graphics property name.

Type of graphic display for the data, specified as the comma-separated pair consisting of 'DisplayType' and one of the following values.

Data TypeDisplay TypeType of Property
Vector'point'line marker
'multipoint'line marker

Valid values of DisplayType depend on the format of the map data. For example, if the map data is a geolocated image or georeferenced image, then the only valid value of DisplayType is 'image'. Different display types support different geographic data class types:

Display TypeSupported Class Types
Imagelogical, uint8, uint16, and double
Surfacesingle and double
Texture mapAll numeric types and logical

Output Arguments

collapse all

Parent axes, returned as a handle to a MATLAB graphics object or, in the case of polygons, a modified patch object. If a geostruct or shapefile name is input, geoshow returns the handle to an hggroup object with one child per feature in the geostruct or shapefile, excluding any features that are completely trimmed away. In the case of a polygon geostruct or shapefile, each child is a modified patch object; otherwise it is a line object.


  • When calling shaperead to read files that contain coordinates in latitude and longitude, be sure to specify the shaperead argument pair 'UseGeoCoords',true. If you do not include this argument, shaperead will create a mapstruct, with coordinate fields labelled X and Y instead of Lon and Lat. In such cases, geoshow assumes that the geostruct is in fact a mapstruct containing projected coordinates, warns, and calls mapshow to display the geostruct data without projecting it.

  • If you do not want geoshow to draw on top of an existing map, create a new figure or subplot before calling it.

  • When you display vector data in a map axes using geoshow, you should not subsequently change the map projection using setm. You can, however, change the projection with setm for raster data. For more information, see Change Map Projections Using geoshow.

  • If you display a polygon, do not set 'EdgeColor' to either 'flat' or 'interp'. This combination may result in a warning.

  • When projecting data onto a map axes, geoshow uses the projection stored with the map axes. When displaying on a regular axes, it constructs a default Plate Carrée projection with a scale factor of 180/pi, enabling direct readout of coordinates in degrees.

  • geoshow can generally be substituted for displaym. However, there are limitations where display of specific objects is concerned. See the remarks under updategeostruct for further information.

  • When you display raster data in a map using geoshow, columns near the eastern or western edge may fail to display. This is seldom noticeable, except when the raster is very coarse relative to the displayed area. To include additional columns in the display, it might help to:

    • Resize the grid to a finer mesh.

    • Make sure the cell boundaries and map limits align.

    • Expand the map limits.

Introduced before R2006a