Bạn muốn sử dụng kết hợp ST_Scale ( http://postgis.net/docs/ST_Scale.html ) và ST_Translate ( http://postgis.net/docs/ST_Translate.html ) tôi nghĩ. Chúng tôi có một ví dụ về điều này trong PostGIS in Action và tương tự trong Chương 8. Nếu bạn không có cuốn sách này, bạn có thể tải xuống mã cho chương đó tại đây:
http://www.postgis.us/ch CHƯƠNG_08
Đoạn trích từ cuốn sách Xem ví dụ 8.26:
-- Listing 8.26 Combining Scale and Translation to maintain centroid
SELECT xfactor, yfactor,
ST_Translate(ST_Scale(hex.the_geom, xfactor, yfactor),
ST_X(ST_Centroid(the_geom))*(1 - xfactor),
ST_Y(ST_Centroid(the_geom))*(1 - yfactor) ) As scaled_geometry
FROM
( SELECT ST_GeomFromText('POLYGON((0 0,64 64,64 128,0 192,-64 128,-64 64,0 0))') As the_geom) As hex
CROSS JOIN (SELECT x*0.5 As xfactor
FROM generate_series(1,4) As x) As xf
CROSS JOIN (SELECT y*0.5 As yfactor
FROM generate_series(1,4) As y) As yf;