Все зависит от того, где вы проводите линию. Несмотря на это, эта проблема выглядит так, как будто ее легко решить, используя морфологические функции, доступные в Spatial Analyst, особенно пороговое значение (выполняется с помощью локальных операций «<» и «>») и «RegionGroup» для идентификации и извлечения компонентов.
Хотя у меня нет доступа к ЦМР для иллюстрации, первое изображение почти достаточно для выполнения работы. Например, вот последовательность версий красной полосы по регионам (со значениями, масштабированными от 0,0 = черный до 1,0 = белый), начиная с порога 0 и двигаясь слева направо, сверху вниз, с шагом 0,02:
(Эти изображения были сокращены для воспроизведения здесь: весь анализ проводился с разрешением исходного изображения.)
Дайки появляются вокруг границы черной области к началу второго ряда (порог = 0,08). В начале третьей строки (порог = 0,16) дайки образуют свои собственные компоненты (синим цветом), и в этот момент их можно легко извлечь в виде отдельных сеток или многоугольников (а их границы можно извлечь в виде полилиний после этапа обнаружения ребер) ). К последнему ряду остаются только самые широкие дайки (порог = 0,24 и выше). Вам нужно будет выбрать соответствующий порог , чтобы получить именно то, что вы хотите.
В оригинальной ЦМР повышение уровня играет роль интенсивности, поэтому эти процедуры должны быть одинаково эффективны с самой ЦМР. Если матрица высот имеет большую протяженность (включая объекты, удаленные от реки или дамб), соответствующие объекты можно выбрать в качестве объектов, смежных с компонентом, в котором находится объект реки.
Тонкие нежелательные области, обнаруженные RegionGroup, могут быть устранены путем применения небольшой эрозии (отрицательный буфер) с последующей эквивалентной дилатацией (положительный буфер). Небольшие нежелательные области могут быть исключены по критерию размера (общее количество клеток или площадь). Самые высокие точки на каждой дамбе (если это то, что действительно нужно) можно найти, сравнив матрицу высот с зональными максимальными сетками (используя дамбы в качестве зон).
Кстати, эта последовательность изображений была создана в Mathematica 8. Вот команды для тех, кто, возможно, пожелает воспользоваться этой опцией.
original = Import["http://i.stack.imgur.com/gV7Du.jpg"];
{r, g, b} = ColorSeparate[original];
frames = ParallelTable[Colorize[MorphologicalComponents[Binarize[r, t/100]],
ColorFunction -> "ThermometerColors"], {t, 0, 30, 2}];
Rasterize @ TableForm[Partition[frames, 4]]
Общее время на часах (после импорта изображения) составило 0,94 секунды, из которых половина была необходима для сжатия и экспорта всех 16 изображений: морфологические операции обычно бывают быстрыми (что хорошо, потому что LIDAR DEMs могут быть огромными).