Объединение всей геометрии в таблице SQL Server, такой как GeomUnion в Postgres - PullRequest
11 голосов
/ 20 июля 2010

Просто для пояснения: я говорю о объединении геометрии, а не о ключевом слове 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 ]

10 голосов
/ 18 февраля 2014

Функция UnionAggregate только для SQL2012?

SELECT geography::UnionAggregate( geometry ) FROM some_table

Хм, думаю, так. http://technet.microsoft.com/en-us/library/ff929095.aspx

9 голосов
/ 12 августа 2010

То, как я это сделал, с переменными:

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

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

Это не так хорошо, но работает.

5 голосов
/ 05 марта 2011

Лучший вариант - создать функцию CLR для поддержки агрегата. Существует несколько существующих решений:

...