在 SQL Server 表中像 Postgres 中的 GeomUnion 一样合并所有几何图形。

12

事先澄清一下:我说的是几何联合,而不是 SQL 关键字UNION

我正在尝试将一些具有 PostGIS 的空间数据从 Postgres 移动到 SQL Server 2008。一切都很顺利,直到我看到了像这样的语句:

SELECT GeomUnion(the_geom) FROM some_table

这个函数将该列中的所有几何对象合并为一个结果(类似于 COUNT 的工作方式)。据我所知,SQL Server 只有 STUnion 函数,用于将一个几何对象与另一个对象合并。是否有一种类似于 Postgres 的方法来实现类似功能?

如果有帮助的话,STUnion 函数的工作方式如下:

SELECT first_geometry_column.STUnion(second_geometry_column) FROM some_table

1
免责声明:我没有使用空间数据工作过 :). 您能否不使用公共表达式和STUnion的组合来获得所需的GeomUnion功能? - Nikhil S
3个回答

12

3
谢谢提供这个信息。省了很多时间!FYI:对于几何数据,可以使用geometry::UnionAggregate(geometry)函数。 - Oncel Umut TURER
1
这绝对是针对 SQL 2012 及以上版本的原始问题的答案。 - mdisibio

9
我采用变量的方式来实现这个功能:

我最终采用的方法是通过使用变量:

DECLARE @Shape GEOMETRY
SET @Shape = GEOMETRY::STGeomFromText('GEOMETRYCOLLECTION EMPTY', @MySrid)

SELECT @Shape = @Shape.STUnion(Shape)
  FROM MyShapeTable

虽然不是很好,但它可以工作。


3
如果超过几个几何体,费用就会变得非常昂贵。 - Peter Radocchia

5

你说得对 - 这是SQL 2008的最佳选择,但它非常缓慢并且会导致小的几何错误。值得庆幸的是,SQL2012非常快速,并且没有几何问题。微软已经声明他们不会修复SQL2008中的几何问题。 - Damien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接