我正在使用postgres并尝试使用几何类型。我没有很好的基本几何操作来源。例如,两个边界框的边界框。我编写代码,我希望它是正确的,但它很难看。
非常感谢帮助使它漂亮(更正确)。
CREATE OR REPLACE FUNCTION containingBox( bx1 Box , bx2 Box ) returns Box AS $cB$
DECLARE
minX double precision;
minY double precision;
maxX double precision;
maxY double precision;
bx Box;
BEGIN
if bx2 is null then
return bx1;
else
if bx1 is null then
return bx2;
end if;
minX := least( (center(bx1))[0]-.5*width(bx1), (center(bx2))[0]-.5*width(bx2));
maxX := greatest( (center(bx1))[0]+.5*width(bx1), (center(bx2))[0]+.5*width(bx2));
minY := least( ((center(bx1))[1]-.5*height(bx1)), ((center(bx2))[1]-.5*height(bx2)));
maxY := greatest( (center(bx1))[1]+.5*height(bx1), (center(bx2))[1]+.5*height(bx2));
bx:=box(point(minX,minY),point(maxX,maxY));
return bx;
END;
$cB$ LANGUAGE plpgsql;
答案 0 :(得分:0)
你已经安装了PostGIS,对吧?
在这种情况下,您可以使用内置函数。根本不认为你需要存储过程。
SELECT ST_Extent(thegeom) FROM
(SELECT bx1 as thegeom
UNION
SELECT bx2 as thegeom) as geomlist;