Повышение качества моделей рельефа местности,

создаваемых по цифровым топографическим картам.

 

      О качестве моделей рельефа.

      Бурное развитие геоинформатики порождает немало приложений, в которых используется та или иная модель рельефа земной поверхности. Некоторые из приложений, например, компьютерная игровая индустрия и др., не предъявляют высоких требований к качеству и точности модели  рельефа, другие, такие как, прогноз наводнений, обеспечение безопасности полетов и т.п., наоборот требуют по-возможности наиболее точных моделей.

Зачастую на требуемый участок местности можно найти цифровые топографические карты подходящего масштаба, содержащие информацию о рельефе в виде изолиний, отметок высот, отметок урезов воды и т.п. Процесс создания модели рельефа (в триангуляционном или матричном виде) по цифровым данным такого типа в настоящее время хорошо изучен, реализован во многих ГИС-пакетах и не является предметом настоящей статьи. Однако очевидно, что качество и точность получаемой модели определяется качеством, точностью и особенностями представления исходных цифровых данных – изолиний, отметок высот и т.п.

Чтобы понять какие особенности исходных данных могут привести к некорректной модели рельефа обратимся к следующему примеру. На Рис.1 представлен фрагмент российской цифровой топографической карты масштаба 1 : 200 000. По данной карте была создана триангуляционная модель рельефа методом, описанным в работе [1].

 

 

          Рис. 1.  Фрагмент карты

 

 

 

 

 

 

 

 

 

  

 

Рис. 2. Профиль рельефа вдоль участка реки

 

 

Желтым цветом на Рис.1 выделен участок реки, вдоль которого по модели рельефа был построен профиль местности. Построение профилей вдоль русла рек является хорошим критерием проверки качества создаваемой модели рельефа,  т.к. очевидно, что получаемый профиль должен иметь монотонный вид. Рассчитанный профиль представлен на Рис.2. Точки, в которых была рассчитана высота русла, отмечены на Рис.2 зелеными, а на Рис.1 черными квадратиками.

В данном случае профиль существенно отличается от монотонной функции. Это объясняется исключительно особенностью представления на карте изолиний рельефа. Из Рис.1 видно, что горизонтали, описывающие рельеф вдоль русла реки, состоят из отдельных отрезков, прерываемых обрывом. Следовательно модель рельефа формируется то из одних, то из других «кусков» изолиний, в том числе и тех, которые имеют величину приписанных высот, значительно отличающихся от истинной высоты русла. В результате профиль рельефа имеет не монотонную, а зубчатую форму.

Является ли приведенный пример единичным случаем, встретившимся на отдельном листе цифровой топографической карты? Чтобы ответить на этот вопрос было проведено статистическое исследование на предмет выявления на различных листах цифровых карт масштаба 1 : 200 000 – 1 : 1 000 000 ситуаций с немонотонно текущими реками. При этом предварительно карты контролировались на соответствие рельефного слоя исходному оригиналу (бумажной карте) и на правильность приписки высот. Этот контроль исключал появление некорректных ситуаций в представлении рельефа из-за ошибок, возникающих в процессе создания цифровых карт. Обследование около 100 листов карт равнинных и горных местностей показало, что на более чем 90% листов встречаются одна или несколько немонотонно текущих рек. Это говорит о том, что данная ситуация скорее типичная, чем исключительная.

Проведенный анализ позволил выявить описанные ниже особенности в представлении информации рельефного слоя цифровых топографических карт, оказывающие влияние на качество моделей рельефа:

а) изолинии:

- могут быть незамкнуты, разорваны другими объектами;

- обрываются при вхождении в скалы, обрывы, овраги, промоины;

- могут идти по обрыву (оврагу) и друг по другу одновременно;

- могут иметь разный шаг сечения в различных местах одного листа карты;

- направление цифрования изолиний - произвольное;

б) бергхштрихи в основном отсутствуют;

в) отметки высот и пункты ГГС стоят, как правило, на вершинах;

г) отметки урезов воды проставлены крайне редко.

 

      Постановка задачи.

      Отмеченные особенности в совокупности с проведенным анализом позволяют сделать вывод о том, что корректное построение модели рельефа по цифровым топографическим картам невозможно без проведения предварительной обработки, исключающей негативное влияние данных особенностей. Этот вывод является достаточно важным, т.к. одним из его следствий может (и должна) стать разработка предложений по изменению технологии производства российских цифровых топографических карт в части цифрового описания рельефа. Однако обсуждение таких предложений в задачу данной статьи не входит.

