Compartilhar via


MultiPolygon

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric Banco de dados SQL no Microsoft Fabric

Uma instância MultiPolygon é uma coleção de zero ou mais instâncias Polygon .

Instâncias de polígono

A ilustração a seguir mostra exemplos de instâncias MultiPolygon .

Diagrama de exemplos de instâncias de geometria 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 de MultiPolygon é aceita quando uma das condições a seguir é atendida.

  • Ela é uma instância MultiPolygon vazia.

  • Todas as instâncias que englobam a instância de MultiPolygon são instâncias de Polygon aceitas. Para obter mais informações sobre instâncias de Polygon aceitas, consulte Polygon.

Os exemplos a seguir mostram as instâncias de 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 de MultiPolygon que emitirá 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 no MultiPolygon é uma instância de LineString e não uma instância de Polygon aceita.

Instâncias válidas

Uma instância de MultiPolygon será válida se for uma instância de MultiPolygon vazia ou se atender aos critérios a seguir.

  1. Todas as instâncias que englobam a instância de MultiPolygon são instâncias de Polygon válidas. Para instâncias de Polygon válidas, consulte Polygon.

  2. Nenhuma das instâncias de Polygon que englobam a sobreposição da instância de MultiPolygon .

O exemplo a seguir mostra duas instâncias de MultiPolygon válidas e uma instância de 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 tocam somente em um ponto tangente. @g3 não é válido porque os interiores das duas instâncias de Polygon sobrepõem-se.

Exemplos

Exemplo A.

O exemplo a seguir mostra a criação de uma instância de geometry MultiPolygon 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();  

Exemplo B.

Este exemplo cria uma instância MultiPolygon vazia.

DECLARE @g geometry;  
SET @g = geometry::Parse('MULTIPOLYGON EMPTY');