MATLAB Examples

ibcso documentation

The ibcso function plots International Bathymetric Chart of the Southern Ocean (IBCSO) digital bathymetric model dat using using Antarctic Mapping Tools. IBCSO data are described in full on the IBCSO website and the GRL paper describing the IBSCO dataset is here.


Description of files in the IBCSO Toolbox:

  • ibcso_install simply downloads and unzips IBCSO data.
  • ibcso_data returns native-resolution gridded IBCSO DEM bathymetry or gridded distance-to-nearest-measurement.
  • ibcso_interp interpolates to any arbitrary point(s) given by lat,lon or x,y.
  • ibcso plots the official IBCSO RGB image, the IBCSO DEM as a color-scaled pcolor or contour plot, or distance-to-nearest measurement.


[h,Z,lat,lon] = ibcso(...)
[h,C] = ibcso(...)


ibcso plots the official RGB image of the IBCSO DEM.

ibcso(PlotType) specifies which type of data are plotted. Options are

  • 'image' plots the official IBCSO RGB image (default if you have Mapping Toolbox).
  • 'dem' scales elevation colors with the current colormap (default if you do not have Mapping Toolbox).
  • 'dist' plots distance to nearest data.
  • 'contour' makes a contour plot, allowing any Matlab contour name-value options.
  • 'contourf' makes a filled contour plot, allowing any Matlab contour name-value options.

ibcso(...,'xy') specifies polar stereographic (71) x,y coordinates in meters. If you do not have Matlab's Mapping Toolbox, the 'xy' option is selected automatically.

ibcso(...,'xy','km') plots in polar stereographic (71) kilometers.

ibcso(...,'wgs84') plots DEM data referenced to the WGS84 ellipsoid rather than referencing to mean sea surface. (Requires Bedmap2 Toolbox)

ibcso(...,'res',resolution) specifies a plotting resolution in meters. By default, resolution is set automatically based on the spatial extents of the current map. Native resolution is 500.

ibcso('contour','ocean') limits contours to open ocean only, i.e., not under grounded ice or ice shelves. This can be helpful if you are plotting continental shelf break contours when you do not want contours over the ice sheet. (Requires Bedmap2 Toolbox)

[h,Z,lat,lon] = ibcso(...) returns a graphics handle h, IBCSO DEM Z, and geo coordinates lat and lon corresponding to each pixel in Z.

[h,C] = ibcso(...) returns a contour matrix C for 'contour' or 'contourf' plots.


This function requires

  • Matlab's Image Processing Toolbox is required for distance-to-data calculations and is also required for image or DEM resizing. If you do not have the Image Processing toolbox, choose 'resolution','native'.
  • A license for Matlab's Mapping Toolbox is required for the 'image' option, but not for the 'dem' or 'contour' options.


To use the ibcso function, simply run ibcso_install.

Example 1: Whole continent

To plot a whole continent's worth of IBCSO data, just type ibcso. Note it might take a few seconds because it will load and plot the entire continent of data:


Example 2: Image of a region

To plot a specific region, initialize a map first. For speed, the ibcso function will only load IBCSO data corresponding to the extents of a current map. Call mapzoom to zoom to a location of interest. We'll also select the option to place an inset map in the lower left-hand ("southwest") corner and a scalebar in the lower right:

mapzoom('pitman fracture zone','inset','sw')

If you enlarge your figure window, you'll see that the bathymetry seems smeared or smudged across some patches. It's like no measurements have been performed there. Let's take a look at how far away from data we really are in this next example.


Example 3: Distance to data

The smudged appearance of some patches in the figure above raises questions about accuracy of the IBCSO DEM. This by no means indicates any flaw on the part of the good folks who put together the IBCSO DEM--rather, it's just a reality that we don't have measurements everywhere we want them. How far away are we from measurements? Use the ibcso function with the 'dist' option to find out. The colormap is from cmocean (Thyng et al., 2016):

mapzoom('pitman fracture zone')
cb = colorbar('southoutside');
xlabel(cb,'distance from naerest bathymetry measurement (km)')
caxis([0 50])
cmocean matter

Example 4: DEM of a region

To plot a specific region, initialize a map first because ibcso only loads enough data to fill the current map. This is particularly helpful when plotting a DEM, because DEMs are more computationally expensive than images. Also apply a topographic shaded relief effect and turn the gain way down by 21 notches with shadem:

mapzoom('drygalski ice tongue',800,'inset','nw')
cb = colorbar('east');
ylabel(cb,'elevation (m)')
shadem(-21) % Applies light hillshading.

Example 5: Mimic Arndt et al.'s Figure 4

