I want to select contour lines that have lower elevation values from neighboring contour lines. I'm using ArcGIS but do not have the hydrology tool set. I can use open source if needed. I thought about cutting the contour lines out of a road buffer, and selecting from the cut contour layer using sql query by tping something to the effect of: elevation value (n) is less than elevation value (n plus or minus one.) I however, don't think this type of query can be done, and I don't know how to make the contour lines part of a network to perform spatial sequential analysis. If I did I would create the network using the roads layer. I hope that makes sense.
To find depressions and peaks on a surface, assuming you have the DEM that created the contours:
The first step is to fill (see Are there any open source tools to detect and fill sinks on a DEM?) the DEM.
Subtract the original DEM from the filled DEM.
Any positive values indicate a filled area, convert to a binary raster, in ArcGIS you would use Con but this can also be done in QGIS (see What is the equivalent of arcpy "Con" in QGIS and/or R raster-package?)
Then convert raster to polygon (see How to make polygon from cells of a raster?)
To find peaks turn the raster over with QGIS raster calculator by subtracting the DEM from an arbitrary value higher than or equal to the maximum cell value (to keep values positive).
Repeat process to find depressions as your peaks are now depressions.