Можно ли построить корректную и качественную модель рельефа, используя для этого уже созданные к настоящему времени цифровые топографические карты? Какую именно предварительную обработку необходимо провести? Может ли эта обработка быть полностью автоматической, или она требует ручного труда? Ответу  на эти вопросы посвящена настоящая работа.

На каком принципе должна основываться предварительная обработка, позволяющая повысить качество построения модели рельефа? На наш взгляд этим принципом должно стать максимальное использование присутствующей на карте неявной информации о рельефе. Такую информацию несут некоторые элементы карты, такие как: линейная и площадная гидрография, а также конфигурация (форма) скал, обрывов, оврагов и др. Эти элементы, за исключением некоторых озер и морей, в которых есть приписка высот, не несут в себе явную информацию об абсолютной высоте, однако, приведенная ниже неявная информация о рельефе может быть с успехом использована:

- моря, озера, водохранилища, пруды имеют береговую линию одинаковой высоты;

- в случаях обнаружения отметки уреза воды на объектах вышеперечисленного типа можно считать явно заданной по высоте всю их береговую линию;

- линейные реки имеют переменную по высоте береговую линию, монотонно убывающую или возрастающую в зависимости от направления цифрования;

- площадные реки имеют переменную по высоте береговую линию, монотонную по участкам между притоками и устьями.

     Таким образом, если говорить о гидрографии, необходимо разработать алгоритм, позволяющий на этапе, предшествующем созданию модели рельефа, на основе принципа монотонности рассчитывать высотную составляющую русла или береговой линии объекта. Иными словами необходимо заменить двумерное геометрическое описание объектов гидрографии (координаты X, Y) на трехмерное (X, Y, Z), где Z – абсолютная высота.

     Прежде чем приступить к обсуждению путей реализации алгоритма, необходимо проанализировать особенности представления на цифровых картах слоя гидрографии. Такой анализ был проведен по выборке карт, описанной выше, и использованной ранее для анализа слоя рельефа. Он показал, что:

а) океаны, моря, заливы, озера, водохранилища зачастую не содержат в атрибутах высоту уровня воды;

б) реки:

- одна и та же река может быть оцифрована несколькими или даже несколькими десятками фрагментов, причем каждый фрагмент может является объектом своего типа (отличного от другого), например: река пересыхающая (исток),  река в одну линию (ширина на местности до 20м), река в две линии; площадная река, снова река в две линии и т.д.

- направление цифрования декларируется (от истока к устью), но не всегда выполняется (около 10% рек оцифрованы от устья к истоку);

- атрибут реки: «собственное название» зачастую отсутствует, нередки случаи, когда этот атрибут присутствует, но не во всех фрагментах одной реки;

в) отметки урезов воды проставлены крайне редко;

г) направление течения каналов может не согласовываться с информацией о рельефе;

 д) указатели направления течения:

- нет явных ссылок на то, к какому объекту данный указатель относится;

