从多边形

时间:2017-07-26 17:19:05

标签: tsql geometry

是否有更好的方法从多边形创建多边形而不是文本连接?

我的数据库中有多个多边形(数据库中每一行一个),其中一些我需要创建多边形。我能看到的唯一解决方案是创建以下功能:

  1. 删除' POLYGON'几何文本显示为文本
  2. 将其与显示为文本
  3. 的其他多边形连接
  4. 添加' MULTIPOLYGON'
  5. 之前的文字
  6. 将其转换为几何类型
  7. 我想要两个多边形

    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)))'
    

    它听起来不是一个完美的解决方案,所以我想知道是否有更好的方法来做到这一点。

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