Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii_GIS.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
676.35 Кб
Скачать

48. Генерализация рельефа

Земная поверхность на крупномасштабных картах не является однозначной и производные поверхности по направлениям не являются ограниченными.(Иными словами, земная поверхность на крупномасштабных картах не является всюду гладкой. При генерализации поверхности производится ее усреднение, сглаживание. На мелкомасштабных картах земная поверхность может быть представлена без разрывов и с гладкой первой производной

по направлениям. Для машинного представления поверхности необходимо ис­ключить из рассмотрения неоднозначные участки поверхности (например, овраги), а в остальных участках поверхность должна быть усреднена в пределах точности построения карты. То есть должна быть создана трендовая (усредненная) поверхность.

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

49. Методы поиска линий равного уровня поверхности

Одной из важных задач машинной графики является задача построения карт линий равного уровня. Эта задача возникает во многих областях науки и техники, и автоматизация ее дает боль­шой экономический эффект. Поэтому не удивителен такой боль­шой интерес, проявленный к ней в нашей стране и за рубежом. Пусть имеется функция от двух переменных W=W(X,У), оп­ределенная на некоторой области . Возьмем для простоты прямоугольную область R(a<X<b, c<Y<d). Пусть функция W=W(X,Y) известна, и нам необходимо начертить п линий уровня:

W(X,Y) = Ck, k = 1, 2, ... п.Введем в область сеть по X и Y координатам. Обозначим узлы сети (ij). Если w(ij) задана, то мы можем определить матрицу || w(ij) || значений функций w в каждой вершине ячейки.

Задача может быть решена рассмотрением двух шагов:

1. Вычисляются координаты точек пересечением линий уровня с ребром каждой ячейки.

2. Найденные точки соединяются в линии уровня.

При этом производятся два вида интерполяции на ребрах (шаг 1) и внутри ячейки (шаг 2).

Существуют два класса методов проведения изолиний. В первом классе сначала находятся все точки пересечения данной изолинии с ребрами ячеек (шаг 1), а потом, собственно, про­водится вся линия (шаг 2). В методах второго класса 'точки изолиний обнаруживаются одна за другой при движении вдоль изолиний. Таким образом, шаг 1 и шаг 2 производятся вместе.

Методы, предложенные в классе 1, требуют запоминания всех точек пересечения. В этих методах, однако, можно избе- жать запоминания элементов матрицы ||w(i j)||, если все кривые проводятся последовательно.

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

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

Такой метод очень просто программируется. Но он не эф­фективен, так как не допускает удобной разметки линий уровня 144

И большое время занимает проведение линий, особенно при помощи графопостроителей. Чтобы минимизировать движение пера графопостроителя, удобно чертить каждую линию уровня непрерывно по ряду точек в том порядке, как они следуют вдоль линии уровня каждая за другой.Можно улучшить описанный алгоритм. Для этого сначала определяют все точки пересечения между ребрами сети, следуя нумерации ячеек, а затем они упорядочиваются сравнением то­чек между собой. Однако точки в этом случае находятся в не­упорядоченной последовательности, и критерий для их упорядо­чения найти нелегко.Учитывая предыдущие замечания, остановимся на методах второго класса. Эти методы позволяют находить линии уровня для любого числа областей и для любого количества точек. В этих методах проверяются ребра ячеек с целью нахождения их пересечений с линиями уровня. Такая проверка необходима для нахождения начальной точки изолинии для дальнейшего ее об­наружения.

Ребро сети пересекается с линией уровня W = С, если зна­чение уровня С находится между значениями функции в двух узлах ребра сети. Таким образом, мы можем узнать, пересекается ли ребро ячейки с уровнем, не вычисляя точку пересечения. Чтобы узнать, пересечено ли ребро, можно применять два теста:

min(w(A),w(B))<C<raax(w(A),w(B)) (1)

и

(w(A)-C)*(w(B)-C)<0. (2)

Для обнаружения всех пересечений ребер сети с линиями уровня необходимо:

1. Тест 1, 2 или аналогичные тесты применить ко всем реб­рам.

2. Запомнить результаты этих тестов. Для каждого ребра необходимо запомнить двоичную переменную, значение которой зависит от выполнения некоторого события (пересечено ребро или не пересечено). Эту информацию для экономии памяти можно помещать в. том же массиве, где хранятся элементы мат­рицы || w(i,j) [I, используя часть машинного слова.