如何从多边形表创建多面

时间:2012-04-07 15:45:44

标签: tsql sql-server-2008-r2

我有几何列“GEOMETRY”的多边形表“PARCELA”。如何从这些多边形创建多面?

谢谢!

1 个答案:

答案 0 :(得分:1)

不确定这是否是您要找的,但是: 如果你有多边形A和多边形B,并且你想将它们组合成一个多边形,这就是我所使用的。 我需要的是将北欧国家放在一起,这样我就可以将它们打印在一张地图上。

我的表国家/地区代码所在的几何列“geom”和列“ISO3”。所以我使用ISO3列作为我的主键。

DECLARE @gtbl TABLE(g geometry, id INT)
INSERT INTO @gtbl 
SELECT null,1

DECLARE @t TABLE(PK INT Identity(1,1), ISO3 VARCHAR(3))

INSERT INTO @t
Select ISO3 From countries WHERE ISO3 in ('FIN','SWE','NOR','DNK')

Declare @maxPK int; Select @maxPK = MAX(PK) From @t
Declare @pk int; Set @pk = 1

While @pk <= @maxPK

Begin

    IF ((SELECT g FROM @gtbl) IS NULL)
        BEGIN
            UPDATE gtbl SET g = c.Geom.MakeValid()
            FROM @gtbl gtbl, countries c WHERE  c.ISO3 in (Select ISO3 From @T Where PK = @pk)
        END
    ELSE
        BEGIN
            UPDATE gtbl SET g = g.STUnion(c.Geom.MakeValid())
            FROM @gtbl gtbl, countries c
            WHERE  c.ISO3 in (Select ISO3 From @T Where PK = @pk)
        END

    Select @pk = @pk + 1
End


SELECT * FROM @gtbl