Из документа 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);
Не красиво, но на самом деле это работало очень хорошо и служило некоторое время.
/ Никлас