SQL: Union of polygons

后端 未结 4 1275
一向
一向 2021-01-06 07:36

I have a table with a single column of geometry type, containing polygons. How do I get the union of all the polygons in the table?

相关标签:
4条回答
  • 2021-01-06 08:05

    In SQL Server 2012:

    SELECT geometry::UnionAggregate(geomcolumn) FROM YourTable;
    

    In SQL Server 2008/R2:

    DECLARE @g = geometry::STGeomFromText('GEOMETRYCOLLECTION EMPTY', YourSRID);
    SELECT @g = @g.STUnion(geomcolum) FROM YourTable;
    
    0 讨论(0)
  • 2021-01-06 08:10

    This worked for me:

    CREATE TABLE #g (i INT IDENTITY, a geometry)
    INSERT INTO #g (a)
    VALUES
        (geometry::STGeomFromText(
            'POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))', 0)
        ),
        (geometry::STGeomFromText(
            'POLYGON((5 2, 7 2, 7 0, 5 0, 5 2))', 0)
        )
    
    DECLARE @g geometry
    SELECT TOP 1 @g = a FROM [#g]
    SELECT @g = @g.STUnion(a) FROM #g
    
    SELECT @g
    

    So, apparently, the STUnion method returns null when either the instance on which it's being called or the operand is null, hence the select top 1 hack.

    0 讨论(0)
  • 2021-01-06 08:13

    SELECT DISTINCT geometry from [your table] ?

    0 讨论(0)
  • 2021-01-06 08:15

    you mean, if you have 2 squares, lets say

    (0 0 , 1 0 , 0 1 , 1 1) 
    

    and

    (1 0 , 1 1 , 2 0 , 2 1)
    

    you end up with a rectangle:

    (0 0, 2 0 ,0 1, 2 1)
    

    if yes, try the GPC (General Polygon Clipper library)

    This link may also help you

    0 讨论(0)
提交回复
热议问题