Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I've found a histogram of the elevation of the Earth's surface on Wikipedia:

Elevation histogram

However this doesn't give any information about the distribution of grade. For example, the entire surface could be made entirely of little hills and have a high grade everywhere, or the surface could be composed entirely of perfect plateaus, putting the average grade at 0°. Obviously both these scenarios are untrue, but it illustrates how this information cannot be determined from the elevation histogram alone. Does anyone know where I can find a similar histogram for grade?

share|improve this question
Unlike the elevation histogram, the grade (slope) depends on the resolution at which the slope is computed. What resolution do you need? Do you also need slopes of the ocean floor? – whuber Sep 16 '11 at 19:22
That's a very good point. Ideally, I would like a resolution of a second or so, with a histogram not including the ocean floor (but a separate one for the ocean floor would be good as well.) At the moment, however, I'll take anything I can get to lead me in the right direction. – dlras2 Sep 16 '11 at 20:46

If you can get hold of the data set there are tools in R to do this. I have Etopo1 as a GeoTIFF, I think it is the ice/cell one from here though I may have converted it myself from the binary format.

Read the data (possibly with reduced resolution), compute the slope and plot.


## orig dims, reduced 4-fold (choose divisor to suit your needs / system)
x <- readGDAL("Etopo1.tif", output.dim = c(10800, 21600)/4)

## convert to raster format for calculations
r <- raster(x)

g <- slopeAspect(r, out = "slope", unit = "degrees")

## plot histogram

R raster plot

I use readGDAL since I'm more familiar with it, but you can stick with raster as a wrapper around the rgdal stuff to handle reducing resolution and so on, and not require in memory use.

class       : RasterLayer 
dimensions  : 2700, 5400, 14580000  (nrow, ncol, ncell)
resolution  : 0.06666667, 0.06666667  (x, y)
extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0 
values      : in memory
min value   : 0 
max value   : 38.11677 

See ?hist for more plotting options.

share|improve this answer
Generating my own from the referenced data looks like the best way to go. Having never worked with any GIS before — GeoTIFF, Etopo1, or R (which Googling has proved pleasantly trivial) — it will take me a while to figure out, but you've set me on the right track, I think. – dlras2 Sep 27 '11 at 7:27
Unfortunately, this approach gets the wrong slopes, because it does not project the data. Another complication is that to obtain worldwide slopes at a reasonable resolution is an enormous effort. Slopes computed across more than a few hundred meters will tend to be smoothed downwards. (The illustrated grid has 7 kilometer resolution!) Covering the earth's land surface with 100m grids requires thousands of grids (each of which needs its own projection for reasonable accuracy) comprising roughly 36 billion cells. Just collecting these DEMs is a lot of work... – whuber Sep 29 '11 at 18:56

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.