Condividi tramite


MultiPolygon

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure endpoint di analisi SQL in Microsoft Fabric Warehouse nel database SQL di Microsoft Fabric in Microsoft Fabric

Un'istanza MultiPolygon è una raccolta di zero o più istanze Polygon .

Istanze Polygon

Nella figura seguente vengono illustrati esempi di istanze MultiPolygon .

Diagramma di esempi di istanze Geometry MultiPolygon.

Come indicato nell'illustrazione:

  • La figura 1 rappresenta un'istanza MultiPolygon con due elementi Polygon . Il limite è definito dai due anelli esterni e dai tre anelli interni.

  • La figura 2 rappresenta un'istanza MultiPolygon con due elementi Polygon . Il limite è definito dai due anelli esterni e dai tre anelli interni. I due elementi Polygon si intersecano in un punto di tangenza.

Istanze accettate

Viene accettata un'istanza MultiPolygon se viene soddisfatta una delle condizioni indicate di seguito.

  • È un'istanza MultiPolygon vuota.

  • Tutte le istanze che comprendono l'istanza MultiPolygon sono istanze Polygon accettate. Per altre informazioni sulle istanze Polygon accettate, vedere Polygon.

Negli esempi seguenti vengono illustrate alcune istanze MultiPolygon accettate.

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)))';  

Nell'esempio seguente viene illustrata un'istanza MultiPolygon che genererà un'eccezione System.FormatException.

DECLARE @g geometry = 'MULTIPOLYGON(((1 1, 1 -1, -1 -1, -1 1, 1 1)),((1 1, 3 1, 3 3)))';  

La seconda istanza in MultiPolygon è un'istanza di LineString e non un'istanza Polygon accettata.

Istanze valide

Un'istanza MultiPolygon è valida se è un'istanza MultiPolygon vuota o se soddisfa i criteri indicati di seguito.

  1. Tutte le istanze che comprendono l'istanza MultiPolygon sono istanze Polygon valide. Per le istanze Polygon valide, vedere Polygon.

  2. Nessuna delle istanze Polygon che compongono l'istanza MultiPolygon si sovrappone.

Nell'esempio seguente sono indicate due istanze MultiPolygon valide e un'istanza MultiPolygon non valida.

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 è valida perché le due istanze Polygon si toccano solo in corrispondenza di un punto tangente. @g3 non è valida perché gli interni delle due istanze Polygon si sovrappongono.

Esempi

Esempio A.

L'esempio seguente illustra la creazione di un'istanza geometry MultiPolygon e viene restituito il Well-Known Text (WKT) del secondo 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();  

Esempio B.

In questo esempio viene creata un'istanza MultiPolygon vuota.

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