Is there is a tool or process that can identify and/or eliminate obvious peaks and valleys in a DEM?

I have looked into smoothing at What raster smoothing/generalization tools are available? but I am interested in keeping the original sharpness of the DEM.

The DEM is created using the topo to raster from a point cloud, so I seek suggestions on ways to identify the peaks and valleys from the pre-DEM point cloud.

I've looked at How to calculate peaks in a DEM too, but I am interested to see other ideas, and ideas from an arcgis point of view.

  • 1
    Could you give a more precise description of what constitutes an "obvious" peak or valley and what you really mean by "eliminating" one while keeping the "original sharpness"? These seem like somewhat contradictory aims. – whuber Jan 23 '14 at 19:59
  • Most people would use the term "outliers" or some spatial variation of that, such as "local outliers", to characterize those things. In some sense these are just the opposite of the most obvious peaks and valleys: namely, the actual geographic ones! How you identify and eliminate your outliers depends on their nature. For instance, if they result from independent random errors in the elevations they can be removed using one set of methods, but if they occur in clusters or are otherwise spatially correlated, you need different methods. – whuber Jan 23 '14 at 20:48
  • By obvious peaks and valleys I mean those that are caused by errant point elevations, causing the peaks and troughs. You can find these points manually (in ArcScene), but I need a programmatic or procedural way to do this. In further thinking on this topic there is probably a way to identify errant points that fall outside of a certain threshold of average surrounding elevations, and simply deleting or replacing the errant point with the average of the surrounding points. By original sharpness I mean that I don't want to use any raster blurring or generalizations. – giski Jan 23 '14 at 20:52

there is the fill sink tool that fills small valleys without affecting the rest of the data. For the peaks, you can use is as well on the "negative" of your DEM (multiply by -1, fill sink, multiply by -1).

You can also use the flow accumulation to identify the valleys, then you take a buffer around the valley points, and you replace those values with the smoothed DEM.

1)compute flow direction
2)compute flow accumulation
3)Smooth your DEM (e.g. low pass filter)
4)expand the values of the thresholded raster
5)replace your original DEM values with the smoothed DEM value when the flow accumulation is above a given threshold  (map algebra)
  • I did look at using the hydrology SA tools, but they don't seem like the right way to go for me as this creates flat areas where the valleys are. Also I don't want to use smoothing or other generalizations so as to reduce the sharpness (and accuracy) of the final DEM – giski Jan 23 '14 at 20:55
  • 1
    I meant to apply smoothing only for the valleys, not for the rest of the DEM. You need to give at least one value to your "obvious valleys", so I don't see what's left if you don't want flats nor smoothed, nor original values. Could you illustrate what you have and what you would like to have on a transect ? – radouxju Jan 23 '14 at 21:00

To follow on @whuber, it would help to have a little more clarification on what's being eliminated.

Cleaning up prior to rasterization could be much more efficient. Not sure the best way with the raw point clouds, but creating a TIN might be at least lighter weight solution than a raster. One could check for slopes exceeding a threshold, deal with the associated points, and then rasterizing using the cleaned up point set.

As a pre-process to cleaning up after rasterizing, one could use @radouxju's suggestion to create masks of ridges which one could then assess for what you're really after. The basin function (doc) might also be helpful. Probably want to use something like Curvature (doc) or threshold against the slope of a slope surface (i.e., the 2nd order derivative of the surface) to find peaks that are internal to basins. With basins and to some extent with sinks, you can use focalvariety to find where zones abut, extract line-style boundaries to further limit the spatial extent of your subsequent analysis if that makes sense. I'm guessing that you're not really looking to find real geomorphic features (as @whuber suggests), so this may not be so helpful.

I would look at using focal statistics to try to identify problem cells or groups of cells (using a neighborhood). It's pretty versatile

There's a lot of stuff out there in the remote sensing regarding pass filters (like high and low frequency ones), but this doesn't really sound like what you're after.

Again, kind of guessing at what the OP is after.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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