- очень редко проставлены.

      Перечисленные выше особенности существенным образом влияют на процесс создания алгоритма предварительной обработки. Далее по тексту мы будем неоднократно ссылаться на эти особенности, показывая, как они усложняют разработку и функционирование алгоритма.

 

      Общие требования к алгоритму.

      Какие цифровые данные должны подвергаться обработке? Если проанализировать состав слоя гидрографии цифровых топографических карт, то можно обнаружить, что он содержит около двухсот объектов различных классов, причем более сотни из них являются линейными или площадными. Должны ли все они подвергаться обработке? Конечно нет. Очевидно, что такие объекты, как водопроводы, акведуки, броды, пороги, паромные переправы и т.п. обрабатывать не нужно. Более того, каналы различного типа тоже не должны подвергаться обработке, т.к. зачастую они пересекают местность произвольным образом, не согласуясь с наклонами рельефа. Из всего многообразия объектового слоя гидрографии можно выделить лишь несколько типов (классов) объектов, которые подчиняются принципу монотонного изменения (или постоянного значения) высоты своей береговой линии, это: линейные и площадные реки всех типов (пересыхающие,  в 1 линию, в 2 линии и др.), моря, озера, водохранилища, пруды. Таким образом, алгоритм обработки должен иметь механизм формирования выборки объектов по классификационному коду и типу локализации объекта.

      Какую совокупность данных следует обрабатывать совместно? Ответ на этот вопрос достаточно очевиден. Бассейн одной реки от ее истока до устья, состоящий в общем случае из множества перемежающихся линейных и площадных фрагментов, вместе со всеми притоками является такой совокупностью данных. Объясняется это достаточно просто. Только имея сформированный бассейн реки можно получить дополнительную неявную информацию о высоте рельефа местности в точках примыкания объектов друг к другу. Действительно, высота устья притока должна совпадать с высотой основного русла в точке впадения и наоборот. Аналогично должны совпадать высоты примыкающих друг к другу отдельных фрагментов основного русла. Бассейн реки можно обрабатывать независимо от другого бассейна, однако его надо уметь получить. Иными словами алгоритм должен иметь механизм формирования бассейна реки (взаимосвязанного множества примыкающих друг к другу отдельных фрагментов и притоков рек) даже при отсутствии явных ссылок, указывающих на примыкание одного объекта к другому.

      Неявная информация не дает возможности рассчитать численные значения высот в той или иной точке реки, она лишь накладывает ограничения на значения высот, которые должны быть монотонными (или постоянными) и совпадать в точках примыкания нескольких объектов. Расчет высот возможен только на основе явно заданной информации. Такую информацию можно получить с одной стороны из отметок урезов воды, а с другой – из точек пересечения рек и изолиний. Очевидно, что число получаемых таким образом точек с явно заданными высотами значительно меньше общего количества координатных точек, описывающих бассейн реки. Однако принцип монотонности позволяет проводить интерполяцию (линейную, квадратичную или другую), и тем самым рассчитывать высоту промежуточных точек. Таким образом алгоритм должен уметь рассчитывать точки примыкания к рекам урезов воды и точки пересечения рек и горизонталей, а также уметь переносить высоты этих точек в трехмерное координатное описание рек.

      Если взглянуть практически на любую карту, то можно обнаружить несколько или даже множество рукавов, текущих параллельно основному руслу какой-либо реки. В нижнем течении устье реки также зачастую состоит из нескольких рукавов, а количество истоков (с учетом притоков) в бассейне по определению множество. Это говорит о том, что с математической точки зрения бассейн реки представляет собой граф, описываемый сетью. Причем этот граф нельзя назвать направленным, т.к. (это было отмечено выше) направление цифрования рек от истока к устью зачастую не выдерживается. Каким образом проводить интерполяцию внутри такого графа? Очевидно, что надо уметь выделять и соединять участки сети, соответствующие основному (и параллельным) руслу и притокам. Как было отмечено выше, сформировать основное русло (или русло притока) по принципу присутствия во всех его фрагментах одинакового имени не удается практически никогда. В этом случае остается один путь – полный анализ графа и разработка таких критериев, которые позволят выделить из сети главное русло (от истока до устья) и русла всех притоков. Это самая сложная и тонкая задача алгоритма. После сборки (выделения) русел задача проведения интерполяции решается тривиально.

      Как было отмечено выше, можно считать, что участки береговой линии площадного объекта (реки) между притоками и устьями этого площадного объекта также подчиняется принципу монотонности. Поэтому при построении графа бассейна следует заменить каждый площадной объект набором линейных береговых линий, примыкающих друг к другу. Следовательно алгоритм должен уметь разбивать требуемые площадные объекты на совокупность их линейных береговых линий. Полученные береговые линии включаются в состав графа бассейна.

      Путем интерполяции можно рассчитать высоты средней части каждого русла – от первого до последнего явно-заданных значений. При этом останутся  нерасчитанными значения высот отрезков рек от истока до первого явно-заданного значения и от последнего явно-заданного значения до устья. Поэтому еще одна  задача алгоритма – экстраполяция высот концов рек. Это процедура будет несложной, если каким-либо образом (конечно с учетом принципа монотонности) задать значение высоты первой и последней точки реки. Как правило, высоту устья можно определить по высоте моря, озера или водохранилища, в которое впадает река. Высоту же истока можно оценить только по локальной модели рельефа, построенной в районе данного истока. Следовательно алгоритм должен уметь строить модель рельефа на локальные зоны для оценки высот истоков рек.

                  

      Принципы реализации алгоритма.

