Partilhar via


MultiPolygon

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de dados SQL no Microsoft Fabric

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

Instâncias de polígonos

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

Diagrama de exemplos de instâncias de geometria MultiPolygon.

Como mostra a ilustração:

  • A Figura 1 é uma ocorrência de MultiPolygon com dois elementos Polygon . O limite é definido pelos dois anéis exteriores e pelos três anéis interiores.

  • A Figura 2 é uma ocorrência de MultiPolygon com dois elementos Polygon . O limite é definido pelos dois anéis exteriores e pelos três anéis interiores. Os dois elementos do Polígono se cruzam em um ponto tangente.

Instâncias aceitadas

Uma instância MultiPolygon é aceita, uma das seguintes condições é atendida.

  • É uma instância vazia do MultiPolygon .

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

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 lançará uma exceção 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 LineString e não uma instância Polygon aceita.

Instâncias válidas

Uma instância MultiPolygon é válida se for uma instância MultiPolygon vazia ou se atender aos seguintes critérios.

  1. Todas as instâncias que compõem a instância MultiPolygon são instâncias válidas do Polygon . Para instâncias válidas de Polígono , consulte Polígono.

  2. Nenhuma das instâncias Polygon que compõem a instância MultiPolygon se sobrepõe.

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 do Polígono tocam apenas em um ponto tangente. @g3 não é válido porque os interiores das duas instâncias do Polígono se sobrepõem.

Examples

Exemplo A.

O exemplo a seguir mostra a criação de uma instância geometry MultiPolygon e retorna o texto Conhecido-Bem (WKT) 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 instancia uma instância vazia MultiPolygon .

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