MultiPolygon
Un'istanza MultiPolygon è una raccolta di zero o più istanze Polygon.
Istanze Polygon
Nell'illustrazione seguente vengono indicati esempi di istanze MultiPolygon.
Come indicato nell'illustrazione:
Nella figura 1 viene rappresentata un'istanza MultiPolygon con due elementi Polygon. Il limite è definito dai due anelli esterni e dai tre anelli interni.
Nella figura 2 viene rappresentata 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 ulteriori 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.
Tutte le istanze che comprendono l'istanza MultiPolygon sono istanze Polygon valide. Per le istanze Polygon valide, vedere Polygon.
Nessuna delle istanze Polygon che comprendono l'istanza MultiPolygon si sovrappone.
Nell'esempio seguente vengono indicate due istanze MultiPolygon valide e un'istanza MultiPolygon 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 di Polygon si toccano solo in corrispondenza di un punto tangente. @g3 non è valida perché gli interni delle due istanze di Polygon si sovrappongono.
Esempi
Nell'esempio seguente viene mostrata la creazione di un'istanza geometry MultiPolygon e 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();
In questo esempio viene creata un'istanza MultiPolygon vuota.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTIPOLYGON EMPTY');
Vedere anche
Riferimento
STArea (tipo di dati geometry)
STCentroid (tipo di dati geometry)
STPointOnSurface (tipo di dati geometry)