TIN&SQL: различия между версиями
Trir (обсуждение | вклад) (→Рёбра) |
Trir (обсуждение | вклад) (→Рёбра) |
||
Строка 63: | Строка 63: | ||
Нужно получить рёбра. Для этого сделаем три представления: | Нужно получить рёбра. Для этого сделаем три представления: | ||
#Извлечём рёбра из треугольников (wq_Ribs1) | #Извлечём рёбра из треугольников (wq_Ribs1) | ||
<math>(p1, | <math>(p1, p2, p3) \Rightarrow \begin{pmatrix} p1, p2 \\ p2, p3 \\ p3, p1 \end{pmatrix}</math> | ||
<br /> | <br /> | ||
Мы получаем двойной набор рёбер – в обе стороне (не считая крайних) | Мы получаем двойной набор рёбер – в обе стороне (не считая крайних) |
Версия от 19:35, 5 января 2014
Введение
TIN (Triangulated Irregular Network) - Нерегулярная сеть триангуляции, структура данных используемая в ГИС для представления поверхности. Фактически является векторным представлением, её растровым аналогом является DEM (Digital Elevation Model - Цифровая модель высот). TIN основана на Триангуляции Делоне, но не тождественна её, так как последняя является более строгим понятием. TIN состоит из непересекающихся треугольников - это накладывает определённые ограничения (не может быть "пещер" и с вертикальными стенками - тоже беда) и фактически означает, что TIN имеет размерность 2.5D (x, y и z)
Удобство использования TIN заключается в возможности иметь разное "разрешение" для участков с разной сложностью.
В стандарте "Simple feature access" существует возможность хранения TIN, но фактически такая возможность существует только в Oracle Spatial и то - не по стандарту. Также существует потребность обращаться к отдельным элементам TIN. Далее рассмотрим вариант хранения TIN в MySQL.
Структура данных
Структура данных для TIN определяет скорость и удобство работы. В триангуляции можно выделить 3 основных вида объектов: узлы (точки, вершины), рёбра (отрезки) и треугольники.
- Возможны следующие структуры данных:
- «Узлы с соседями»
- «Двойные рёбра»
- «Узлы и треугольники»
- «Узлы, рёбра и треугольники»
- «Узлы, простые рёбра и треугольники»
- СД влияет на два важных момента:
- Поиск нужного объекта
- Внесение изменений и добавления новых объектов
Для поиска лучше п.4 и 5 - так, как существует 3 таблицы и можно искать во всех направлениях. А п. 1 и 2 - лучше для изменений, так нужно минимальное количество действий. Оптимальным для поиска и изменений является п. 3.
Требуется хранить множество поверхностей - по этому будет таблица MySurfaces, а также таблицы MyPoints и MyFaces. Конечно требуются 3D точки, но в MySQL реализованы только 2D точки, по этому, высоту придётся хранить отдельно. В MyFaces будем хранить только указатели на точки.
В данной структуре нет явного описания рёбер и связей между треугольниками.
Рёбра
Нужно получить рёбра. Для этого сделаем три представления:
- Извлечём рёбра из треугольников (wq_Ribs1)
Мы получаем двойной набор рёбер – в обе стороне (не считая крайних)
- Получить ссылки на треугольники (wq_Ribs2)