Создание TIN со структурными линиями в ГИС GRASS

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Эта страница является черновиком статьи.


В статье описан вариант построения TIN со структурными линиями в ГИС GRASS. Используется специально написанный для решения этой задачи модуль v.triangle, представляющий собой "обёртку" для программы Triangle

.

Введение

Триангуляционные нерегулярные сети (англ. "TIN") часто используются в современных ГИС (и не только ГИС) для создания цифровых моделей рельефа. Такие модели имеют известные преимущества перед растровыми (например, способность совмещать в себе данные с разным разрешением). Наиболее распространённый способ построения TIN -- триангуляция Делоне. Для более точного моделирования поверхностей применяется метод построения TIN со "структурными линиями" (англ. breakline), которые могут представлять собой, например, тальвеги водотоков или бровки террас (подробнее 1, 2).

TIN в GRASS

ГИС GRASS включает модуль v.delaunay, который строит триангуляцию Делоне по двух- или трёхмерным точкам, на выходе получается набор двух- или трёхмерных полигонов или линий. К недостаткам <v.delaunay> можно отнести невозможность проведения триангуляции с ограничениями и скупость опций. Описываемый ниже модуль <v.triangle> создан как попытка заполнить этот функциональный пробел.

Модуль v.triangle

Описание <Triangle>

Triangle — программа для построения двухмерной триангуляции Делоне (в том числе триангуляции Делоне с ограничениями и конформной триангуляции Делоне), диаграмм Вороного и качественных полигональных сеток. Написана математиком из университета Беркли Джонатоном Шевчуком (Jonathan Richard Shewchuk). Подробнее ознакомиться с используемыми методами и алгоритмами можно на странице библиографии.

Последняя версия <Triangle> (1.6) выпущена в 2005 г. Исходный код (на языке программирования С) находится в публичном доступе, однако не под открытой лицензией (по ряду причин). В силу своего устройства <Triangle> может использоваться как "фильтр" для любых точечных/линейных/полигональных данных, по которым нужно провести триангуляцию:

Исходные векторные данные в ГИС → ASCII → специальное отформатированные текстовые файлы → Triangle → разбор отформатированных текстовых файлов с триангуляцией → импорт TIN в ГИС через ASCII.

Указанный выше принцип был применён при создании модуля GRASS <v.triangle>.

Описание работы модуля

Модуль v.triangle предназначен представляет собой shell-скрипт с использованием разных модулей GRASS, стандартных Unix-утилит и <awk>. Для работы скрипта необходим любой современный дистрибутив Linux (тестировался в Ubuntu 10.04) и ГИС GRASS версии не ниже 6.4.*. Модуль имеет описание на английском языке, ниже даны его параметры на русском.

Использование:
v.triangle [-cdqalysif] points=имя [lines=имя] tin=имя
[max_area=имя] [min_angle=имя] [steiner_points=имя] [save=имя]

Текст ячейки Текст ячейки
Текст ячейки Текст ячейки
Текст ячейки Текст ячейки
Текст ячейки Текст ячейки
Текст ячейки Текст ячейки
Текст ячейки Текст ячейки
Текст ячейки Текст ячейки
Текст ячейки Текст ячейки
Текст ячейки Текст ячейки
Текст ячейки Текст ячейки
Текст ячейки Текст ячейки
Текст ячейки Текст ячейки

Флаги:
-c  конформная триангуляция Делоне с ограничениями (без задания свойств углов и площадей)
-d  конформная триангуляция Делоне
-q  генерация качественной полигональной сетки (все углы имеют значения от 20 до 140 градусов)
-a  задание ограничения на максимальную площадь треугольника
-l  использование только вертикальных отрезков в алгоритме "разделяй и властвуй"
-y  запрещение вставки точек Штейнера на границе сетки
-s  максимальное число добавляемых точек Штейнера
-i  использование инкрементального алгоритма для триангуляции Делоне (вместо алгоритма "разделяй и властвуй")
-f  использование алгоритма "Fortune's sweepline" для триангуляции Делоне (вместо алгоритма "разделяй и властвуй")
--o  позволять выходным файлам перезаписывать существующие файлы
--v  подробный вывод модуля
--q  краткий вывод модуля

Параметры:
points   входная векторная карта с точками
lines  входная векторная карта со структурными линиями
tin  выходная векторная карта (TIN)
max_area   максимальный размер треугольника (использовать с флагом "-а")
min_angle  минимальный угол для сетки (использовать с флагом "-q")
steiner_points  максимальное число точек Штейнера, которые могут быть вставлены в сетку (использовать с флагом "-s")
save   путь для сохранения рабочих файлов Triangle (*.node,*.poly,*.edge,*.ele,*.off). По умолчанию используется директория текущей области.


Пример

Для примера использованы данные из стандартной поставки ArcView 3.2 (пример №1): шейп-файлы с точками и структурными линиями для триангуляции. На рисунке ниже сравниваются TIN, построенные с помощью ArcView 3D Analyst (слева) и с помощью GRASS + Triangle через модуль <v.triangle> (справа).

ArcView GRASS TIN breaklines RU.png


TODO (дальнейшая работа)

  • Поддержка "ограничивающих" полигонов в v.triangle (для них в Triangle используется термин "hole"), а также "мягких" структурных линий, т.е. не имеющих высотных характеристик.
  • Переписывание модуля на Python для большей кроссплатформенности (?)
  • Сравнение результатов <v.triangle> с ArcGIS / AutoCAD Civil 3D / ???