З документа PostGIS :
"ST_Affine - застосовує 3d-афінну трансформацію до геометрії, щоб робити такі речі, як переклад, обертання, масштабування в один крок."
Тут наводиться досить брудний приклад.
Два роки тому я використовував його для створення карти з можливістю натискання HTML на графічному зображенні gif, доставленому з 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);
Не красиво, але насправді це спрацювало дуже добре і служило якийсь час.
/ Ніклас