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: