Поскольку никто пока не ответил, вот вам некий результат.
Сгенерировано в GlobalMapper функцией Find ridge lines (фактически, это границы водоразделов), по данным SRTM v3 с шагом 80 метров (взял чуть меньше ячейки SRTM) и условием минимального числа нисходящих ячеек сетки высот - 10. То есть отрабатываются и достаточно небольшие локальные максимумы.
Сеть получившихся линий наложена на сами высотные данные, которым присвоен стандартный радужный градиент без hill shading. Поверх - данные OpenMapSurfer, где отрендерены хребты и перевалы.
Если скачать картинку, ее можно затащить куда-нибудь с привязкой.
Вот prj-файл:
PROJCS["Mercator_1SP",GEOGCS["GCS_WGS_1984",DATUM["D_WGS84",SPHEROID["WGS84",6378137,298.257223560493]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator"],PARAMETER["central_meridian",0],PARAMETER["standard_parallel_1",0],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]
А вот world-файл:
20.092294772
0
0
-20.092294772
4706518.29076
5344260.82485
Могу выложить шейп с линиями в векторе для сравнения.
С SAGA поковырялся - вроде оно делает то, что нужно, но я пока не врубился как это правильно сохранить