Работа по разработке алгоритма на основе сформулированных выше общих требований велась на протяжении длительного времени. При этом проверялись различные критерии его работы, оптимизировалась реализация отдельных этапов, конкретизировалась последовательность выполняемых действий. В рамках статьи нет возможности изложить все нюансы и тонкости разработанного алгоритма, однако описать основные моменты и принципы, на которых строилась его реализация, конечно необходимо и возможно.

Следует кратко упомянуть некоторые тривиальные моменты, реализация которых целесообразна на этапе, предшествующем основному действию алгоритма. Во-первых, следует провести контроль правильности рельефного слоя, используя для этого все имеющиеся средства, и исправить выявленные ошибки. Во-вторых, следует найти все отметки урезов воды, стоящие на береговых линиях озер, водохранилищ, прудов и т.п., и задать этим береговым линиям высоту, равную высоте уреза. В-третьих, океанам, морям, заливам и т.п. необходимо присвоить высоту, равную нулю. Отметим, что последние два действия можно провести автоматически, в то время как исправление ошибок требует ручного труда.

Формирование требуемой выборки объектов гидрографии, казалось бы не представляет особого труда. Конечно это так, но хочется отметить, что именно на этом этапе удобно формировать такую структуру выбираемых данных (объектов гидрографии), которая будет обладать новыми, по сравнению с исходными данными, свойствами, необходимыми для  дальнейшего функционирования алгоритма. К таким новым свойствам можно отнести наличие третьей координаты, возможность организации цепочно-узловой структуры данных (например, наличие явных ссылок на примыкающие объекты), и др.

Формирование бассейна имеет три особенности. С одной стороны анализ примыкания объектов должен вестись с учетом некоторого допуска. Этот допуск может меняться, в зависимости от конкретного листа карты. До сих пор встречаются отдельные экземпляры листов, в которых не выдерживается корректная топология объектов, а несогласование примыканий составляет величину порядка нескольких и даже нескольких десятков метров для карт масштаба 1 : 200 000. Второй особенностью является необходимость (для удобства дальнейшего анализа) исключить примыкания притоков к середине участка реки, заменив их примыканиями типа «начало-конец». Для этого все речки (линейные и площадные), к середине которых подходят другие реки, разбиваются на отдельные фрагменты в точках примыкания. Третьей особенностью является то, что информация о том, из каких фрагментов изначально состояла та или иная река, является полезной и должна быть сохранена, например, в виде набора ссылок.

Определение точек пересечения изолиний и объектов гидрографии обычными методами может занимать достаточно продолжительное время (десятки минут) даже для одного листа карты. Поэтому алгоритм должен иметь специальную процедуру, которая вычисляет точки пересечения ускоренными методами, например, на основе пространственной индексации. В описываемом алгоритме такой подход позволил уменьшить время расчета точек пересечения более чем на порядок. На этом же этапе удобно рассчитать, если это возможно, направление течения отдельных фрагментов рек. Это можно сделать для тех фрагментов, у которых находится несколько точек (не менее двух) с явно заданными высотами. В описываемом алгоритме при наличии во фрагменте (или речке, состоящей из нескольких фрагментов) трех точек с явно-заданными и монотонно изменяющимися высотами определялось и запоминалось направление цифрования, и, как следствие, направление течения реки. Отметим, что общее количество фрагментов рек с вычисленным направлением течения составляет величину для равнинных местностей – около 30%.

Проведение анализа графа требует определения начальных условий. Ими являются истоки бассейна и его устья. Исток легко определяется по отсутствию связи (ссылки на связанный объект) с каким-либо объектом бассейна на одном из концов фрагмента. Устье следует определять по минимуму явно-заданной в бассейне высоты. Если минимальная высота встречается несколько раз, то устьев – несколько. Отметим, что устье может быть расположено в середине фрагмента реки, тогда анализ графа бассейна будет ограничен этой точкой.

