Global topographic dataset at half-degree resolution, downloaded from a NOAA server on May 18, 2019. Longitude, accessible as topoWorld[["longitude"]], ranges from -179.75 to 129.75 degrees north. Latitude (topoWorld[["latitude"]]) ranges from -89.75 to 89.75 degrees east. Height (topoWorld[["z"]]) is measured in metres above nominal sea level.

The coarse resolution can be a problem in plotting depth contours along with coastlines in regions of steep topography. For example, near the southeast corner of Newfoundland, a 200m contour will overlap a coastline drawn with ocedata::coastlineWorldFine. The solution in such cases is to download a higher-resolution topography file, perhaps using download.topo(), and then use read.topo() to create another topo object. (With other data sources, as.topo() may be helpful.)



This is created with read.topo(), using a file downloaded with

topoFile <- download.topo(west=-180, east=180, south=-90, north=90,
                         resolution=30, destdir=".")

Historical note

From late 2009 until May 18, 2019, the topoWorld dataset was created with a fairly complicated code that read a binary file downloaded from NOAA (, decoded, decimated from 1/12th degree resolution to 1/2 degree resolution, and passed through matrixShiftLongitude() to put longitude between -180 and 180 degrees. The new scheme for creating the dataset, (see “Source”) is much simpler, and also a much better model of how users are likely to deal with topography files in the more modern netCDF format. Note that the new version differs from the old one in longitude and latitude being shifted by 1/4 degree, and by a mean elevation difference of under 10m. The old and new versions appear identical when plotted at the global scale that is the recommended for such a coarse topographic file.

See also


if (FALSE) { library(oce) data(topoWorld) par(mfrow=c(2, 1)) plot(topoWorld, location=NULL) imagep(topoWorld) }