Формирование линий равного уровня (изолиний, изобат)

Принципы создания

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

Реализация

Soft написан преимущественно на Delphi, имеются вставки на C++. Оформлен он в виде DLL-библиотеки, над которой сделан интерфейс доступа из трех сред: Delphi, Builder, Visual Studio. К этим трем средам написаны примеры использования.

Особенности

Основная особенность - возможность формирования изолиний внутри произвольного невыпуклого многоугольника.

Примеры

Рис.1 Рис.2
Рис.3 Рис.4


Рис.1 Обычная триангуляция случайной совокупности точек
Рис.2 Триангуляция внутри НЕвыпуклой оболочки
Рис.3 Изолинии по обычной триангуляции
Рис.4 Изолинии внутри НЕвыпуклой оболочки

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


Еще одна особенность - комплексирование технологий построения изолиний и расчета высоты береговой линии объектов гидрографии.

Приведем несколько примеров.
Возьмем небольшой участок свободно распространяемой матрицы рельефа из проекта NASA SRTM (Shuttle Radar Topography Mission) с разрешением 3 угл. сек. - холмистый рельеф центральной Европы.
Если рассматривать каждую ячейку матрицы как точечную высотную отметку, то эти данные довольно просто закачать в Soft и построить по ним горизонтали. Пример полученных горизонталей с шагом 20м. приведен ниже. Центр фрагмента имеет координаты 50град 11мин 36сек сев.ш. 07град 21мин 50сек вост.д.



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



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



Здесь будет ссылка на обзор бесплатных программных продуктов по данной тематике
Cкачать Soft можно со странички Триангуляция

На главную

Хостинг от uCoz