Delen via


MultiPolygon

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Een MultiPolygon-exemplaar is een verzameling van nul of meer Polygoon-exemplaren .

Veelhoekexemplaren

In de onderstaande afbeelding ziet u voorbeelden van MultiPolygon-exemplaren .

Diagram van voorbeelden van geometrie MultiPolygon-instanties.

Zoals wordt weergegeven in de afbeelding:

  • Afbeelding 1 is een multipolygon-exemplaar met twee polygoonelementen . De grens wordt gedefinieerd door de twee buitenringen en de drie binnenste ringen.

  • Afbeelding 2 is een multipolygon-exemplaar met twee polygoonelementen . De grens wordt gedefinieerd door de twee buitenringen en de drie binnenste ringen. De twee polygoonelementen snijden elkaar op een tangenspunt.

Geaccepteerde gevallen

Een MultiPolygon-exemplaar wordt geaccepteerd als aan een van de volgende voorwaarden wordt voldaan.

  • Het is een leeg MultiPolygon-exemplaar .

  • Alle instanties die deel uitmaken van de MultiPolygon-instantie zijn geaccepteerde Polygon-instanties. Zie Polygon voor meer informatie over geaccepteerde exemplaren van Polygon.

In de volgende voorbeelden ziet u geaccepteerde MultiPolygon-exemplaren .

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

In het volgende voorbeeld ziet u een MultiPolygon-instantie die een System.FormatException zal genereren.

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

Het tweede instantie in de MultiPolygon is een LineString-instantie en geen geaccepteerde polygooninstantie.

Geldige exemplaren

Een MultiPolygon-exemplaar is geldig als het een leeg MultiPolygon-exemplaar is of voldoet aan de volgende criteria.

  1. Alle exemplaren die de MultiPolygon-instantie omvatten, zijn geldige Polygon-exemplaren . Zie Veelhoek voor geldige veelhoekexemplaren.

  2. Geen van de Polygon-instanties die de MultiPolygon-instantie vormen overlappen elkaar.

In het volgende voorbeeld ziet u twee geldige MultiPolygon-exemplaren en één ongeldig multipolygon-exemplaar .

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 is geldig omdat de twee Polygon objecten alleen op een raakpunt raken. @g3 is ongeldig omdat de binnenkanten van de twee polygoonexemplaren elkaar overlappen.

Examples

Voorbeeld A.

Het volgende voorbeeld laat zien hoe een geometry MultiPolygon instantie wordt gemaakt en retourneert de Well-Known Text (WKT) van het tweede onderdeel.

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

Voorbeeld B.

In dit voorbeeld wordt een leeg MultiPolygon exemplaar geïnstitueert.

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