Ask A Cartographer


December 27 2010 | 2 comments
Categories: ArcGIS Methods, Map Data

I am working on a project in Belize and the best DEM data I could find was 90m SRTM data. The data is in meters which is what I expected but there are erroneous elevations. I want to keep all elevation data lower 1,133m and make all erroneous data above 1,133m into NoData.

I have tried smoothing but smoothing does not work well with small clumps of 65,000m areas. Basically, to get the erroneous elevation figures down to manageable level using smoothing, the DEM will be worthless. I have tried hawth's tool but it did not want to cooperate with 9.3.1. Please help so I can stop beating my head against a brick wall.

Mapping Center Answer:

You need to use the Set Null tool in Spatial Analyst extension. The expression to use will be "Value >= 1133".  In the output raster, all cells that meet the criteria in your expression will be set to NoData -- all other cells will retai thier original input vlaues.

nodata and negative elevations are different posted by Thomas Ballatore on Jan 8 2011 5:53AM
Actually, those "erroneous" values are not erroneous at all and you'll need to be careful with the setnull command as that takes care of only one issue (nodata voids) but not another (negative elevations).

The SRTM files contain values from 0 to 65535. In a given SRTM tile, most of the values will be "typical" elevation values like the 1,133m and below you mention. However, areas where there is no data (voids) are assigned a value of 32768. The setnull command mentioned above would indeed set those values to "nodata".

HOWEVER, the SRTM data also correctly contains areas below sea level. These are reported as decreasing values from 65536. For example, an elevation of -2m would have a value of 65534, and elevation of -10 would be 65526 and so on.

For every country I have worked with that has a coastline, there will be a number of these along the coastline. Whether they are truly below sea level or if that is just an inaccuracy of the SRTM data would require further investigation.

Anyway, if you set all values greater than 1133 to nodata, then you will incorrectly set these negative values also to nodata. To avoid that, I use the following two steps in Raster Calculator to correctly prepare the SRTM data:

Step 1. Execute the following:

setnull([N30E119.bil] == 32768,[N30E119.bil])

where N30E119.bil is an SRTM file I was recently working with...change this to your tile's name. This will set the voids to nodata.

Step 2. Then execute this:

con([N30E119.bil] > 32768,[N30E119.bil] - 65536,[N30E119.bil])

This will correctly convert the negative values to negative values. Remember that spaces are important in raster calculator!

Now, how to handle the nodata areas is a different issue...If you're up to it, you could find an auxiliary DEM, or try an interpolation (I find spline works well with many of the SRTM voids) or you could just go to

and download their void-filled DEM. You'll still need to do Step 2 with there data (I'm pretty sure).

By the way, NASA could have released files that contained these negative numbers as well as text indicating nodata cells but the file size would have been much larger. It's pretty amazing that you can get 1 square degree of elevation data for around 2MB, or less when zipped!
A couple of questions - and a suggestion posted by Aileen Buckley on May 16 2011 12:40PM
Thanks for the info, Thomas. I can see what you are up to here, but I do not see how the output from the first step feeds into the second step -- in both steps you seems to be using the same input (i.e., the same .bil file).

Also, did you know about our SRTM data on the Esri Data and Maps DVD? There is data called "SRTM void filled" that you can use without having to process anything to make it correct -- we have already done that for you.

If you would like to post a comment, please login.

Contact Us | Legal | Privacy |