Point Classification (Ridges and valleys)

Now also includes:

  The top parameters apply only to the Wood (1996) algorithm.  Because it uses 4 parameters, this can take some adjustments to get the tuning right for the DEM and geomorphic characteristics.

Mask radius applies the Simple and Simple 2 algorithms.  For each point classified as a ridge, a radius of this size will be masked.

Algorithm:  Wood   Simple   Simple 2

Ridge valley tolerance: for the Simple 2 algorithm, how many neighbors must be higher/lower.  Smaller values lead to more classified points.

Draw shows the ridges and other point classifications, and optionally shows counts

Ridge map: creates grid using the current algorithm, with the elevations of the points classified as ridges and peaks.

Valley map: creates grid using the current algorithm, with the elevations of the points classified as pits and valleys.

Ridge mask creates mask with the ridge and peak points.  This can be used with map masking.

Valley mask creates mask with the pit and valley points. 

All points map: creates  grid using the current algorithm, with each category with a different number.

High/Low neighbors

Close: exit form.  Do not hit this early.

 

Draw Ridge/valley Map

Wood (1996) algorithm Simple algorithm Simple 2 algorithm  (tolerance 5)

 

Draw Simple 2 Ridge/valley Map

Simple 2 algorithm (tolerance 7) Simple 2 algorithm  (tolerance 6) Simple 2 algorithm (tolerance 5, same as above)

 

Ridge Mask

Wood (1996) algorithm Simple algorithm Simple 2 algorithm

Simple:

 if (z < znw) and (z < zn) and (z < zne) and  (z < zsw) and (z < zs) and (z < zse) and (z < zw) and (z < ze) then Result := PitPoint
else if (z = znw) and (z = zn) and (z = zne) and (z = zsw) and (z = zs) and (z = zse) and (z = zw) and (z = ze) then Result := FlatPoint
else if (z > znw) and (z > zn) and (z > zne) and (z > zsw) and (z > zs) and (z > zse) and (z > zw) and (z > ze) then Result := PeakPoint
else if ((zn > znw) and (zn > zne)) and ((z > zw) and (z > ze)) and ((zs > zsw) and (zs > zse)) then Result := RidgePoint {NS trend}
else if ((zw > znw) and (zw > zsw)) and ((z > zn) and (z > zs)) and ((ze > zne) and (ze > zse)) then Result := RidgePoint {WE trend}
else if ((zn < znw) and (zn < zne)) and ((z < zw) and (z < ze)) and ((zs < zsw) and (zs < zse)) then Result := ValleyPoint {NS trend}
else if ((zw < znw) and (zw < zsw)) and ((z < zn) and (z < zs)) and ((ze < zne) and (ze < zse)) then Result := ValleyPoint {WE trend}
else Result := OtherPoint;
 

Simple 2:

Of 8 neighbors, count those higher and lower

 if Higher = 8 then Result := PitPoint
else if Lower = 8 then Result := PeakPoint
else if (Higher = 0) and (Lower = 0) then Result := FlatPoint
else if (Higher >= RidgeValleyTolerance) then Result := ValleyPoint
else if (Lower >= RidgeValleyTolerance) then Result := RidgePoint
else Result := OtherPoint;


Compare to:


Last revision 3/2/2023