Реальный пример аффинного преобразования?


9

Из статьи Википедии :

В геометрии аффинное преобразование или аффинное отображение или аффинность (от латинского affinis, «связанный с») между двумя векторными пространствами (строго говоря, двумя аффинными пространствами) состоит из линейного преобразования, за которым следует перевод.

Кто-нибудь может привести реальный пример того, когда и как это используется в ГИС?

Ответы:


9

Обычное использование 2D и 3D аффинных преобразований в ГИС включает

  • Преобразование карты в отображение

  • Регистрация изображений и растров

  • Изменение 3D-точек обзора

  • Изменение функций путем изменения масштаба, сдвига и поворота

  • Изменения базовых данных (3-точечные и 7-точечные формулы).

Они описаны более подробно и проиллюстрированы для 2D-случая на этой веб-странице , которая обнаруживается при поиске «ГИС аффинного преобразования». Другие хиты дают еще много примеров.

Аффинные преобразования также обеспечивают некоторые концептуальные упрощения . Например, каждая регулярная сетка местоположений аффинно эквивалентна сетке точек с интегральными координатами, а все эллипсоидальные модели Земли аффинно эквивалентны единичной сфере с центром в начале координат.

Наконец, отметим, что ( по крайней мере, с конца 1800-х годов ) евклидова геометрия является изучением группы аффинных преобразований, сохраняющих расстояние. Поскольку почти вся обработка ГИС - пространственные индексы, пространственные отношения, пространственные запросы, «геообработка» и т. Д. - использует алгоритмы, основанные на евклидовой геометрии карты, аффинные преобразования являются основополагающими для ГИС.


5

дисплей

Все зрители используют аффинные преобразования для преобразования географических координат в экранные координаты.

Обобщение

Многие операции преобразования, используемые в обобщении, являются аффинными преобразованиями: масштабирование, растяжение, перемещение, вращение и т. Д.


4

http://ian01.geog.psu.edu/geoserver/www/cartogram/discontinous.html показывает прерывистую картограмму, которую я строю с использованием простого аффинного преобразования.


1
+1 Обратите внимание, что это набор аффинных преобразований, по одному на состояние, а не просто одно преобразование. Можно рассматривать все картограммы как создание одного преобразования для каждого признака, но в большинстве случаев эти преобразования являются более сложными, чем аффинные (и часто не дифференцируемыми или даже непрерывными).
whuber

3

Из документа PostGIS :
«ST_Affine - применяет трехмерное аффинное преобразование к геометрии для выполнения таких операций, как перевод, вращение, масштабирование за один шаг».

Вот довольно грязный пример.

Два года назад я использовал его для создания html-карты изображений с возможностью нажатия на изображение, полученное с mapserver. Запрос, отправляемый в PostGIS, создает упрощенный буфер вокруг геометрии в правом пиксельном масштабе и пересчитывает, поскольку карта изображения имеет свое происхождение в верхнем левом углу, а проекция карты имеет свое происхождение, конечно, в нижнем левом углу. Затем я просто создал карту изображений, написав возвращаемую строку с помощью asp или, если это был php.

Я копался в грязной пыли и нашел это:

SELECT gid, 
    replace(
        astext(
            st_affine(
                ST_SnapToGrid(
                    st_buffer(
                        st_transscale(
                            st_simplify(
                                (st_dump(the_geom)).geom
                            , (st_length(the_geom)/50)::integer)
                        ,(-" & minx & "),(-" & miny & "),(500::double precision/" & deltax & "),(500::double precision/" & deltax & "))
                    ,5)
                ,1,1)
            ,1,0,0,-1,0,300)
        )
    ,' ',',')   
as thetext 
from
 mytable where gid in (" & theList & ") order by st_length(the_geom);

Не красиво, но на самом деле это работало очень хорошо и служило некоторое время.

/ Никлас


2

Это просто линейное преобразование изображения или набора данных - это означает, что все координаты в наборе данных обрабатываются одинаково. Например, если точка в точке (x1, y1) масштабируется на a и сдвигается на b, то все остальные точки (x2, y2), (x3, y3), (xn, yn) также будут масштабироваться на a и сдвигаться на b и т. Д. ... Нет никакой зависимости от того, где в наборе данных или изображении находятся пиксели.


Аффинные преобразования - это обобщения линейных преобразований. В отличие от линейного преобразования, аффинное преобразование также может переводить (сдвигать) точки.
whuber

1

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

Это можно сделать двумя способами.
1. оцифруйте в системе изображение, в котором было напечатано, затем назначьте соответствующую систему координат и затем заново спроецируйте данные. Или ...
2. поместите, поверните и масштабируйте до положения, близкого к конечному, и выполните преобразование.

При выборе типа преобразования вы ограничены количеством идентифицируемых опорных точек в обоих наборах данных.

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.