Unión toda la geometry en una tabla de SQL Server como GeomUnion en Postgres

Solo para aclarar desde el principio: estoy hablando de geometry de unión, no de la palabra key SQL UNION .

Estoy tratando de mover algunos datos espaciales de Postgres con PostGIS a SQL Server 2008. Estuvo bien hasta que vi una statement como esta:

 SELECT GeomUnion(the_geom) FROM some_table 

Esto une toda la geometry en esa columna y la devuelve como un resultado (similar a cómo funciona COUNT ). Hasta donde sé, SQL Server solo tiene la function STUnion , que STUnion una geometry con otra. ¿Hay alguna manera de hacer algo similar a la forma de Postgres?

Si ayuda, la function STUnion funciona así:

 SELECT first_geometry_column.STUnion(second_geometry_column) FROM some_table 

La forma en que terminé haciendo esto es con variables:

 DECLARE @Shape GEOMETRY SET @Shape = GEOMETRY::STGeomFromText('GEOMETRYCOLLECTION EMPTY', @MySrid) SELECT @Shape = @Shape.STUnion(Shape) FROM MyShapeTable 

No es tan lindo, pero funciona.

¿La function UnionAggregate es SQL2012 solamente?

 SELECT geography::UnionAggregate( geometry ) FROM some_table 

Hmm, supongo que sí. http://technet.microsoft.com/en-us/library/ff929095.aspx

Su mejor opción es crear una function CLR para admitir el agregado. Hay un par de soluciones existentes:

  • Herramientas espaciales Sql
  • Agregado de Spatail
    Intereting Posts