MultiPolygon
Uma instância MultiPolygon é uma coleção de zero ou mais instâncias Polygon.
Instâncias MultiPolygon
A ilustração a seguir mostra exemplos de instâncias MultiPolygon.
Conforme mostrado na ilustração:
A Figura 1 é uma instância MultiPolygon com dois elementos Polygon. O limite é definido pelos dois anéis exteriores e os três anéis interiores.
A Figura 2 é uma instância MultiPolygon com dois elementos Polygon. O limite é definido pelos dois anéis exteriores e os três anéis interiores. Os dois elementos Polygon cruzam em um ponto de tangente.
Instâncias aceitas
Uma instância MultiPolygon é aceita quando uma das condições a seguir é atendida.
Ela é uma instância MultiPolygon vazia
Todas as instâncias que integram a instância MultiPolygon são instâncias Polygon aceitas. Para obter mais informações sobre instâncias Polygon aceitas, consulte Polígono.
Os exemplos a seguir mostram instâncias MultiPolygon aceitas.
DECLARE @g1 geometry = 'MULTIPOLYGON EMPTY';
DECLARE @g2 geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3, 1 3, 1 1)))';
DECLARE @g3 geometry = 'MULTIPOLYGON(((2 2, 2 -2, -2 -2, -2 2, 2 2)),((1 1, 3 1, 3 3, 1 3, 1 1)))';
O exemplo a seguir mostra uma instância MultiPolygon que gera um System.FormatException.
DECLARE @g geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3)))';
A segunda instância na MultiPolygon é uma instância LineString e não uma instância Polygon aceita.
Instâncias válidas
Uma instância MultiPolygon será válida se for uma instância MultiPolygon vazia ou se atender aos critérios a seguir.
Todas as instâncias que integram a instância MultiPolygon são instâncias Polygon válidas. Para obter instâncias Polygon válidas, consulte Polígono.
Nenhuma das instâncias Polygon que integram a instância MultiPolygon são sobrepostas.
O exemplo a seguir mostra duas instâncias MultiPolygon válidas e uma instância MultiPolygon inválida.
DECLARE @g1 geometry = 'MULTIPOLYGON EMPTY';
DECLARE @g2 geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3, 1 3, 1 1)))';
DECLARE @g3 geometry = 'MULTIPOLYGON(((2 2, 2 -2, -2 -2, -2 2, 2 2)),((1 1, 3 1, 3 3, 1 3, 1 1)))';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid();
@g2 é válido porque as duas instâncias Polygon se cruzam apenas em um ponto tangente. @g3 não é válido porque os interiores das duas instâncias Polygon se sobrepõem.
Exemplos
O exemplo a seguir mostra a criação de uma instância geometryMultiPolygon e retorna o WKT (Well-Known Text) do segundo componente.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTIPOLYGON(((0 0, 0 3, 3 3, 3 0, 0 0), (1 1, 1 2, 2 1, 1 1)), ((9 9, 9 10, 10 9, 9 9)))');
SELECT @g.STGeometryN(2).STAsText();
Este exemplo cria uma instância MultiPolygon vazia.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTIPOLYGON EMPTY');