是否有更好的方法从多边形创建多边形而不是文本连接?
我的数据库中有多个多边形(数据库中每一行一个),其中一些我需要创建多边形。我能看到的唯一解决方案是创建以下功能:
我想要两个多边形
polygon1: 'POLYGON((1 1, 1 -1, -1 -1, -1 1, 1 1))'
polygon2: 'POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))'
创建一个多字形:
result: 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)), ((1 1, 3 1, 3 3, 1 3, 1 1)))'
它听起来不是一个完美的解决方案,所以我想知道是否有更好的方法来做到这一点。
答案 0 :(得分:2)
您可以使用STUnion
:
CREATE TABLE t(ID INT IDENTITY(1,1), c GEOMETRY);
INSERT INTO t(c)
VALUES ('POLYGON((1 1, 1 -1, -1 -1, -1 1, 1 1))')
,('POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))');
DECLARE @g geometry = geometry::STGeomFromText('GEOMETRYCOLLECTION EMPTY', 0);
SELECT @g = @g.STUnion(c) FROM t
SELECT @g;
<强> Rextester Demo 强>