联合Postgres中的GeomUnion等SQL Server表中的所有几何体

时间:2010-07-20 18:37:35

标签: sql sql-server-2008 spatial

前面要澄清:我说的是联合几何,而不是SQL关键字UNION

我正在尝试将Postgres中的一些空间数据与PostGIS一起移动到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

3 个答案:

答案 0 :(得分:10)

UnionAggregate函数仅限SQL2012吗?

SELECT geography::UnionAggregate( geometry ) FROM some_table

嗯这么说。 http://technet.microsoft.com/en-us/library/ff929095.aspx

答案 1 :(得分:9)

我最终这样做的方式是使用变量:

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

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

它不是很好,但它确实有效。

答案 2 :(得分:5)

您最好的选择是创建一个CLR函数来支持聚合。有几个现有的解决方案: