GeometryCollection
Uma GeometryCollection é uma coleção de zero ou mais instâncias de geometry ou de geography.
Instâncias GeometryCollection
Instâncias aceitas
Para uma instância de GeometryCollection ser aceita, ela dever ser uma instância de GeometryCollection vazia ou todas as instâncias que integram a instância de GeometryCollection devem ser instâncias aceitas. O exemplo a seguir mostra instâncias aceitas.
DECLARE @g1 geometry = 'GEOMETRYCOLLECTION EMPTY';
DECLARE @g2 geometry = 'GEOMETRYCOLLECTION(LINESTRING EMPTY,POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';
DECLARE @g3 geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1, 3 5),POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';
O exemplo a seguir gera uma System.FormatException porque a instância de LinesString na instância de GeometryCollection não é aceita.
DECLARE @g geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1), POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';
Instâncias válidas
A instância de GeometryCollection será válida quando todas as instâncias que integram a instância de GeometryCollection forem válidas. O exemplo a seguir mostra três instâncias de GeometryCollection válidas e uma instância que não é válida.
DECLARE @g1 geometry = 'GEOMETRYCOLLECTION EMPTY';
DECLARE @g2 geometry = 'GEOMETRYCOLLECTION(LINESTRING EMPTY,POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';
DECLARE @g3 geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1, 3 5),POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';
DECLARE @g4 geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1, 3 5),POLYGON((-1 -1, 1 -5, -5 5, -5 -1, -1 -1)))';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(), @g4.STIsValid();
@g4 não é válida porque a instância de Polygon na instância de GeometryCollection não é válida.
Para obter mais informações sobre instâncias válidas e aceitas, consulte Ponto, MultiPoint, LineString, MultiLineString, Polígono, e MultiPolygon.
Exemplos
O exemplo a seguir cria uma instância de geometryGeometryCollection com valores Z no SRID 1 contendo uma instância de Point e uma instância de Polygon.
DECLARE @g geometry;
SET @g = geometry::STGeomCollFromText('GEOMETRYCOLLECTION(POINT(3 3 1), POLYGON((0 0 2, 1 10 3, 1 0 4, 0 0 2)))', 1);
Consulte também