Анализ графа – самый сложный этап. В его задачу входит, во-первых, определение всевозможных путей от истоков до устья (или до устьев, если их несколько) и выбор оптимальных из них, а, во-вторых, проведение интерполяции последовательно для каждого из оптимальных путей. Прокладка путей была реализована рекурсивной процедурой. Очевидно, что при определении путей необходимо отсекать петли – это несложно. В случае попытки проложить путь против течения (по фрагменту, у которого определено направление течения), данный вариант пути следует отбраковывать. За критерий оптимальности пути от точки A (одного из истоков) до точки B (одного из устьев) был принят критерий минимальности дистанции пути. В результате анализа графа бассейна формируется набор оптимальных путей (треков) от всех точек-истоков до всех точек-устьев. Поведение проверок по множеству карт показало, что выбранный критерий (минимальность дистанции пути) позволяет безошибочно формировать такие треки, в которые входят фрагменты рек с правильным направлением течения. Было зафиксировано всего несколько случаев, когда в трек входил спорный фрагмент, но в этих случаях даже человек (эксперт) не мог наверняка определить направление течения в данном фрагменте.

Проведение дальнейших исследований работы алгоритма показало, что необходимо придерживаться определенного порядка проведения интерполяции. Сначала следует рассчитать (проинтерполировать) главное русло, затем второстепенные и русла притоков. Как же определить какой из треков описывает главное русло, а какой - приток? Было предложено и исследовано два критерия. Первый: считать главным русло с максимальной дистанцией трека, второй: - с минимальным текущим наклоном профиля трека. Как применять первый критерий - понятно, проводится интерполяция в первую очередь треков с максимальной длиной. Использование второго критерия более сложное. Треки анализируются в направлении от устья к истоку. На текущей дистанции от устья рассчитывается текущий наклон треков по явно-заданным значениям, преимущество отдается треку с минимальным текущим наклоном. При равенстве наклонов продолжается движение по дистанции треков до срабатывания критерия отбора. На имеющейся выборке второй критерий определения главного русла не ошибся ни разу, в то время как первый критерий несколько раз принимал за главное русло один из длинных притоков.

После интерполяции треков остаются как отдельные фрагменты, так и целые цепочки фрагментов рек с невычисленными высотами. Это объясняется тем, что треки – это оптимальные в некотором смысле пути, которые зачастую не проходят по второстепенным рукавам рек. Поэтому в алгоритм была введена процедура поиска фрагментов и цепочек с незаданными высотами. Работа этой процедуры очень похожа на процедуру анализа графа. С той лишь разницей, что формируются короткие пути (короткие треки) от фрагмента, содержащего хотя бы одну известную (исходную) высоту до ближайшего по дистанции фрагмента с также известной высотой, не равной исходной. Получаемые короткие треки интерполируются. Этот процесс продолжается до тех пор, пока не остается нерассчитанных русел рек.

Известно, что анализ разветвленных сетей рекурсивными процедурами может занимать достаточно продолжительное время. Этот тезис нашел подтверждение и в нашем случае. Анализ некоторых больших бассейнов продолжался несколько часов процессорного времени для компьютера Pentium-3 – 1.3 ГГц. Совершенно очевидно, что такая скорость обработки неприемлема. К настоящему времени автору не удалось найти какой-либо другой метод анализа графа бассейна, который позволил бы ускорить обработку больших сетей на один-два порядка. Поэтому было предложено проводить разбиение больших бассейнов на составные части. Отметим, что большим считался бассейн, у которого насчитывалось более сотни составных частей (фрагментов рек). При этом находились карты, в которых бассейны насчитывали до тысячи и более фрагментов.

Принципов разбиения сети на части может быть несколько. Во-первых, можно формировать отдельные бассейны для разных классов рек, то есть бассейны с узкими реками отделять от бассейнов с широкими. Во-вторых, объекты площадной гидрографии с постоянными по высоте береговыми линиями (озера и др.) могут делить бассейн на несколько независимых частей. В третьих, можно применить следующий подход. Необходимо проанализировать структуру сети и выделить в ней участки, описываемые не сетью, а «деревом». Таких участков в бассейне достаточно много, т.к. верхнее течение рек имеет, как правило, древовидную структуру, а среднее и нижнее зачастую описывается сетью. В тех местах, где сеть переходит в «дерево» следует установить псевдо-истоки, разорвать связи и проводить анализ существенно меньшей сети. Все три принципа разбиения бассейна в зависимости от ситуации используются в описываемом алгоритме. Они позволяют сократить время работы алгоритма до нескольких минут в худших случаях.