Here we format a DEM to match Arndt et al.'s Figure 4. Start by zooming to a region and plotting the DEM:


To get the GMT colormap we can use Kelly Kearney's cptcmap: We'll also apply topographic relief shading and turn the gain down by 21 notches with shadem:

shadem([225 50],-21)

Alternatively, if you prefer to use the official IBCSO colormap, you may do so by


Example 6: Distance to data again

Here's another example of plotting distance to data. For context, we'll outline ice shelves and grounded ice as patch objects using the Bedmap2 toolbox.

mapzoom('marie byrd seamount',1800)
bedmap2 patchshelves
bedmap2 patchgl
caxis([0 100])
cb = colorbar;
ylabel(cb,'distance to data (km)')

Example 6: Filled contours

The ibcso function can easily make contoured or filled contour plots. . To speed up plotting, zoom to your location of interest before asking the ibcso function to plot contours. A very simple filled contour plot can be obtained like this:

mapzoom 'amundsen sea'
ibcso 'contourf'

Example 7: Formatting contours

Any standard Matlab contouring Name-Value pairs can be used to format IBCSO contours. You can also label contours with Matlab's inbuild clabel function. Below we zoom a map centered on Ross Canyon and include an inset map in the upper right-hand ("northeast") corner without a frame around the inset map. Plot an IBCSO RGB image, then overlay black contours every 1000 m. Note the use of the 'ocean' option, which prevents bathymetric contours from being laid over the ice sheet.

mapzoom('ross canyon',1400,'inset','ne','frame','off')

Example 7: Plotting in polar stereographic coordinates

If you have Matlab's Mapping Toolbox, ibcso will plot in georeferenced coordinates by default. If you don't have the Mapping Toolbox, simple polar stereographic coordinates are chosen automatically. If you have the Mapping Toolbox, but want to plot in polar stereographic coordinates, simply include the 'xy' tag when you call ibcso:

xlabel 'eastings (meters)'
ylabel 'northings (meters)'

Example 8: Polar stereographic kilometers

You might be given a dataset plotted in polar stereographic kilometers instead of the standard meters. That makes sense, because when we use meters the axis labels go into scientific notation and that's not very intuitive. The ibcso function and a few other Antarctic Mapping Tools plugins can plot in polar stereographic kilometers if you include the 'km' tag.

Below, we plot a coastline for reference using the antbounds function, then set axis limits to some desired area, then call ibcso.

axis([1260 2330 1582 2426])

xlabel('eastings (km)')
ylabel('northings (km)')

Add some fancy topographic relief shading with shadem and put some red contour lines in there too:


Example 9: More polar stereographic plotting

For a final example of plotting in polar stereographic coordinates, we'll overlay colored contour lines on an RGB image. Although we're plotting on simple cartesian axes, this example does require Matlab's Mapping Toolbox. Lame, I know. Anyway, start by zooming axis limits to wherever you want your map to show. Then we'll tighten up the axes and remove the the frame with axis tight off. Plot contours and add a colorbar. The colormap is from cmocean (Thyng et al., 2016):

axis([-1998000 -170000 700000 2528000])

axis tight off

cb = colorbar('southoutside');
xlabel(cb,'bed elevation relative to the WGS84 ellipsoid (m)')
cmocean -amp

Discussion of image versus DEM plotting

The ibcso function offers users a choice of plotting an image or a DEM. Here is a summary of the differences:

  • 'image' is an RGB image of the official IBCSO map. An image plots quickly and uses up less memory than a DEM. You cannot alter the color or the topographic relief shading. Images do not use or alter the current colormap. The 'image' option requires Matlab's Mapping Toolbox.
  • 'dem' uses the current colormap to scale color by elevation. After plotting a DEM you may wish to apply custom topgraphic relief shading using the shadem function. The 'dem' option plots raw gridded data and you can format the data display to your liking.

Citing IBCSO data

If these functions are useful for you, please cite the following:

Arndt, J. E., et al. (2013), The International Bathymetric Chart of the Southern Ocean (IBCSO) Version 1.0-A new bathymetric compilation covering circum-Antarctic waters, Geophys. Res. Lett., 40, 3111-3117, doi:10.1002/grl.50413.

Greene, C. A., Gwyther, D. E., & Blankenship, D. D. Antarctic Mapping Tools for Matlab. Computers & Geosciences. 104 (2017) pp.151-157. doi:10.1016/j.cageo.2016.08.003.

Author Info

This function was written by Chad A. Greene of the Institute for Geophysics at the University of Texas in Austin July 2015. This is version 2, published September 2015.