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

Rei*_*ica 11 sql spatial sql-server-2008

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

我正在尝试将Postgres中的一些空间数据与PostGIS一起移动到SQL Server 2008.直到我看到这样的语句之后才好了:

SELECT GeomUnion(the_geom) FROM some_table
Run Code Online (Sandbox Code Playgroud)

这个联合该列中的所有几何体并将其作为一个结果返回(类似于COUNT工作方式).据我所知,SQL Server只具有将STUnion一个几何与另一个几何结合的功能.有没有办法做类似于Postgres的方式?

如果它有帮助,该STUnion功能的工作方式如下:

SELECT first_geometry_column.STUnion(second_geometry_column) FROM some_table
Run Code Online (Sandbox Code Playgroud)

npo*_*lli 10

UnionAggregate函数只是SQL2012吗?

SELECT geography::UnionAggregate( geometry ) FROM some_table
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢你的信息。节省了很多时间!仅供参考:对于几何数据,它是 geometry::UnionAggregate(geometry)。 (2认同)

Rei*_*ica 9

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

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

SELECT @Shape = @Shape.STUnion(Shape)
  FROM MyShapeTable
Run Code Online (Sandbox Code Playgroud)

它不是很好,但它的工作原理.

  • 对于少数几何形状而言,它实际上*非常昂贵. (3认同)

Gor*_*ran 5

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