Некоторые небольшие участки рек, представленные площадными объектами с формой, близкой к окружности, можно считать, подобно озерам, объектами с постоянной по высоте береговой линией. Такие объекты обрабатывать значительно легче, чем объекты с переменной по высоте береговой линией, поэтому везде, где возможно, это следует делать. Для их поиска было введено понятие форм-фактора F, который оценивает отличие формы площадного объекта от окружности. Форм-фактор определяется как отношение двух радиусов, первый из которых вычисляется по площади объекта, исходя из предположения, что объект – это окружность. Второй радиус вычисляется по длине периметра объекта, исходя из того же предположения.

F = Rs/Rl, где

Rs = sqrt(S/Pi), Rl = L/(2*Pi)

В приведенных формулах S – площадь объекта, L – его периметр, Pi – число «пи», sqrt – функция взятия квадратного корня.

Форм-фактор может принимать значения от 0 до 1. При значениях F, равных единице, имеем идеальную окружность. В случаях, когда значение форм-фактора больше некоторой пороговой величины (использовался порог 0.7), можно считать, что данный площадной объект имеет форму близкую к окружности.

Еще одну особенность необходимо учитывать при расчете береговых линий площадных объектов. При формировании трека, проходящего через площадной объект, в состав трека входит правая или левая береговая линия (или набор береговых линий) площадного объекта. По завершении интерполяции данного трека оказывается рассчитанной одна из границ площадного объекта, например правая, и появляется возможность провести интерполяцию левой границы. Однако сразу этого делать нельзя особенно для вытянутых по длине площадных объектов. Разница длин правой и левой границ может привести к существенной разнице в высотах для тех точек, которые принадлежат разным берегам, но близко подходят друг к другу, а следовательно имеют близкие или равные высоты. Необходимо провести процедуру выравнивания противоположных береговых линий по высоте. Такая процедура была реализована. Она находит точки на противоположных берегах вытянутых площадных объектов, которые являются ближайшими, и приравнивает значения их высот. Вслед за этим можно проводить интерполяцию незаданной части береговой линии.

Следует упомянуть еще об одной особенности алгоритма. Параллельно с интерполяцией работает специальная ветвь алгоритма, которая устанавливает и анализирует ограничения на возможные высоты. Первоначально эти ограничения для всех координат не являются строгими и составляют величины: Max = 10 км., Min = -10 км. По мере определения высот береговых линий данные ограничения перерассчитываются и с учетом принципа монотонности переносятся на примыкающие участки. Ограничения учитываются при проведении интерполяции. Такой способ позволяет в некоторых случаях избавиться от ошибок определения высот.

Описанные выше принципы позволяют реализовать алгоритм обработки гидрографии, опирающийся на несколько исходных посылок. Одна из них – правильность приписки высот исходных данных рельефа. Что же произойдет в случае присутствия на карте некорректных по приписке высотных данных? Очевидно, что после работы алгоритма мы получим некорректное в смысле монотонности описание русел рек. Автоматически исправить ошибочную приписку высот скорее всего невозможно, поэтому такая задача и не ставилась, однако проконтролировать и найти некорректные ситуации, полученные после проведения обработки, вполне возможно. Поэтому в описываемый алгоритм была введена процедура контроля, которая проверяет монотонность как треков так и отдельных фрагментов рек по ходу выполнения расчета высот. Следует отметить, что такой контроль является мощным средством проверки правильности приписки высот рельефного слоя карты и может быть использован как самостоятельное средство.

Приведем несколько примеров работы алгоритма. На Рис.3 представлен профиль рельефа вдоль русла, отмеченного на Рис.1, полученного после проведения предварительной обработки. Видно монотонное убывание высоты, что свидетельствует об эффективности проведенной обработки.

       

                                     Рис.3   Профиль русла после обработки

 

 

На Рис.4 приведен фрагмент еще одной карты. Исходный профиль вдоль выделенного участка реки представлен на Рис. 5, а после обработки – на Рис. 6.

 

 

 

                              Рис. 4.

 

 

          

                             Рис.5  Профиль до обработки

 

 

 

                         Рис.6   Профиль после обработки

 

 

Представленный алгоритм был проверен на выборке карт, описанной выше. В тех случаях, когда на карте были ошибки в описании рельефа, алгоритм выдавал список ошибок и прекращал работу. Здесь требовалось вмешательство оператора. В случае отсутствия ошибок алгоритм проводил обработку до конца. Последующая тщательная проверка корректности его работы ошибок не выявила. 

Таким образом, предложенная предварительная обработка рельефа и гидрографии позволяет существенным образом повысить качество получаемой модели рельефа местности.

Хостинг от uCoz