MultiPolygon

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

En MultiPolygon-instans är en samling med noll eller fler Polygon-instanser .

Polygoninstanser

Bilden nedan visar exempel på MultiPolygon-instanser .

Diagram över exempel på geometri multipolygoninstanser.

Som du ser i bilden:

  • Bild 1 är en MultiPolygon-instans med två Polygon-element . Gränsen definieras av de två yttre ringarna och de tre inre ringarna.

  • Bild 2 är en MultiPolygon-instans med två Polygon-element . Gränsen definieras av de två yttre ringarna och de tre inre ringarna. De två polygonelementen korsar varandra vid en tangenspunkt.

Godkända instanser

En MultiPolygon-instans accepteras, om något av följande villkor uppfylls.

  • Det är en tom MultiPolygon-instans .

  • Alla instanser som består av MultiPolygon-instansen accepteras polygoninstanser . Mer information om accepterade Polygon-instanser finns i Polygon.

I följande exempel visas accepterade MultiPolygon-instanser .

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

I följande exempel visas en MultiPolygon-instans som genererar en System.FormatException.

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

Den andra instansen i MultiPolygon är en LineString-instans och inte en accepterad Polygon-instans.

Giltiga instanser

En MultiPolygon-instans är giltig om den är en tom MultiPolygon-instans eller om den uppfyller följande villkor.

  1. Alla instanser som består av MultiPolygon-instansen är giltiga Polygon-instanser . Giltiga Polygon-instanser finns i Polygon.

  2. Ingen av polygoninstanserna som består av MultiPolygon-instansen överlappar varandra.

I följande exempel visas två giltiga MultiPolygon-instanser och en ogiltig MultiPolygon-instans .

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 är giltig eftersom de två Polygon-instanserna endast rör vid en tangentpunkt. @g3 är inte giltigt eftersom interiörer i de två Polygon-instanserna överlappar varandra.

Examples

Exempel A.

I följande exempel visas hur man skapar en geometry MultiPolygon-instans och returnerar Well-Known Text (WKT) för den andra komponenten.

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

Exempel B.

Det här exemplet instansierar en tom MultiPolygon instans.

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