## Documentation Center |

*Spatial data* refers to data describing
location, shape, and spatial relationships. *Geospatial
data* is spatial data that is in some way *georeferenced*,
or tied to specific locations on, under, or above the surface of a
planet.

Geospatial data can be voluminous, complex, and difficult to process. Mapping Toolbox™ functions handle many of the details of loading and displaying data, and built-in data structures facilitate data storage. Nevertheless, the more you understand about your data and the capabilities of the toolbox, the more interesting applications you can pursue, and the more useful your results will be to you and others.

Follow this example to create your first world map.

In the MATLAB

^{®}Command Window, typeworldmap world

This creates an empty map axes, ready to hold the data of your choice.

Function

`worldmap`automatically selects a reasonable choice for your map projection and coordinate limits. In this case, it chose a Robinson projection centered on the prime meridian and the equator (0º latitude, 0º longitude).If you type

`worldmap`without an argument, a list box appears from which you can select a country, continent, or region. The`worldmap`function then generates a map axes with appropriate projection and map limits.Import low-resolution world coastlines—a set of discrete vertices that, when connected in the order given, approximate the coastlines of continents, major islands, and inland seas. The vertex latitudes and longitudes are stored as MATLAB vectors in a MAT-file. First, list the variables in the file:

whos -file coast.mat

The output is shown below:

Name Size Bytes Class Attributes lat 9865x1 78920 double long 9865x1 78920 double

Load and plot the coastlines on the world map:

load coast plotm(lat, long)

The

`plotm`function is a geographic equivalent to the MATLAB`plot`function. It accepts coordinates in latitude and longitude, transforms them to*x*and*y*via a specified map projection, and displays them in a figure axes. In this example,`worldmap`specifies the projection.Notice how the world coastlines form distinct polygons, even though only a single vector of latitudes and a corresponding vector of longitudes are provided. The display breaks into separate parts like this because in the vectors

`lat`and`long`the vertices of various coastlines are concatenated together but separated by isolated NaN-valued elements. In other words, "NaN separators" implicitly divide each vector into multiple parts.`lat`and`long`include "NaN terminators" as well as separators, showing that the`coast`data set is organized into precisely 241 polygons.Enter the following code to break out your data into its NaN-separated parts:

[latcells, loncells] = polysplit(lat, long); numel(latcells)

`latcells`and`loncells`are cell vectors, with each cell containing the vertices of just one polygon part. The number of parts appears:ans = 241

Now create a new map axes for plotting data over Europe, and this time specify a return argument:

h = worldmap('Europe');

For the map of the world,

`worldmap`chose a pseudocylindrical Robinson projection. For Europe, it chose an Equidistant Conic projection. How can you tell which projection`worldmap`is using?When you specify a return argument for

`worldmap`and certain other mapping functions, a handle (e.g.,`h`) to the figure's axes is returned. The axes object on which map data is displayed is called a map axes. In addition to the graphics properties common to any MATLAB axes object, a map axes object contains additional properties covering map projection type, projection parameters, map limits, etc. The`getm`and`setm`functions and others allow you to access and modify these properties.To inspect the

`MapProjection`property for the map of Europe, type:getm(h, 'MapProjection')

The type of projection appears:

ans = eqdconic

If you're not familiar with the abbreviation "eqdconic," type:

help eqdconic

To see all the map-specific properties for this map axes, type:

getm(h)

Add data to the map of Europe by using the

`geoshow`function to import and display several shapefiles in the`toolbox/map/mapdata`folder:geoshow('landareas.shp', 'FaceColor', [0.15 0.5 0.15]) geoshow('worldlakes.shp', 'FaceColor', 'cyan') geoshow('worldrivers.shp', 'Color', 'blue') geoshow('worldcities.shp', 'Marker', '.',... 'Color', 'red')

Note how

`geoshow`can plot data directly from files onto a map axes without first importing it into the MATLAB workspace.Finally, place a label on the map to identify the Mediterranean Sea.

labelLat = 35; labelLon = 14; textm(labelLat, labelLon, 'Mediterranean Sea')

To learn more about display properties for map axes and how to control them, see Accessing and Manipulating Map Axes Properties.

Was this topic helpful?