Алгоритмы трансформирования ГИС TopoL-L

ООО "ЛесИС" - ГИС TOPOL-L для лесного хозяйства, лесоустройства и арендаторов лесного фонда
lesis@ya.ru
+7(916)615-42-77

ПОМОЩЬ

Справочник

Структура БД
Коды карт.объектов
Требования к картам
RGB цвета
Коды регионов
Карточка таксации
Категории земель
Основные породы
Прочие породы
Горячие клавиши
Системы координат
Трансформирование
Аннотационные тексты


Главное меню

Алгоритмы трансформирования

Рассмотривать алгоритмы трансформирования мы будем с трех позиций: описания сути преобразования геометрического пространства, необходимого числа опорных точек и практической применимости алгоритма. Все описываемые алгоритмы относятся к классу двумерных (плоских).
Для каждого алгоритма трансформирования существует минимально необходимое количество опорных точек, при котором преобразование вычисляется однозначно, все невязки нулевые и любая неточно заданная пара целевой-исходной точек"незаметно" искажает результирующее преобразование. Если точек задается больше минимально необходимого, то появляется избыточность и вычисляется оптимальное в смысле минимальной среднеквадратической ошибки преобразование.
При этом сами опорные точки также трансформируются в соответствии с вычисленным преобразованием координат, и оценивается невязка между заданным положением целевых точек и вычисленными их координатами. Именно эту невязку Вы видите в форме со списком точек. Величина невязки позволяет оценить точность трансформирования и выявить ошибочно указанные пары точек. При значительном числе избыточных точек неточно указанные выявить легче, они обычно имеют бόльшие невязки по сравнению с другими точками. Другой прием выявления неточно указанных пар точек - временное отключение подозрительных точек и перевычисление преобразования.
Число пар опорных точек, используемых при трансформировании, может колебаться в широких пределах - от одной-двух и до десятков. Для некоторых алгоритмов (например, полиномиальных) справедлив принцип - чем больше, тем лучше. Максимальное число опорных точек в ГИС TopoL ограничено лишь ресурсами памяти. На практике нам удалось ввести около 260 пар точек, прежде чем TopoL сообщил, что больше принять не может.
Размещение опорных точек в пространстве трансформируемого объекта также важно. Как будет отмечено ниже, некоторые алгоритмы трансформирования практически неприменимы при неудачном расположении опорных точек. Сами опорные точки должны быть максимально"разнесены" по длине, если используется малое число точек и, по-возможности, покрывать все поверхность объекта при задании большого их числа. Дело в том, что величины невязок, показанные в Таблице погрешностей привязки, позволяют оценить точность трансформирования, но погрешности трансформирования гарантированно не превысят эти величины только в пределах той части объекта, которую покрывают опорные точки. Вне этой области покрытия погрешности могут возрастать тем сильнее, чем они более от нее удалены и чем"сильнее" используемый алгоритм трансформирования. То есть, например, имея опорные точки с малыми невязками лишь в одной половине снимка, Вы не можете гарантировать такую же точность привязки для другой половины, где точек нет совсем.
В следующих подразделах этого раздела при обсуждении конкретных алгоритмов трансформирования на рисунках везде исходная сетка показана утолщенными черными линиями, а результат ее трансформирования - тонкими синими. Номера целевых опорных точек показаны красным, исходных - черным.

Преобразование сдвигом


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

Преобразование сдвигом и поворотом


Преобразование сдвигом и поворотом образно можно представить как задачу переразмещения фрагмента карты, изображенного на кальке. В окне Тип трансформирования оно называется Rotation_Shift_2D и в текущей версии TopoL определено, к сожалению, пока только для векторных данных.
При сдвиге-повороте форма и размер объекта трансформирования не изменяются, масштаб исходного картографического материала остается неизменным, но допускается его поворот по отношению к исходному положению.
Для выполнения такого преобразования нужно задать, как минимум, две опорные точки. Если расстояния между точками в паре целевых и в паре исходных точек будут одинаковыми, невязки для этого преобразования будут нулевыми. Во всех других случаях возникают невязки в положении точек, а преобразование выполняется с их осреднением. На рисунке показан случай, когда мы преднамеренно задали меньшее расстояние между целевыми точками, чем было для исходных, и Вы наглядно видите результат осреднения их положения.
Типичный случай использования такого преобразования - переход между локальной системой координат, в которой выполнены исходные картматериалы (городские планы, лесоустроительные планшеты"ручного" исполнения), и системой Гаусса-Крюгера. При этом все материалы должны быть приведены к натуральной метрической системе, то есть должны иметь одинаковый фактический масштаб (не путать с масштабом исходных материалов!).
Для аналогичного преобразования растров можно воспользоваться следующей технологией: создать в отдельном блоке набор точечных объектов на ключевых точках растра, выполнить для этого блока операцию преобразования, а затем, используя функцию трансформирования растра по ключевым точкам в режиме подобия (см. ниже), преобразовать сам растр.

Преобразование подобия (Хелмерта)


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

Аффинное преобразование


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

Проективное или коллинеарное преобразование


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

Полиномиальные преобразования


Преобразование полиномом 2-ой степени
Видно, что большинство из 9 опорных точек смещены относительно"своих" узлов сетки

Все полиномиальные преобразования относятся к нелинейным. Они позволяют очень сильно деформировать трансформируемый объект. При использовании полиномов требуется задавать большое число опорных точек, равномерно распределенных по всей плоскости объекта. Для полинома 2-ой степени нужно как минимум 6 опорных точек, для полнома 3-й степени - уже минимум 10.
В ГИС TopoL в окне Тип трансформирования полиномиальные преобразования называются соответственно 2_Polin и 3_Polin, они определены только для растровых данных.


Преобразование полиномом 3-ей степени
К заданным ранее
9 опорным точкам добавлено еще 4 на средних узлах. Смещение в"своих" узлах сетки уменьшилось, деформация пространства усилилась.
Из представленных рисунков видно, насколько велик потенциал деформации у полиномиальных преобразований. При использовании полинома 2-ой степени прямые линии можно превратить в кривые 2-го порядка, а для полинома 3-ей степени - соответственно в кривые 3-го порядка.

Результаты трансформирования полиномом 2-го (зеленый цвет) и 3-го (красный цвет) порядков после исключения двух угловых опорных точек в северо-восточном углу.
Смещение угла различно при использовании полиномов разных степеней.

Если какая-либо часть объекта не имеет опорных точек, то результат трансформирования в ней предсказать будет трудно, особенно при использовании полинома 3-го порядка (см. рисунок выше). Поэтому для получения "предсказуемого" преобразования правильное распределение опорных точек на объекте чрезвычайно важно.
В некоторых ГИС могут использоваться полиномы еще более высоких степеней, но это требует еще большего числа опорных точек и результат преобразования может оказаться еще менее предсказуемым.

Преобразование TPC

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


Почтовый адрес для ЗАКАЗНЫХ писем:
Грешнов С.П., 108832, Москва, А/Я № 1, тел.+7(916)615-42-77
НЕ ИСПОЛЬЗОВАТЬ курьерскую доставку!!!
E-Mail: lesis@ya.ru
Вопросы общего характера:
+7(916)615-42-77
РОССИЙСКАЯ ФЕДЕРАЦИЯ
Общество с ограниченной ответственностью "ЛЕСИС"
ОГРН: 1035007204902, ИНН: 5036046400, КПП: 503601001