Freigeben über


MultiPolygon

Eine MultiPolygon-Instanz ist eine Sammlung von null oder mehr Polygon-Instanzen.

MultiPolygon-Instanzen

Die nachfolgende Abbildung enthält Beispiele für MultiPolygon-Instanzen.

Beispiele von Geometrie-MultiPolygon-Instanzen

Folgendes wird dargestellt:

  • Abbildung 1 zeigt eine MultiPolygon-Instanz mit zwei Polygon-Elementen. Die Begrenzung wird durch die beiden äußeren Ringe und die drei inneren Ringen definiert.

  • Abbildung 2 zeigt eine MultiPolygon-Instanz mit zwei Polygon-Elementen. Die Begrenzung wird durch die beiden äußeren Ringe und die drei inneren Ringen definiert. Die beiden Polygon-Elemente überschneiden sich an einem Tangentenpunkt.

Akzeptierte Instanzen

Eine MultiPolygon-Instanz wird akzeptiert, wenn eine der folgenden Bedingungen erfüllt ist.

  • Es handelt sich um eine leere MultiPolygon-Instanz.

  • Alle Instanzen, die die MultiPolygon-Instanz umfassen, sind akzeptierte Polygon-Instanzen. Weitere Informationen zu akzeptierten Polygon-Instanzen finden Sie unter Polygon.

In den folgenden Beispielen werden akzeptierte MultiPolygon-Instanzen gezeigt.

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

Im folgenden Beispiel wird eine MultiPolygon-Instanz dargestellt, die eine System.FormatException auslösen wird.

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

Bei der zweiten Instanz in der MultiPolygon-Instanz handelt es sich um eine LineString-Instanz, und nicht um eine akzeptierte Polygon-Instanz.

Gültige Instanzen

Eine MultiPolygon-Instanz ist gültig, wenn es sich um eine leere MultiPolygon-Instanz handelt oder wenn sie die folgenden Kriterien erfüllt.

  1. Alle Instanzen, die die MultiPolygon-Instanz umfassen, sind gültige Polygon-Instanzen. Informationen zu gültigen Polygon-Instanzen finden Sie unter Polygon.

  2. Die Polygon-Instanzen, die die MultiPolygon-Instanz umfassen, überschneiden sich nicht.

Im folgenden Beispiel werden zwei gültige MultiPolygon-Instanzen und eine ungültige MultiPolygon-Instanz gezeigt.

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 ist gültig, da sich die zwei Polygon-Instanzen nur an einem Tangentenpunkt berühren. @g3 ist ungültig, da die Innenbereiche der zwei Polygon-Instanzen einander überlappen.

Beispiele

Im folgenden Beispiel wird die Erstellung einer geometryMultiPolygon-Instanz veranschaulicht und das WKT-Format (Well-Known Text) der zweiten Komponente zurückgegeben.

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 diesem Beispiel wird eine leere MultiPolygon-Instanz instantiiert.

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